Базы данных InnoDB vs MyISAM
Наш опыт подсказывает, что лучше использовать таблицы InnoDB. Таблицы MyISAM часто блокируются при нагруженном одновременном чтении и записи. Ну если на сайт Joomla одновременно зашли примерно 1000 пользователей, то ситуация выглядит так:
Вывод mytop:
Была попытка одновременного удаления строк из таблицы с сессиями и чтения записей. Такое происходит нечасто, но бывает.
Можно обратить внимание, что запросы исполняются уже 146980 секунд, что препятствует нормальной работе сайта. Если бы таблица jos_session была не MyISAM, а InnoDB, такого бы не произошло. Сменить тип таблиц Вы можете сделав экспорт дампа базы и произвести замену с помощью Notepad++, либо обратившись в нашу техническую поддержку — мы конвертируем таблицу MyISAM в InnoDB самостоятельно, после чего сайт заработает без проблем.
Вывод mytop:
Id User Host db Command Time State Info Progress
108751 user_main localhost user_j15 Query 146980 closing tables SELECT * FROM jos_session WHERE session_id = 'dfeodu7tv41tbgg4pts44s2kk6' 0.000
108753 user_main localhost user_j15 Query 146980 updating DELETE FROM jos_session WHERE ( time < '1405526121' ) 0.000
108774 user_main localhost user_j15 Query 146978 Waiting for table level lock SELECT * FROM jos_session WHERE session_id = 'g2j9kt3stbtkg75tct5r2dvkb6' 0.000
108829 user_main localhost user_j15 Query 146977 Waiting for table level lock SELECT * FROM jos_session WHERE session_id = 'et6833daba2v5t6hptk4e72jr4' 0.000
108834 user_main localhost user_j15 Query 146976 Waiting for table level lock SELECT * FROM jos_session WHERE session_id = 'r35kp3balnt1kt9qnrdclf1k30' 0.000
108930 user_main localhost user_j15 Query 146975 Waiting for table level lock SELECT * FROM jos_session WHERE session_id = '8fssht7k44uiq5kdellgtfe6o7' 0.000
108936 user_main localhost user_j15 Query 146969 Waiting for table level lock SELECT * FROM jos_session WHERE session_id = 'qfvubpisihl1p10k3gkd6tg1v4' 0.000
109030 user_main localhost user_j15 Query 146964 Waiting for table level lock SELECT * FROM jos_session WHERE session_id = '250oati4c74eac3fth5lcpf696' 0.000
109038 user_main localhost user_j15 Query 146964 Waiting for table level lock SELECT * FROM jos_session WHERE session_id = 'f910sn4upaijefoehb546b66h7' 0.000
109121 user_main localhost user_j15 Query 146959 Waiting for table level lock SELECT * FROM jos_session WHERE session_id = 'mo6c9pg63l7m693bpeomas7j60' 0.000
Была попытка одновременного удаления строк из таблицы с сессиями и чтения записей. Такое происходит нечасто, но бывает.
Можно обратить внимание, что запросы исполняются уже 146980 секунд, что препятствует нормальной работе сайта. Если бы таблица jos_session была не MyISAM, а InnoDB, такого бы не произошло. Сменить тип таблиц Вы можете сделав экспорт дампа базы и произвести замену с помощью Notepad++, либо обратившись в нашу техническую поддержку — мы конвертируем таблицу MyISAM в InnoDB самостоятельно, после чего сайт заработает без проблем.