|
|
St. Hell


| 24 Июн, 2006 00:57 InnoDB vs. MyISAM Недостатки InnoDB: 1. Скорость. Скорость падает примерно на 10% при случайном запросе. 2. Нагрузка на CPU. Выше, примерно на те же 10%. 3. Размер. Размер каждой таблицы значительно увеличивается. 4. Сложность "горячего" бэкапа. Для этих целей применяется платная программа - InnoDB Hot Backup. Т.е. сейчас, чтобы сделать бэкап базы, таблицы InnoDB полностью блокируются. На самом деле в нашем случае - это почти не является недостатком. 5. Слудеющии из блокироки строк "взаимоблокировки" и "фантомы". Очень опасное явление. В нашем случае могут быть. 6. Очень требовательны к оперативной памяти (а точнее размер буферного пула должен быть большим, а он как раз содержится в RAM), при малых объемах - большое количество обращений к диску и лавинообразное снижение скорости. Впрочем, для MyISAM не менее важен - key_buffer. 7. Для таблиц InnoDB не поддерживается команда INSERT DELAYED. В нашем случае не важно совершенно. 8. Отсутствие fulltext индексов, т.е. полнотекстный поиск, хотя и остается возможным, но уже не может похвастаться сколько-нибудь большой скоростью или низкой нагузкой на систему. Преимущества InnoDB: 1. Скорость :). При одновременных записи и чтении - выигрывает, за счет того, что блокирует не таблицу, а строку. Так же, говорят, более эффективно использует индексы. Вставки при наличии индексов гораздо быстрее, бывает, что и на порядки. 2. Отказоустойчивость. Более отказоустойчивая :) Менее страшны непредвиденные перезагрузки. Использует логи для обеспечения контрольных точек. Возможность транзакций, что убирает логические противоречия.
В общем, это я к тому, что преобразовал, после восстановления базы на форуме самую большую таблицу ipb_posts в таблицу InnoDB. Пока работает вполне приемлемо.
Беру свои слова обратно, работает совершенно неприемлемо, простой перезапуск mysql просто убил эту таблицу :-0 Притом восстановить тоже уже нельзя, при перезапуске он переписал все бинарные файлы, и ibdata1, в котором таблица содержится (вроде как) и ib_logfile[0-9] Хех, и дернул меня черт, опять же забыв про предварительный бэкап незадолго до следующего набрать service mysql restart ... Ну, опыт, впервые эта комманда оказалась смертельной... Притом, опять же, насколько я узнал, после этого, этой ошибки нету в mysql 5. По общечеловеческой привычке считать виноватым любого, кроме самого себя, назначаю виноватым hexem`а, работал бы аниме-сервак, этого бы не случилось ^_^ 2 комментария - Оставить комментарий | |


| 22 Июн, 2006 19:43 Оптимизация DB Не рекомендую читать всё, что написано ниже ^_^
Всё-таки решил использовать persistent (постоянные т.е.) соединения для форума. По-сути противопоказаний вроде нету, а именно противопоказаниями являются блокировки таблиц, а так же использование транзакций. Ни того, ни другого в форуме у нас нету. Зря, скорей всего, но... А использование persistent соединений позволяет съэкономить на соединениях с бд, всё-таки это тоже не бесплатная операция. Короче, сейчас форум в таком режиме и работает, livejournal, кстати, тоже использует persistent соединения. Еще он использует отложенные вставки в базу данных, но на форуме опять же это приводит к большим побочным эффектам. Для тех, кто не в курсе поясню, delayed вставки срабатывают не сразу, а кладутся в очередь, и, когда база свободна от каких-либо других действий, либо когда пройдет какое-то время, либо когда накопится определенное количество вставок они и выполняются, естественно, когда вставок много (а к форуму это относится), то и выигрышь значительный. Когда вставок мало, выигрыша нету и эффект может быть прямо противоположным, структура форума, к сожалению, не позволяет этого нормально сделать, я попробовал на час поставить такой режим, так сразу стали писать, что приходят письма без содержания, т.е. просто напросто письмо записывается сразу в нескольих таблицах, заголовок в одной, содержание в другой и из-за задержки содержание вставляется позже... Т.е. при такой структуре баз данных помогли бы транзакции, но... Короче, как ни анализирую структуру базы на форуме прихожу к тому, что сделано очень хорошо для маленького форума и неприемлемо для большого, но и переделать что-то отдельно почти не представляется возможным.
Два раза встречал в интернете мнение, что простое преобразование MyISAM в InnoDB в случае форума на IPB сильно снижает нагрузку на базу данных и уменьшает количество дисковых операций, но мои опыты в этом направлении всегда показывали противоположные результаты, однако я еще буду пробовать это сделать, всё-таки сейчас условия несколько изменились относительно того времени, и, возможно, ограничивающие факторы тоже уже не те. 4 комментария - Оставить комментарий | |

|
|