LINUX.ORG.RU
ФорумAdmin

Оптимизация базы MySQL


0

5

Всем привет,

ситуация такая есть база большая, файл /var/lib/mysql/ibdata1 уже около 20Г. Начинает тормозить, делаю полный дамп, стопаю mysql, убиваю /var/lib/mysql, старт mysql, ресторю дамп, ibdata1 в 3 раза меньше, все летает.

С mysql работаю мало, в основном с postgre, там есть замечательная утилитка «cluster/vacuum», которая делает примерно тоже самое, но на живой базе. Кто с mysql работает подскажите, по-любому там что-то подобное как в postgre должно быть.

пс. mysql-5.1.61


Ну в MySQL есть OPTMIZE TABLE но для innodb (которая скорее всего у тебя) это полностью перестраивает таблицы => лочит работу.

theos ★★★
()
Ответ на: комментарий от theos

пробовал, хз что она там оптимизирует,но размер ibdata1 файла от этого не меняется в лучшую сторону.

httpd
() автор топика

ЕМНИП только через дамп

leave ★★★★★
()

Когда все таблицы в одном файле, mysql и не будет уменьшать размер файла.
Поэтому добавляйте file per table в my.cnf.

blackst0ne ★★★★★
()
Ответ на: комментарий от blackst0ne

да похоже только разделение ib файла для каждой таблицы спасает, сенкс, тема закрыта.

httpd
() автор топика
Ответ на: комментарий от blackst0ne

Поэтому добавляйте file per table

А чем плох вариант с одним файлом, который один раз создался и не фрагментируется постоянно на уровне ФС? Или вообще является напрямую устройством.

YAR ★★★★★
()
Ответ на: комментарий от YAR

YAR

А чем плох вариант с одним файлом, который один раз создался и не фрагментируется постоянно на уровне ФС? Или вообще является напрямую устройством.

Тем, что он постоянно разрастается. Тут уже самому нужно решать, что важнее - дефрагментированная ФС, или занимаемое место.

blackst0ne ★★★★★
()
Ответ на: комментарий от blackst0ne

Тем, что он постоянно разрастается.

Разрастаются они примерно одинаково, просто большой не уменьшается. В идеальном случае (на свежезалитой базе или постоянно добавляемых данных) сумма размеров мелких файлов будет примерно равна размеру большого.

YAR ★★★★★
()
Ответ на: комментарий от YAR

Верно, я неправильно выразился.
Когда все таблицы в одном файле, то оптимизировать размер можно только через dump/restore.
В случае же использования file per table, можно применять optimize table.

blackst0ne ★★★★★
()

1. В mysql такого нет
2. Начинает тормозить оно не столько из-за роста таблиц, сколько из-за фрагментации. Сделайте файл сразу размером в 40 Г.
3. версия 5.1 очень старая, 5.5 намного быстрее.
4. file_per_table хорошо, конечно. Но при это, по-моему мнению, приведёт к тем-же проблемам производительности. Только теперь из-за фрагментации файловой системы. Так как будет куча файлов, которые будут конкурентно между собой расти, ФС будет выделять им место мозаикой, и нещадно фрагментировать.

dmitryalexeeff
()
Ответ на: комментарий от blackst0ne

Тем, что он постоянно разрастается


Файл созданный с запасом по размеру, даже со включеной директивой autoextent не будет разрастаться.
Проверено лично.

dmitryalexeeff
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.