20.09.08 18:07COUNT(*) для InnoDB таблиц

При переходе от MyISAM к Innodb, стоит помнить, что Innodb крайне медлителен в  COUNT(*) запросах.

Следовательно, если у вас есть запросы вида SELECT COUNT(*) FROM t1 они будут выполняться значительно быстрее для MyISAM таблиц так как достаточно вернуть сохраненное количество записей. InnoDB в данном случае вынужден будет выполнить полно-табличное/индексное сканирование, потому, что он не имеет подобного счетчика. И одним простым счетчиком в данном случае не обойтись, ведь каждая транзакция может видеть разное количество записей в таблице.

Запросы вида SELECT COUNT(*) FROM t1 WHERE id = 9  выполняются примерно одинаково для MyISAM и InnoDB таблиц, сканированием диапозона индексов.

В реальных условия запросы второго типа встречаются гораздо чаще, так что это не такая уж большая проблема как может показаться. Чаще всего количество записей необходимо для административных утилит, отображения статистики и тому подобное и это легко обойти.

Вывод: InnoDB медленней не для всех запросов вида COUNT(*), а только для случаев без условия WHERE.

Комментариев нет | Рубрики: MySQL

20.09.08 14:18Настройки MySQL Server

Сервер MySQL имеет огромное количество переменных, которые могут быть настроены для ожидаемого поведения или в целях повышения производительности. Несмотря на то, что все они документированы, существует некоторая путаница с тем, какие переменные применяются только к конкретному движку базы данных, а какие ко всем.

Читать дальше…

Комментариев нет | Рубрики: MySQL, Настройки