Mysql, максимальное количество записей в таблице myisam

K
На сайте с 12.07.2006
Offline
295
Kpd
23126

Есть mysql 5.0, большая база данных и в ней (в том числе) большая таблица типа myisam. После того, как количество строк в таблице перевалило за 2 миллиона и суммарный размер всех таблиц базы данных и индексов дошёл до 2 гигов (это случилось одновременно), запросы к таблице сразу стали выполняться на порядок медленнее. Собственно вопрос - 2 миллиона - это максимальное количество строк в myisam, под обработку которых заточен mysql, или 2 гига - максимальный размер базы данных или всё это случайное совпадение и мне нужно шаманить с размерами буферов?

Andreyka
На сайте с 19.02.2005
Offline
822
#1

ОС 64-х битная?

Не стоит плодить сущности без необходимости
K
На сайте с 12.07.2006
Offline
295
Kpd
#2

Andreyka, нет

N
На сайте с 06.05.2007
Offline
419
#3

явасумоляю. все проблемы в mysql именно так и проявляются : как только данных становится больше некоторого порога они уже не влезают в кеш и начинаются торможения. а еще бывает что с ростом объема данных в какой-то момент поменяется способ исполнения запроса.

но вообще оптимизация штука комплексная и общих советов дать трудно.

выделите медленные запросы, покажите структуру таблиц, explain запросов. может тогда.

обычный лимит у myisam-таблиц 2^32 то есть 4 миллиарда записей.

даже если он достигнут то можно пересобрать с опцией --with-big-tables и лимит будет (2^32)^2

Кнопка вызова админа ()
Andreyka
На сайте с 19.02.2005
Offline
822
#4

Ставьте 64-х битную, помогает

K
На сайте с 12.07.2006
Offline
295
Kpd
#5

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

Возникла другая проблема - как делать бэкап большой базы? Делаю

nice --15 mysqldump -uюзер -pпароль -hlocalhost --opt --add-drop-table --quote-name база_данных > db.sql

Сервер вешается, запросы к базе данных выполняются с большим тормозом.

Как правильно это делается?

S
На сайте с 01.04.2008
Offline
91
#6

ИМХО если все так запущено тогда вариант: реплицировать БД на другой сервер и там уже бэкапить.

Править домен летит Айболит. И одно только слово твердит: - DNS! DNS! DNS!
N
На сайте с 06.05.2007
Offline
419
#7

Разумеется он "вешается". mysqldump блокирует таблицы перед чтением.

Еще можно попробовать использовать снапшеты LVM, если вдруг у вас есть возможность.

Может быть вам подойдет скрипт mysqlhotcopy ( у меня лично он крешит базы в произвольный момент времени).

M
На сайте с 19.09.2007
Offline
112
#8

ну как бы на выбор - еще можно раз скопировать и включить бинлоги, и ими потом "догонять" копию. те кто пользует говорят "вполне даже удобно"

сам гоняю через репликацию - с нее уже бэкап и когда очень уж необходимо - стопорим на пару минут для снапшота (но у меня фряха ОС) и с него обычная копия и под базу специально отрезан не сильно большой разел чтобы быстренько снапшотилось.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий