← All posts tagged MySQL

Интересная баго-фича mysql.
К чему может привести описано тут desmart.com
Документация по поводу тут dev.mysql.com
Суть: счётчик значения auto_increment находится в памяти и переинициализируется при перезапуске запросом вроде этого SELECT MAX(ai_col) FROM t FOR UPDATE;
Т.е. вставили 300 записей в таблицу с полем int auto_increment , смотрим счётчик — 301, удалили 100 последних записей, перезапустили и счётчик уже 201 — дальнейшие вставки вновь получат id от 201 до 300.
Проверил — так и есть.

Как оптимизировать DML операции в MySQL (5.1, 5.5; innodb)? Куда копать?
Нагрузка — сравнительно мало select-ов, и достаточно много DML: insert/update/delete.
Репликация тут поможет мало (вынос DML на master и select-ы со slave).
Транзакции нужны, myisam-овский per-table lock не нужен совершенно.
Т.е. innodb тут подходит. Но с lock-ами замучил:
Got error 28 from storage engine (одна транзакция другую не дождалась)
и
Deadlock found when trying to get lock; try restarting transaction (error performing bulk delete)

Совершенно случайно нашёл архивчик с тучей документации по mysql.
Причём официальной документации, собранной в одном месте (разных версий, разного типа архивов, переводами на некоторые европейские и азиатские языки, включая утилиты) с доступными ссылками
downloads.mysql.com