URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 49904
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Выбор типа хранилища MySQL"

Отправлено auto_tips , 25-Фев-09 00:48 
Если вы создаете БД по обстоятельствам и не уверены как база будет использоваться, выбирайте Innodb.
Innodb следует использовать:
Когда взаимодействие с базой имеет характер OLTP (http://ru.wikipedia.org/wiki/OLTP)
Когда требуются транзакции.
Когда нужна высокая надежность хранения и быстрое восстановление после сбоя.
Innodb хорошо справляется со смешанной нагрузкой (select/update/delete/insert).

Минусы Innodb:
могут возникать deadlock, не свойственные MyISAM;
Медленнее выполняются insert операции и работа с блобами;
Не поддерживается полнотекстовый поиск;
Проблемы с производительностью COUNT(*);
Для  Innodb нет поддержки mysqlhotcopy;


С MyISAM есть одна нехорошая проблема, таблица может на ровном месте отказаться работать до выполнения REPAIR TABLE.
Случается такое крайне редко, но и этого хватает. Пример: http://blog.lexa.ru/2008/10/05/vash_mysql___to_esche_g.html
Поэтому с для MyISAM рекомендуется организовать периодический запуск mysqlcheck через cron.

Из-за особенности организации блокировки (блокировка на уровне таблицы),
MyISAM имеет смысл использовать, когда преобладают операции insert или select, но крайне мало delete или update.
Когда можно обойтись без транзакций.
Когда выполняются запросы, характерные для OLAP
(http://ru.wikipedia.org/wiki/OLAP)
Когда таблица используется для хранения  лога;
Когда много запросов вида Select count(*).
Когда нужно задействовать средства полнотекстового поиска.


Такие альтернативные хранилища, как PBXT, Innodb plugin, XtraDB, Maria, Falcon, еще находятся на стадии разработки и
имеют экспериментальный характер.

URL: http://www.bigdbahead.com/?p=130 http://www.mysqlperformanceblog.com/2009/01/12/should-you-mo.../
Обсуждается: http://www.opennet.me/tips/info/1958.shtml


Содержание

Сообщения в этом обсуждении
"Выбор типа хранилища MySQL"
Отправлено angra , 25-Фев-09 00:48 
Вы не поверите, но в доке мускула все это описано намного лучше. Также есть еще ряд других плюсов и минусов у каждого типа, а кроме того ничто, кроме религии, не запрещает свободно в одной базе смешивать таблицы разных типов.
Кстати такие хранилища как ARCHIVE, MEMORY и BDB вы тоже отнесли к экспериментальным?
Итого отрывочный пересказ не очень умной статьи.

"Выбор типа хранилища MySQL"
Отправлено Аноним , 25-Фев-09 03:03 
BDB уже не существует, его убрали из MySQL 5.1.
Кстати, киньте ссылку на плюсы и минусы Innodb и MiISAM в документации MySQL. На http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html только очень поверхностные рекомендации по выбору.

"Выбор типа хранилища MySQL"
Отправлено Щекн Итрч , 25-Фев-09 06:24 
>BDB уже не существует, его убрали из MySQL 5.1.
>Кстати, киньте ссылку на плюсы и минусы Innodb и MiISAM в документации
>MySQL. На http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html только очень поверхностные рекомендации по выбору.

Кидаю вам МЫСЛ !
Innodb нужно использовать всегда, просто потому, что это на порядок надежнее, а на все остальное можно забить. Полнотекстового поиска нет только в блобах.


"Выбор типа хранилища MySQL"
Отправлено Ivan , 25-Фев-09 12:11 
> Innodb нужно использовать всегда

Согласен, СУБД без полноценной поддержки внешних ключей и транзакций не имеет права на существование.


"Выбор типа хранилища MySQL"
Отправлено имя файла , 26-Фев-09 23:38 
Удачи МЫСЛЫТЕЛЮ:)
будет у Вас задача по вставке в базу в минуту до нескольких миллионов записей, тогда поговорим.

"Выбор типа хранилища MySQL"
Отправлено Anonymus , 27-Фев-09 04:23 
Если на каждую запись (строку) отдельная транзакция, то действительно беда... А если одной транзакцией все миллионы записей вставлять, то время вставки InnoDB слабо отличается от MyISAM...

"Выбор типа хранилища MySQL"
Отправлено WhiteWind , 27-Фев-09 19:51 
В реальных приложениях производительность InnoDB заметно ниже.
Я использую InnoDB только когда действительно есть потребность во внешних ключах и/или транзакциях.

"Выбор типа хранилища MySQL"
Отправлено Щекн Итрч , 27-Фев-09 22:38 
производительность InnoDB заметно ниже - процентов на тридцать на совершенно ненагруженной системе. Под нагрузкой InnoDB может оказаться и пошустрее :)

