The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Выбор типа хранилища MySQL"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Выбор типа хранилища MySQL"  +/
Сообщение от auto_tips (ok) on 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.dev/tips/info/1958.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Выбор типа хранилища MySQL"  +/
Сообщение от angra (ok) on 25-Фев-09, 00:48 
Вы не поверите, но в доке мускула все это описано намного лучше. Также есть еще ряд других плюсов и минусов у каждого типа, а кроме того ничто, кроме религии, не запрещает свободно в одной базе смешивать таблицы разных типов.
Кстати такие хранилища как ARCHIVE, MEMORY и BDB вы тоже отнесли к экспериментальным?
Итого отрывочный пересказ не очень умной статьи.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Выбор типа хранилища MySQL"  +/
Сообщение от Ivan (??) on 25-Фев-09, 12:11 
> Innodb нужно использовать всегда

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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

9. "Выбор типа хранилища MySQL"  +/
Сообщение от Anonymus on 27-Фев-09, 04:23 
Если на каждую запись (строку) отдельная транзакция, то действительно беда... А если одной транзакцией все миллионы записей вставлять, то время вставки InnoDB слабо отличается от MyISAM...
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Выбор типа хранилища MySQL: MyISAM или Innodb ?"  +/
Сообщение от Аноним (??) on 27-Фев-09, 08:27 
звучит как "первая доза - бесплатно" ;-)
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

11. "Выбор типа хранилища MySQL"  +/
Сообщение от WhiteWind (ok) on 27-Фев-09, 19:51 
В реальных приложениях производительность InnoDB заметно ниже.
Я использую InnoDB только когда действительно есть потребность во внешних ключах и/или транзакциях.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Выбор типа хранилища MySQL: MyISAM или Innodb ?"  +/
Сообщение от pentarh email(ok) on 27-Фев-09, 21:56 
А я вот своим опытом поделюсь

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

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

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

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

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

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

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

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "Выбор типа хранилища MySQL: MyISAM или Innodb ?"  +/
Сообщение от баламут on 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 запросов в секунду держит.

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

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

22. "Выбор типа хранилища MySQL: MyISAM или Innodb ?"  +/
Сообщение от angra (ok) on 02-Мрт-09, 01:53 
Зачем для твоей задачи вообще реляционная база данных? Зачем с таким использованием БД о чем то спорить в этой теме?
Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

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

24. "Выбор типа хранилища MySQL: MyISAM или Innodb ?"  +/
Сообщение от angra (ok) on 02-Мрт-09, 10:08 
Еще раз но другими словами. Ни myisam, ни innodb не предназначались для такого использования. Зачем вы их сравниваете на том поле, для которого они не предназначены? Если утрировать, то вы доказываете преимущество бинокля над телескопом для операции забивания гвоздей.
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

28. "Выбор типа хранилища MySQL: MyISAM или Innodb ?"  +/
Сообщение от anonimous on 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.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру