Огромная база данных MySQL - что нужно и что нельзя делать? - PullRequest
3 голосов
/ 11 февраля 2011

Мне интересно создать огромную базу данных (100 миллионов записей), используя MySQL, чтобы хранить данные о запасах с интервалом в 1 минуту. База данных будет содержать данные для 5000 акций, скажем, за 10 лет.

Две проблемы:

(1) В прошлом у меня была проблема «медленных вставок», то есть в начале скорость вставок была хорошей, но поскольку таблица заполнялась миллионами записей, вставка становилась медленной ( слишком медленно!). В то время я использовал Windows, а теперь я использую Linux - это должно измениться?

(2) Мне известны методы индексации, которые помогут быстрее выполнять запросы (извлечение данных). Дело в том, есть ли способ ускорить вставки? Я знаю, что при вставке можно отключить индексирование, но затем «создание» индексов после вставки (для 10 миллионов записей!) Также отнимает уйму времени. любой совет по этому поводу?

Есть ли что-нибудь другое? Заранее спасибо за любую помощь.

Ответы [ 3 ]

2 голосов
/ 18 февраля 2011

Это зависит от того, какой тип индекса вам нужен и как вы генерируете данные. Если вы удовлетворены одним индексом по времени, просто придерживайтесь этого, а когда вы генерируете данные, продолжайте вставку в порядке возрастания (относительно времени вставки, для которого у вас есть индекс). Таким образом, переупорядочение требуется минимально во время вставки. Кроме того, рассмотрите возможность разделения для оптимизации ваших запросов. Это может дать вам резкое улучшение производительности. Использование столбца с автоинкрементом может помочь в быстрой индексации, но тогда у вас не будет индекса вовремя, если столбец с автоинкрементом является единственным индексом. Убедитесь, что вы используете механизм хранения innodb для хорошей производительности. Если вы правильно настроите свой движок базы данных в Linux и сохраните простой дизайн, он будет плавно масштабироваться без особых проблем. Я думаю, что огромные требования к данным, о которых вы говорите, не так сложны, как кажется на первый взгляд. Однако, если вы планируете выполнять агрегатные запросы (с объединением таблиц), тогда это более сложная задача.

0 голосов
/ 18 марта 2011

Подумайте об использовании SSD-диска (или массива) для хранения ваших данных, особенно если вы не можете позволить себе создать коробку с гигабайтами памяти.Все об этом должно быть быстрее.

0 голосов
/ 12 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...