Ad Widget

Collapse

Вопрос по базе данным

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • mschedrin
    Senior Member
    • Jun 2009
    • 179

    #16
    Сейчас у меня
    innodb buffer pool size 8,388,608, т.е. всего 8М.
    Увеличивать не пробовал. Поможет?

    Comment

    • dotneft
      Senior Member
      • Nov 2008
      • 699

      #17
      попробуйте партиционирование

      http://habrahabr.ru/blogs/webdev/66151/

      но для начала воспользуйтесь твикерами MySQL (mysqltuner and etc) + почитайте документацию по оптимизации БД MySQL
      Last edited by dotneft; 20-11-2009, 19:00.

      Comment

      • den_crane
        Senior Member
        • Feb 2006
        • 272

        #18
        Originally posted by mschedrin
        Сейчас у меня
        innodb buffer pool size 8,388,608, т.е. всего 8М.
        Увеличивать не пробовал. Поможет?
        конечно, начните с 400М

        Comment

        • mschedrin
          Senior Member
          • Jun 2009
          • 179

          #19
          Спасибо за совет. Очень большой прирост дал этот параметр.

          Comment

          • den_crane
            Senior Member
            • Feb 2006
            • 272

            #20
            Originally posted by mschedrin
            Спасибо за совет. Очень большой прирост дал этот параметр.
            двигло innodb (в отличии от myisam), не использует системный кеш фс, а создает собственный буфер (как нормальные энтерпрайз субд), что логично потому что субд лучше знает что как надо кешировать.
            За размер этого буфера и отвечает параметр innodb_buffer_pool_size.
            В обычных субд туда стараются отдать всю свободную память, т.е. ~70% RAM.

            Comment

            • den_crane
              Senior Member
              • Feb 2006
              • 272

              #21
              В принципе можно довести уровень кеширования до 99.90%, увеличивая размер, буфера и остановится.

              у меня:
              mysql> show status like 'Innodb_buffer_pool_read_requests';
              | Innodb_buffer_pool_read_requests | 2391577516 |

              mysql> show status like 'Innodb_buffer_pool_reads';
              | Innodb_buffer_pool_reads | 324308 |

              (1-324308/2391577516)*100=99,986%

              Innodb_buffer_pool_read_requests Количество последовательных запросов на чтение, выполненных InnoDB.
              Innodb_buffer_pool_reads Количество последовательных запросов на чтение, которые InnoDB не смог выполнить из буферного пула и использовал постраничное чтение.
              Last edited by den_crane; 23-11-2009, 13:38.

              Comment

              • ugh
                Senior Member
                • Jun 2009
                • 296

                #22
                проверьте еще раз
                очень врятли, что у вас тормоза из-за инсерта в хистори

                Comment

                • Andrey_79
                  Senior Member
                  • Sep 2008
                  • 173

                  #23
                  У меня история такая. mysql 5.0.77 установился без файла my.cnf. Почитав документацию, создал этот файл и скопировал его в etc вписал в него innodb_buffer_pool_size = 400M (по умолчанию был 8М), перезапустил mysql. mysql перестал понимать таблицы innodb. Удалил my.cnf, пезапустил mysql, теперь выдает ошибку база повреждена и читать ее содержимое отказывается. Попытался откатить данные, но из-за большого количества записей в таблице history, процесс оказался очень долгим за 8 часов не восстановилась система. Пошел другим путем, удалил индекс history_uint_1, база откатилась за 2 часа. Данные вроде все наместе, по snmp данные снимаются , по icmp почему то нет (ошибка на странице триггеры Zabbix was down). Попітался создать индекс history_uint_1, двое суток индексировалось так процесс и не был закончен. У меня идеи закончились как восстановить систему. Какие будут ваши рекомендации и советы?

                  Comment

                  • mschedrin
                    Senior Member
                    • Jun 2009
                    • 179

                    #24
                    Если размер этого кэша будет больше чем размер всей этой базы, можно рассчитывать, что она скешируется полностью?

                    Comment

                    • den_crane
                      Senior Member
                      • Feb 2006
                      • 272

                      #25
                      Originally posted by Andrey_79
                      mysql перестал понимать таблицы innodb.
                      а это как? Сообщение об ошибке было или что?

                      Я слабо разбираюсь в mysql.

                      Comment

                      • den_crane
                        Senior Member
                        • Feb 2006
                        • 272

                        #26
                        Originally posted by mschedrin
                        Если размер этого кэша будет больше чем размер всей этой базы, можно рассчитывать, что она скешируется полностью?
                        Скешируется. Только зачем? Т.е. работать будет возможно медленнее чем рамдиск, потому что запись будет идти на обычный диск. А операций записи в журнал транзакции бд ждет обычно (зависит от параметра innodb_flush_log_at_trx_commit)


                        Основы оптимизации производительности InnoDB http://boombick.org/blog/posts/11
                        Last edited by den_crane; 23-11-2009, 16:04.

                        Comment

                        • costas
                          Senior Member
                          • Aug 2009
                          • 201

                          #27
                          Originally posted by Andrey_79
                          У меня история такая. mysql 5.0.77 установился без файла my.cnf. Почитав документацию, создал этот файл и скопировал его в etc вписал в него innodb_buffer_pool_size = 400M (по умолчанию был 8М), перезапустил mysql. mysql перестал понимать таблицы innodb.
                          Обычное так сказать явление, если Вы посмотрите на состояние движка InnoDB, то увидите, что он имеет статус Disable, если внимательно почитаете лог файл то найдёте там запись о том что InnoDB вывалился крашингом, это проблема характерна для некоторых версий MySQL (точнее сказать для многих начиная с версий 4.х.х), если возмьёте дефолтный конфиг для MyISAM то всё стартанёт в нормальном режиме без крашингов, как только начнёте тюнить InnoDB сразу получите плюху в виде неработающего InnoDB. Лечится это дело путём смены версии MySQL (для 5.х вроде с версии 5.1.17 начали фиксить, точно не скажу) или наложить патчики на текущую..

                          З.Ы. бага характерна для 32-х битных систем, я её словил на CentOS-5.3 x86 и на x86_64 в дистрибутивной версии мускуля...
                          Last edited by costas; 24-11-2009, 07:52.
                          CentOS-5.5 i386, Zabbix 1.8.4 (stable), MySQL 5.0.92, PHP 5.2.17 (cli)

                          ...эта проверка бесполезная, вредная, и она зло.

                          Comment

                          • Andrey_79
                            Senior Member
                            • Sep 2008
                            • 173

                            #28
                            Originally posted by costas
                            если возмьёте дефолтный конфиг для MyISAM то всё стартанёт в нормальном режиме без крашингов...
                            У меня в том проблема, что я вернул настройки назад, а база не заработала. Выдает ошибки на все таблицы: Ошибка при выполнении sql запроса (1146). Ответ от сервера Table 'xxxxx.xxx' doesn't exist.

                            Comment

                            Working...