Чем плох MySQL

Июль 17, 2007 10:07 дп автор maratische  |  Рубрики: PHP, RubyOnRails  |  Метки:  

Чем плох MySQL?

интересная заметка про недостатки MySql..
http://www.rsdn.ru/Forum/message/2586801.aspx

1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 3.6 out of 5)
Loading ... Loading ...

Добавить комментарий »

Олег Курносов:

Выводы из rsdn.ru::
1) при разработке приложений под MySQL нужно думать о том, как обойти эту проблему с ORDER BY, вплоть до выгрузки результата в таблицу (на деле временную) с индексом по атрибуту сортировки.
2) иначе — на единицах гигабайт базы и сотнях пользователей — крах за крахом.
3) обязательны “узкие композиты” при использовании таблиц с BLOBами, нужно добиваться того, чтобы EXPLAIN SELECT показывал Using index — т.е. полное неприкосновение к самой таблице с полным исполнением запроса по композиту.
4) возможно, имеет смысл на коленке сделанный table partitioning.

( Comment от Олег Курносов — Июль 17, 2007 @ 11:18 дп )
yarry:

Самый частый запрос к базе в моем приложении имел вид:

SELECT * FROM t WHERE fk=12345 ORDER BY issued_at DESC LIMIT 1;

В базе был индекс по (fk, issued_at DESC). Посмотрел EXPLAIN - вижу, что для описанной в статье “страшной” сортировки извлекаются все записи, соответствующие fk. Непорядок.

Пересмотрел доку по индексам. Во-первых, MySQL игнорирует модификатор DESC при создании составных индексов. Ладно, сможем соорудить искусственное поле с обратным порядком нумерации. Пробуем пока тот же запрос, но без DESC в ORDER BY. Хрен там, опять rows = 58, а не 1!

В итоге похоже, буду заменять эти запросы на SELECT * FROM t WHERE fk=12345 AND issued_at=(SELECT MAX(issued_at FROM t WHERE fk=12345) AS foo; Согласно EXPLAIN, с таким запросом все шоколадно. Надо будет только сгенерить базу побольше для приближенного к реальности теста.

( Comment от yarry — Июль 17, 2007 @ 5:12 пп )
bolk:

Фигня, а не статья: “у MySQL есть два движка — MyISAM и InnoDB, MySQL гавно, потому что у MyISAM гавно”.

У MySQL не два движка. Их несколько, у нас на тестовом “SHOW ENGINES” показывает: MyISAM, MRG_MYISAM, CSV, FEDERATED, MEMORY, InnoDB, ARCHIVE. Помимо этого я могу навскидку вспомнить Memcache, Falcon, Partition.

Каждый движок под свою задачу. Глупо говорить “движок — гавно” при попытке использовать его для того, что он не предназначен.

Кстати, для backup у MySQL есть mysqlhotdump

( Comment от bolk — Июль 18, 2007 @ 4:25 пп )
Тимур Вафин:

Я что то тоже не понял, чем же в итоге плох mysql?

( Comment от Тимур Вафин — Июль 18, 2007 @ 4:49 пп )
bolk:

Просто автору почему-то показалось, что MySQL=MyISAM

( Comment от bolk — Июль 18, 2007 @ 5:01 пп )
Олег Курносов:

В итоге MySQL не так уж и плох?

( Comment от Олег Курносов — Июль 19, 2007 @ 7:52 пп )
bolk:

Совсем неплох. Жаль только, что некоторые хорошие фичи MySQL (FULLTEXT, SPATIAL index) доступны в MyISAM, посмотрим что преподнесёт нам Falcon (в MySQL 5.2, 6.xx)

( Comment от bolk — Июль 26, 2007 @ 12:37 пп )

Оставить комментарий