Под нагрузкой и мускул упасть может, и ось панику дать. Это норма жизни. Кто думает по другому, пусть расскажет это своё другое не здесь, а в унитаз. Или в бабушкин носок.

В случае InnoDB вопрос решается одним щелчком кнопки "ресет": это может сделать вочдог, это может сделать любая девка в серверной, это может сделать моя мобила через IP KVM.

А вот в случае исама вам в 99% придется чинить таблицы...


"Выбор типа хранилища MySQL"
Отправлено pentarh , 27-Фев-09 22:50 
>производительность InnoDB заметно ниже - процентов на тридцать на совершенно ненагруженной системе.
>Под нагрузкой InnoDB может оказаться и пошустрее :)

Ну ну. Пробовали-пробовали. На сотне-другой тысяч посетителей таблицу заапали на InnoDB. Сервер особо не пукал, просто процентов 60 записей (а это десятки тысяч), которые должны были вставиться пока таблица была на InnoDB, они просто исчезли. Даже в логах пхп рукой не помахали. Их просто как будто не стало.

Смотрю full processlist - коннекты висят в слипе как будто pconnect юзается (на самом деле ничего такого).

Делаю Alter table foobar engine=MyISAM - бац и все пучком. Все записывается, все идет.


"Выбор типа хранилища MySQL"
Отправлено Щекн Итрч , 28-Фев-09 22:40 
>[оверквотинг удален]
>особо не пукал, просто процентов 60 записей (а это десятки тысяч),
>которые должны были вставиться пока таблица была на InnoDB, они просто
>исчезли. Даже в логах пхп рукой не помахали. Их просто как
>будто не стало.
>
>Смотрю full processlist - коннекты висят в слипе как будто pconnect юзается
>(на самом деле ничего такого).
>
>Делаю Alter table foobar engine=MyISAM - бац и все пучком. Все записывается,
>все идет.

Да? А вчерне опишете задачу? Сотне К статику-то в виде 100 байтных гифов БЕЗ кластера сдать нельзя. Локальные запросы к базе? Почему база не расколочена по кластеру? В общем, вы - свистите?  А мама в детстве вас не научила, что свистеть - западло?


"Выбор типа хранилища MySQL"
Отправлено pentarh , 01-Мрт-09 11:59 
>Да? А вчерне опишете задачу? Сотне К статику-то в виде 100 байтных
>гифов БЕЗ кластера сдать нельзя. Локальные запросы к базе? Почему база
>не расколочена по кластеру? В общем, вы - свистите?  А
>мама в детстве вас не научила, что свистеть - западло?

ЫЫ. Умник. Кластер у меня стоит на GPFS только на другой задаче.

А с этой справляется один мускуль сервер на MyISAM. Миллионы инсертов в сутки + дикая обработка данных. InnoDB свистит по полной. Надо просто базу рисовать под MyISAM специфику.


"Выбор типа хранилища MySQL"
Отправлено User294 , 02-Мрт-09 16:04 
>Да? А вчерне опишете задачу? Сотне К статику-то в виде 100 байтных
>гифов БЕЗ кластера сдать нельзя.

Да ладно вам?Кегель еще сто лет назад описал проблему C10K и нынче дофуа серверов которые спокойно к ней относятся.Например лайт, нжинкс, ... :).Сколько посетителей должно быть при 10 000 одновременных конектах, гигабите и 100-байтных гифах - сами посчитаете.Хотя да, таким как вы проще вбахать кластер - за чужой счет еще и не такое можно.


"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено Аноним , 25-Фев-09 09:06 
MyISAM следует использовать, когда больше важна производительность нежели надежность.
InnoDB поддерживает внешние связи - логика на уровне модели данных, для MyISAM логика на бизнес-уровне.

*39393 - палиндром)


"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено Аноним , 26-Фев-09 11:28 
MyISAM проще в обслуживании и восстановлении из бэкапов при сбоях.



"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено Одмин , 26-Фев-09 17:53 
лучший тип тип хранилища это постгрес :). Я серьёзно. Рекомендую хотя бы попробовать.

"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено Аноним , 27-Фев-09 08:27 
звучит как "первая доза - бесплатно" ;-)

"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено pentarh , 27-Фев-09 21:56 
А я вот своим опытом поделюсь

http://www.pentarh.com/wp/2009/02/23/innodb-vs-myisam/


