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

Исходное сообщение
"MySQL InnoDB или MyISAM ?"

Отправлено Васька , 16-Апр-06 09:37 
Добрый день,

Есть биллинг, который пишет в mysql информацию о трафике с netflow.
Спустя неделю сервер (Cel600, dimm 128mb, очень старый диск 4гб. ОС FreeBSD, MySQL 4.0.24)
начал сильно притормаживать на отчетах. Тип всех таблиц был InnoDB, объем базы данных 22метра. Решил испытать MyISAM. Создал дамп, поменял тип таблиц и пересоздал базу. Объем базы данных уменьшился до 8.6 метров, скорость возрасла примерно на 70%. И перезаливка дампа с таблицаими типа InnoDB идет в несколько раз дольше. Чем InnoDB лучше MyISAM, почему все советуют именно его?


Содержание

Сообщения в этом обсуждении
"MySQL InnoDB или MyISAM ?"
Отправлено DeadMustdie , 16-Апр-06 10:49 
>Есть биллинг, который пишет в mysql информацию о трафике с netflow.
>Спустя неделю сервер (Cel600, dimm 128mb, очень старый диск 4гб. ОС FreeBSD,
>MySQL 4.0.24) начал сильно притормаживать на отчетах. Тип всех таблиц
>был InnoDB, объем базы данных 22метра.

При таких объемах и на таком железе "тормоза" означают кривую структуру базы
данных либо плохо оптимизированные запросы, используемые в отчетах. IMHO.

Клычевая разница между MyISAM и InnoDB состоит в поддержке транзакционных
механизмов. В простейших случаях это просто означает, что InnoDB надежнее.


"MySQL InnoDB или MyISAM ?"
Отправлено Васька , 16-Апр-06 13:58 

>При таких объемах и на таком железе "тормоза" означают кривую структуру базы
>
>данных либо плохо оптимизированные запросы, используемые в отчетах. IMHO.
>
>Клычевая разница между MyISAM и InnoDB состоит в поддержке транзакционных
>механизмов. В простейших случаях это просто означает, что InnoDB надежнее.

Полчитал доку, переписал запросы. Время генерации отчетов уменьшилось с 3сек. до 0.02сек.
Круто, спасибо :)

Туманная надежность InnoDB vs очевидной скорости MyISAM... Из 2-х зол решил выбрать быстрейшее :)От rm -rf / не спасет InnoDB :)


"MySQL InnoDB или MyISAM ?"
Отправлено ACCA , 17-Апр-06 09:27 
>Туманная надежность InnoDB vs очевидной скорости MyISAM... Из 2-х зол решил выбрать
>быстрейшее :)От rm -rf / не спасет InnoDB :)

А от слёта по питанию?


"MySQL InnoDB или MyISAM ?"
Отправлено Forth , 17-Апр-06 09:33 
>А от слёта по питанию?
От слета по питанию лучше всего спасет ups.:)  
По теме: myisam транзакции не поддерживает, что особенно плохо, когда надо одновременно нескольким приложениям писать в таблицу и читать оттуда. Зато работает да, быстрей.


"MySQL InnoDB или MyISAM ?"
Отправлено chip , 17-Апр-06 12:39 

>По теме: myisam транзакции не поддерживает,

Что очень порой "радует" (приводит в неописуемый *матерный* восторг, я бы даже сказал) её владельцев [myisam владельцев] при ее crash'е. Который судя по форумам, бывает не так уж и редко.


"MySQL InnoDB или MyISAM ?"
Отправлено ACCA , 19-Апр-06 21:07 
>Что очень порой "радует" (приводит в неописуемый *матерный* восторг, я бы даже
>сказал) её владельцев [myisam владельцев] при ее crash'е. Который судя по
>форумам, бывает не так уж и редко.

Постоянно бывает. И слёт по питанию бывает и облом в софте на середине операции. Не хочешь транзакции - не пользуйся, значит у тебя пока учебная задача и их не требует.


"MySQL InnoDB или MyISAM ?"
Отправлено chip , 19-Апр-06 23:00 
>>Что очень порой "радует" (приводит в неописуемый *матерный* восторг, я бы даже
>>сказал) её владельцев [myisam владельцев] при ее crash'е. Который судя по
>>форумам, бывает не так уж и редко.
>
>Постоянно бывает. И слёт по питанию бывает и облом в софте на
>середине операции. Не хочешь транзакции - не пользуйся, значит у тебя
>пока учебная задача и их не требует.

Что-то не вполне понял про учебную задачу?! Это кому?


