Скорость выполнения alter table add primary key на большой таблице

valyala

Новичок
Скорость выполнения alter table add primary key на большой таблице

Есть таблица myisam с 20-ю миллионами строк и размером 10Гб. Сервер mysql 5.0.22 очень медленно добавляет первичный ключ к этой таблице - более суток. mssql справляется с этой задачей на том же компьютере за полчаса.

Вот тут http://peter-zaitsev.livejournal.com/11772.html описывается решение этой проблемы, но оно сделано через задницу.

Может, кто-нибудь сталкивался с этой проблемой и знает, как ускорить добавление первичного ключа в mysql?
 

partizan

Новичок
И часто приходится добавлять в тадлицу новые первечные ключи?
 

valyala

Новичок
И часто приходится добавлять в тадлицу новые первечные ключи?
Раз в сутки таблица перегенерируется заново. Можно сразу создать первичный ключ в пустой таблице, а затем заполнить ее данными. Но для большого количество строк этот способ работает медленнее, чем создание ключа после заполнения таблицы.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Любое изменение таблицы в MySQL делается с копированием всех данных в новую временную таблицу. Эта проблема у разработчиков "в todo, но низкоприоритетная".
Postgres тоже с изменением больших таблиц справляеся быстро.

Решения (не исключающие):
а) решить проблему без ежедневной перегенерации таблицы (неправильно решение все-таки)
б) разбить таблицу на несколько (по 500 Мб)
в) отрегулировать установки памяти для того, чтобы индекс таблицы помещался в память (хотя бы 2/3 индекса)
г) делать lock table - ускорение процентов на 10
 
Сверху