SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.02.2008 15:38:50

Bor
Участник
Зарегистрирован: 06.02.2008
Сообщений: 3

Каковы ограничения таблиц MyISAM?

Здравствуйте.

Меня интересуют ограничения таблицы MyISAM. Предварительный просмотр постов форума не дал результатов.
Судя по документации, размер таблицы, практически достаточен для любых разумных объемов данных. А как обстоит дело с максимальным количеством записей в одной таблице MyISAM?

У меня база для хранения технологических параметров, и количество хранимых записей в через несколько лет превысит 2 в 32-й степени, то есть 4 миллиарда с хвостиком. Попытка увеличить это при помощи ALTER TABLE `techdb`.`t_history` MAX_ROWS = 100000000000; приводит к установке MAX_ROWS в 4294967295. Это и есть предельное число записей в таблице MyISAM? Или существует возможность обойти это.

Пока поставил в работу тестовое приложение и пихаю туда записи, но придется подождать 43 дня smile.

Неактивен

 

#2 06.02.2008 15:49:47

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Каковы ограничения таблиц MyISAM?

Подозреваю, что Вы упираетесь в ограничения ОС smile
http://dev.mysql.com/doc/refman/5.1/en/full-table.html

Даже на ОС с ограничениями, Вы можете разбить табличку на несколько кусков и сделать
из них MERGE. Более того, некоторые из кусков можно сделать R/O (с помощью myisampack) -
так они будут занимать куда меньше места без уменьшения скорости доступа (а иногда и с
увеличением ее smile).

Неактивен

 

#3 06.02.2008 16:00:00

Bor
Участник
Зарегистрирован: 06.02.2008
Сообщений: 3

Re: Каковы ограничения таблиц MyISAM?

Да, да, это я читал, на NTFS предельный размер таблицы 2 терабайта. Но извините за назойливость, а 4 миллиарда 294 миллиона записей точно не остановят MyISAM?

А как разбить таблицу на куски прозрачно для приложения? Ведь оно же должно обращаться к конкретной таблице по имени.

По приведенной ссылке прочитал об myisam_data_pointer_size. Если ограничение на 4 млрд строк все же существует, то его можно снять увеличив размер указателя до 7? Я планирую размещать СУБД на Windows машине. Для этого мне необходимо пересобрать MySQL из исходных текстов?

Отредактированно Bor (06.02.2008 16:06:28)

Неактивен

 

#4 06.02.2008 17:21:07

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Каковы ограничения таблиц MyISAM?

Разбить таблицу так:
CREATE TABLE a1 (.. список полей ..) ENGINE=MyISAM;
CREATE TABLE a  (.. те же поля ..) ENGINE=MERGE UNION=(a1) INSERT_METHOD=LAST;

Когда данных станет достаточно много, создаете вторую таблицу
CREATE TABLE a2 LIKE a1;
DROP DABLE a;
CREATE TABLE a  (.. те же поля ..) ENGINE=MERGE UNION=(a1,a2) INSERT_METHOD=LAST;

Обращение в такой схеме происходит к таблице a. Чтение производится физически как из
a1, так и из a2, запись только в последнюю (т.е. в a2). Обновления - тоже в любую.

Неактивен

 

#5 07.02.2008 08:15:03

Bor
Участник
Зарегистрирован: 06.02.2008
Сообщений: 3

Re: Каковы ограничения таблиц MyISAM?

Спасибо! Я думаю, вариант с MERGE меня вполне устроит.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson