Почему Myisam быстрее для чтения (в основном приложения для чтения) и простых запросов? - PullRequest
1 голос
/ 01 мая 2011

Я читал некоторые материалы по Mysql, блогу о производительности Myysql и некоторым книгам.

Говорят, что если у вас приложение, основанное главным образом на чтении, вы должны использовать Myisam, так как оно лучше, чем Innodb.Также не присоединяющиеся запросы быстрее для Myisam.

Почему, когда он поддерживает блокировки таблиц (я полагаю, только для записей), поскольку Innodb имеет блокировки на уровне строк, поэтому он должен обеспечивать более высокую производительность как для чтения, так и для записи ..

Я просто хочучтобы понять это, почему во всех материалах для чтения написано, что Myisam быстрее для чтения, если ваша заявка прочитана более чем на 95%>, без объяснения того же.

Я надеюсь, что кто-то знающий ответит без голосования без голосования изакрытие вопроса

1 Ответ

7 голосов
/ 01 мая 2011

Блокировки на уровне таблиц быстрее проверяются, но, когда они существуют, они блокируют любой другой доступ к таблице. Если вы в основном читаете, то вам нужна самая быстрая проверка «Я не заблокирован».

Блокировка на уровне строк позволяет одновременно выполнять другие операции на столе, но они дороже в пространстве / времени для реализации и проверки.

Таким образом, если вы выполняете 95% + чтений на столе (типично для большинства веб-приложений), MyISAM выигрывает. Некоторые таблицы (такие как таблицы сеансов или таблицы отслеживания пользователей) имеют столько же записей, сколько и операций чтения, и блокировка всей таблицы для каждого обновления может замедлить сканирование активного сайта.

Попробуйте проверить это, создав «базу данных» с использованием учетных карточек для различных таблиц и смоделируйте, что происходит, когда один посетитель одновременно проходит по сайту. Затем попробуйте с 5, 10 или 50 посетителями, одновременно нажимающими на код. Быстро станет очевидно, что блокировка на уровне таблицы в сеансовой таблице является ограничителем показа.

...