Удаление миллиона записей из таблицы MySQL

uncle17

как удалить один миллион из 15, не подвесив базу с ответом "Too many connections"?

AlexV769

удаление N записей из таблицы с M строками ортогонально кол-ву одновременных сессий к MySQL серверу.

nik93

может он каждую строчку по отдельности удалять собрался? :)

NAIL

Поселктив айдишки и удаляя по 100К например.

NAIL

Телепатство в данном случае не сложное. Надо просто подумать как могло появиться too many connections.
Почти наверное идёт удаление не по primary, а вероятнее всего вообще не по ключу. Соответственно лочится вся табличка. Зверьки набегают, и ждут свои N сек, до того, чтобы получить lock wait timeout. Соответственно все коннекты заняты запросами, ждущими освобождения лока.
От такого как раз можно избавиться вначале поселектив, а потом удаляя по primary.

uncle17

и вправду телепат.
Да, надо было по id удалять. Дурак я.

Gaishnik

Почти наверное идёт удаление не по primary, а вероятнее всего вообще не по ключу. Соответственно лочится вся табличка. Зверьки набегают, и ждут свои N сек, до того, чтобы получить lock wait timeout. Соответственно все коннекты заняты запросами, ждущими освобождения лока.
Это про MyISAM или про InnoDB тоже?

NAIL

Это про innodb, но в myisam наверное такое же поведение будет, с учётом того, что там вроде вообще нет построчных блокировок. С myisam'ом я нормально не работал, поэтому могу только предполагать.

uncle17

MyISAM у меня была

NAIL

ну значит хреновый из меня телепат :)

Gaishnik

А зачем вы используете MyISAM? Я думал что он морально устарел и не имеет преимуществ по сравнению с InnoDB.

milanadiana

в майисаме есть, например фултекстовые ключи для поиска..

hwh2010

вроде в myisam лучше работать всякие лимиты при больших оффсетах и вытаскивание данных только по индексам. Это оттого что нет версионности (транзакций).

Gaishnik

Есть какой-нибудь мануал где объясняются алгоритмы по которым работают блокировочные и версионные СУБД и на каких операциях какие выигрывают? Хочу систематизировать и навести порядок в голове.
Оставить комментарий
Имя или ник:
Комментарий: