SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 20.10.2012 12:27:40

VladimirPivovar
Завсегдатай
Зарегистрирован: 26.04.2011
Сообщений: 31

MyISAM BTREE индекс

У меня загружено и проиндексировано 2 млрд записей в таблице типа MyISAM (BTREE)

Необходимо каждый день добавлять новые записи.

Можно смело добавлять новые записи? Не приведет ли вставка к переиндексации всей таблицы?

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

P.S.

Не придется ли заводить временную таблицу и ее индексировать (дельта-индекс) для вставки данных за день, затем отключать индекс в основной таблице, вставлять данные из временной а потом опять включать?

Неактивен

 

#2 20.10.2012 12:41:42

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: MyISAM BTREE индекс

Можно добавлять записи - переиндексации всей таблицы не будет. BTREE-алгоритм достаточно эффективен для вставки.

С другой стороны, вставка в непустую таблицу будет существенно медленнее, чем вставка в пустую. Индекс на временной таблице не поможет. Попробуйте LOAD DATA INFILE, в этой процедуре реализован специальный алгоритм для bulk-insert.

Неактивен

 

#3 20.10.2012 13:03:32

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: MyISAM BTREE индекс

Как я понимаю, в случае медленной вставки можно попробовать горизонтальный шардинг - то есть разбить эту здоровую таблицу на несколько разных с такой же структурой по какому-то критерию (если он есть вообще, такой критерий - чтобы разбиение было более-менее равномерное). В своё время мне приходило с сетевых железок по несколько сотен миллионов записей в сутки - и если бы я их все хранил в одной таблице, то в таблице за год накопилось бы столько данных, что вставка занимала бы просто огромное время. Я и хранил записи за каждые сутки в отдельной таблице (таблицы назывались 2010_01_01, 2010_01_02 ...). Просто в этом случае нужно на стороне клиента проследить, чтобы в зависимости от нужных суток обращение за данными шло в нужную таблицу.

Приходит еще в голову партиционирование, но в топике http://sqlinfo.ru/forum/viewtopic.php?id=2264 освещены подводные камни, так что шардинг, думаю, всё же лучше, если скорость вставки перестаёт устраивать.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 25.10.2012 03:54:49

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: MyISAM BTREE индекс

VladimirPivovar написал:

У меня загружено и проиндексировано 2 млрд записей в таблице типа MyISAM (BTREE)

Необходимо каждый день добавлять новые записи.

Переиндексации быть не должно. Если не трудно расскажите о самих данных и о том что вы с ними делаете немного поподробнее?

Неактивен

 

Board footer

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