Читал что ISAM быстрее InnoDB, но в последнем используется механизм транзакций, то есть при работе с базой блокируется не вся таблица (как в myisam) а только нужная строка, поэтому возможны параллельный обращения и это очень выгодно для таблиц к записям которых обращаются очень часто.
Хочу услышать советы, на примере обычного новостного сайта или блога - 1-2 редактора и комментирующие пользователи:
-стоит ли перевести некоторые таблицы в InnoDB для оптимизации?
-какие именно таблицы нужно менять (где часто происходит выборка, удаление, апдейты и т.д.)?
-есть ли смысл при небольшой нагруженности сайта? отсюда же следует еще один - после какого порога посетителей использование innoDB будет оправданным? ведь при паралельном использовании, я думаю, помимо скорости таки должна увеличиться и нагрузка...
еще где-то видел фразу что нужно переводить таблицы, которые используют "Накладные расходы" - не очень понимаю что это такое, и правда ли это?
Комментарии
Если нагруженность небольшая и вы не испытываете проблем с блокировками таблиц, то зачем переводить?
я пока и нагруженности не испытываю... сайта еще нет.
я на будущее - люблю делать наверняка, да и знания пригодятся. давайте не будет переводить тему во флейм
-стоит ли перевести некоторые таблицы в InnoDB для оптимизации?
Стоит
-какие именно таблицы нужно менять (где часто происходит выборка, удаление, апдейты и т.д.)?
Таблицы модуля статистики, КЕШевые таблицы, session. Зависит от вашей конфигурации модулей.
-есть ли смысл при небольшой нагруженности сайта? отсюда же следует еще один - после какого порога посетителей использование innoDB будет оправданным? ведь при паралельном использовании, я думаю, помимо скорости таки должна увеличиться и нагрузка...
При небольшой не имеет. Порог посетителей, тот после которого мускуль начинает испытывать проблемы с блокировками, если вы на виртуальном хостинге, то врядли у вас будет эта информация
В общем случае использование InnoDB выгоднее там, где происходит интенсивное обновление таблиц.
найдите как в вашем инструменте для работы с БД смотреть статистику блокировок таблиц.
В mysql это можно сделать следующей командой
SHOW STATUS LIKE 'Table%'
в выводе вы увидите Table_locks_immediate - в скольких случаях блокировка была получена немедленно
и
Table_locks_waited - когда сервер ожидал прежде чем выдать блокировку.
где то ходил скрипт, который для тех кто не хочет вникать в детали - подсказывал стоит или не стоит думать о смене типа. кажется tune_mysql назывался или как то так.
В наших проектах мы ВСЕГДА ставим innodDb на таблицы session и watchdog
при активном комьюнити еще и на users
и если вы используете друпал-модули статистики то и на их таблицы так же.
В остальных случаях, мы собираем статистику обновлений БД и уже принимаем решение.
Часто, comments, node, term_node постигает та же участь.
Table_locks_immediate и Table_locks_waited показывает и в самом друпале.
скажите, как можно просмотреть, каким именно таблицам пришлось ожидать прежде чем принять блокировку?
или как вывести информацию по отдельным таблицам, сколько было блокировок и сколько пришлось ожидать.
так же интересно, статистика по lock immediate и waited за какой промежуток времени выводится в друпале?
нашел полезные тесты для оптимизации базы данных: http://www.day32.com/MySQL/ и прошу прощения, если ответы на мои вопросы будут в результатах последних, я еще не проверял..
Demimurych скрипт случайно не на Perl, помните?
mysql tuner называется, на perl. http://mysqltuner.pl/mysqltuner.pl
Те, переменные которые показывает друпал, могут быть не совсем верные, например на хостинге hc.ru эти переменные показывали среднюю температуру по больнице, а не конкретно по БД. Так что всё зависит от настроек хостера
запустил мускультюнер еле запустил, доселе не знал что такое перл... на денвере не хотел запускаться как не шаманил, на хостинге через ssh пошло... толком ничего не дало, везде ОК или восклицалки, рекомендует в основном оптимизировать кеш и другие настройки...
но все же хочется узнать, как самому проследить какие таблицы блокируются сразу и становятся в очередь, как это сделать, кто поможет?
кэшак как раз и не стоит. а вот сессии это да. они первые грохаются
на д.орге пишут что сессии сильно тормозят на innodb + тормозит при count и limit а еще, не будет проблем с базой при работе в миксе? иино+исам, как насчет бекапов?
вообще как почитал кажись у innodb минусов гораздо больше чем плюсов
Типы таблиц MySQL
subscribe!
у меня перевели все на innoDB
ибо вчера все залочилось
на myisame табла бывает вообще саморазрушается. и блокируется вся табла при большом количесве записи сайт будет тормоз тормозом изза этой таблы и логов