"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено igorsiapochta.ru , 28-Фев-09 10:53 
Те, кто рассказывают про скорость InnoDB дайте пожалуйста сравнение длясабжа
c MyISAM для заливки 200кк записей в таблицу с 2-3 индексами конструкцией load data concurrent infile.

"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено angra , 28-Фев-09 17:06 
Не поверите, но перезапись бинарного файла еще быстрее отработает, причем как для myisam так и для innodb. Вот только какое это имеет отношение к нормальной работе с базой данных?


"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено баламут , 28-Фев-09 22:01 
>Те, кто рассказывают про скорость InnoDB дайте пожалуйста сравнение длясабжа
>c MyISAM для заливки 200кк записей в таблицу с 2-3 индексами конструкцией load data concurrent infile.

Вот, блин, интересный ты тест задвинул... Ты бы ещё линейное чтение проверял из одной таблицы с одним индексом. Ты реальную базу давай. 100 связанных таблиц с одинаковыми индексами в обоих базах, 100 млн. записей в базе и запрос с пятью уровнями вложения. Поэтому и сравнивают PostgreSQL и MySQL, что в MySQL есть InnoDB. У меня сервак на MySQL развёрнут под InnoDB (80 таблиц, 60 млн. записей) - 3000 запросов в секунду держит.


"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено igorsia , 01-Мрт-09 13:59 
У каждого Петрушки - свои игрушки.
У меня в базу льются логи биллинга для последующей обработки и обращения к ним.
Никаких вложенностей, никаких внешних ключей. Мне нужна быстрая заливка и быстрая выборка данных по 2-3 ключам из таблицы в 150-200 млн. записей.

"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено angra , 02-Мрт-09 01:53 
Зачем для твоей задачи вообще реляционная база данных? Зачем с таким использованием БД о чем то спорить в этой теме?

"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено igorsia , 02-Мрт-09 09:51 
РБД мне потому, что система ключ-значение меня не удовлетворяет, кроме того SQL как язык формирования запросов для меня привычен и удобен.
Там где мне нужно - отношения используются, там где не нужно - нет. Или Вам преподаватели СУБД не говорили, что НФ это не догма а средство? И то, что данные могут быть даже не в 1НФ для Вас открытие?

"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено angra , 02-Мрт-09 10:08 
Еще раз но другими словами. Ни myisam, ни innodb не предназначались для такого использования. Зачем вы их сравниваете на том поле, для которого они не предназначены? Если утрировать, то вы доказываете преимущество бинокля над телескопом для операции забивания гвоздей.

"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено Ape , 02-Мрт-09 15:47 
>Те, кто рассказывают про скорость InnoDB дайте пожалуйста сравнение длясабжа
>c MyISAM для заливки 200кк записей в таблицу с 2-3 индексами конструкцией
>load data concurrent infile.
>У меня в базу льются логи биллинга для последующей обработки и обращения к ним.
>Никаких вложенностей, никаких внешних ключей. Мне нужна быстрая заливка и быстрая выборка данных по 2-3 ключам из таблицы в 150-200 млн. записей.

А причём здесь движок базы? Тут вся нагрузка на ОСи. Чистый файловый режим. При таком режиме работы скорее влияет:
1. Мощность железа. Настройка железа.
2. Выбор ОС. Настройка ОС.
3. Выбор ФС. Настройка ФС.
4. Ну, и настройка MySQL, чтобы учитывались особенности данного режима.


"Выбор типа хранилища MySQL: MyISAM или Innodb ?"
Отправлено anonimous , 24-Мрт-14 15:09 
>[оверквотинг удален]
>>c MyISAM для заливки 200кк записей в таблицу с 2-3 индексами конструкцией
>>load data concurrent infile.
>>У меня в базу льются логи биллинга для последующей обработки и обращения к ним.
>>Никаких вложенностей, никаких внешних ключей. Мне нужна быстрая заливка и быстрая выборка данных по 2-3 ключам из таблицы в 150-200 млн. записей.
> А причём здесь движок базы? Тут вся нагрузка на ОСи. Чистый файловый
> режим. При таком режиме работы скорее влияет:
> 1. Мощность железа. Настройка железа.
> 2. Выбор ОС. Настройка ОС.
> 3. Выбор ФС. Настройка ФС.
> 4. Ну, и настройка MySQL, чтобы учитывались особенности данного режима.

чистый файловый режим это если бы не было индексов - все упирается в них.
особенность load concurrent infile в том, что индексы создаются без блокирования таблицы как это обычно происходит в MyIsam при простом INSERT, и в то же время достаточно быстро, в отличие от InnoDB.