"MySQL InnoDB или MyISAM ?"
Отправлено RedAss , 20-Апр-06 19:51 
>Полчитал доку, переписал запросы. Время генерации отчетов уменьшилось с 3сек. до 0.02сек.
>Круто, спасибо :)
>Туманная надежность InnoDB vs очевидной скорости MyISAM... Из 2-х зол решил выбрать

так надо под задачу инструмент выбирать, а не наоборот.
в данном конкретном случае это абсолютно правильный выбор, я бы назвал ослом того, кто InnoDB создал.
myisam не предоствляет возможности использовать foreign-ключи, не контролирует целостность базы.
это бывает очень важно, если много таблиц и база хорошо нормализована.
а быстро писать "на полном скаку" в одну таблицу - лучше myisam нет.
я бы ещё подумал, нет ли смысла прикрутить heap для промежуточных результатов.
          http://dev.mysql.com/doc/refman/4.0/ru/heap.html
но это зависит от архитектуры биллинга и алгоритма его работы.


"MySQL InnoDB или MyISAM ?"
Отправлено bashprompt , 20-Апр-06 22:31 
>а быстро писать "на полном скаку" в одну таблицу - лучше myisam
>нет.

MyISAM умеет быстро читать, с записью как раз есть большие проблемы, из-за чего и появились отложенные insert, без них на большом объеме обновлений myisam затыкается.


"MySQL InnoDB или MyISAM ?"
Отправлено Niam , 20-Апр-06 23:00 
>>а быстро писать "на полном скаку" в одну таблицу - лучше myisam
>>нет.
>
>MyISAM умеет быстро читать, с записью как раз есть большие проблемы, из-за
>чего и появились отложенные insert, без них на большом объеме обновлений
>myisam затыкается.


На моем опыте - MyISAM выигрывает здоровски с простыми запросами и небольшой БД(до 500000 записей).


"MySQL InnoDB или MyISAM ?"
Отправлено smb , 21-Апр-06 01:12 
>>>а быстро писать "на полном скаку" в одну таблицу - лучше myisam
>>>нет.
>>
>>MyISAM умеет быстро читать, с записью как раз есть большие проблемы, из-за
>>чего и появились отложенные insert, без них на большом объеме обновлений
>>myisam затыкается.
>
>
>На моем опыте - MyISAM выигрывает здоровски с простыми запросами и небольшой
>БД(до 500000 записей).

Странный у вас опыт...Либо руки неоттуда (=/), либо совсем простые запросы, да и то - по синтетикам InnoDB лучше в 1.5-2 раза, см. тесты....На mysql.com черным по белому пишут о том, что в heavy load production лучше юзать InnoDB, основные причины тут уже описаны....

У меня в небольшой базе поисковика ffsearch(2.5kk индексированных файлов, 250-300Мб сама база) время полного ребилда снизилось с 1.5-2 часов до 10-20 минут ;) Это называется блокировки на уровне записей или что такое MyISAM + concurrent SELECT+UPDATE ;)


"MySQL InnoDB или MyISAM ?"
Отправлено Niam , 21-Апр-06 03:08 

>Странный у вас опыт...Либо руки неоттуда (=/), либо совсем простые запросы

Вот люди привыкли грубить в рассылках =(. Я же отчетливо написал, что в простых запросах. Тест, понимаешли проводил этих двух движков - где какой лучше.
В принципе, если не применять транзакции - то myISAM лучше может оказаться, но проблема в его ненадежности. Но и многое зависит от конфигурации системы. Они по разному хранят индексы. Если првильно организованы(и правильно используются)(или много памяти) индексы - то стоит смотреть в сторону InnoDB. Если сайтик с простой организацией БД, то я думаю myISAM хватит с головой.


"MySQL InnoDB или MyISAM ?"
Отправлено Alex , 08-Ноя-06 09:44 
а если база очень большая, объем данных порядка 800,000,000 записей в таблице, достаточно критична скорость добавления новых данных, и не очень критична скорость селекта, то что лучше - myisam или innodb?
если myisam не поддерживает transactions, означает ли это, что даже если я в Java открыл транзакцию, потом что-то в ней делал, и потом сделал rollback(), то на myisam этот rollback не подействует?


"MySQL InnoDB или MyISAM ?"
Отправлено Igorek , 10-Дек-09 14:36 
>если myisam не поддерживает transactions, означает ли это, что даже если я
>в Java открыл транзакцию, потом что-то в ней делал, и потом
>сделал rollback(), то на myisam этот rollback не подействует?

да... проверено, rollback неподействует)


"MySQL InnoDB или MyISAM ?"
Отправлено uldus , 18-Апр-06 20:44 
В MyISAM блокировки на уровне таблицы, а в  InnoDB  ну уровне записи. В момент записи/обновления в MyISAM все кто обращается к этой таблице ждут, если писать пытаются несколько одновременно - совcем плохо.