У нас есть база данных InnoDB, которая составляет около 70 ГБ, и мы ожидаем, что она вырастет до нескольких сотен ГБ в ближайшие 2-3 года. Около 60% данных относятся к одной таблице. В настоящее время база данных работает достаточно хорошо, так как у нас есть сервер с 64 ГБ ОЗУ, поэтому почти вся база данных вписывается в память, но была обеспокоена будущим, когда объем данных будет значительно больше. Прямо сейчас рассматривался какой-то способ разделения таблиц (особенно тот, на который приходится большая часть данных), и Im теперь задается вопросом, что было бы лучшим способом сделать это.
Параметры, о которых я сейчас знаю,
- Использование MySQL Partitioning, которое поставляется с версией 5.1
- Использование какой-либо сторонней библиотеки, которая инкапсулирует разделение данных (например, спящий режим)
- Внедрение этого в нашем приложении
Наше приложение построено на J2EE и EJB 2.1 (мы надеемся, что однажды перейдем на EJB 3).
Что бы вы предложили?
EDIT (2011-02-11):
Просто обновление: в настоящее время размер базы данных составляет 380 ГБ, размер данных нашей "большой" таблицы составляет 220 ГБ, а размер его индекса - 36 ГБ. Таким образом, пока вся таблица больше не вписывается в память, индекс делает.
Система все еще работает нормально (все еще на одном оборудовании), и мы все еще думаем о разделении данных.
EDIT (2014-06-04): Еще одно обновление: размер всей базы данных составляет 1,5 ТБ, размер нашей "большой" таблицы - 1,1 ТБ. Мы обновили наш сервер до 4-процессорной машины (Intel Xeon E7450) с 128 ГБ оперативной памяти. Система все еще работает нормально. То, что мы планируем сделать дальше, - это разместить нашу большую таблицу на отдельном сервере базы данных (мы уже внесли необходимые изменения в наше программное обеспечение), одновременно обновляя новое оборудование с 256 ГБ оперативной памяти.
Эта установка рассчитана на два года. Затем нам нужно либо наконец приступить к внедрению решения для ошпаривания, либо просто купить серверы с 1 ТБ ОЗУ, которые должны удерживать нас в течение некоторого времени.
EDIT (2016-01-18):
С тех пор мы разместили нашу большую таблицу в своей собственной базе данных на отдельном сервере. В настоящее время размер этой базы данных составляет около 1,9 ТБ, размер другой базы данных (со всеми таблицами, кроме "большой" ) составляет 1,1 ТБ.
Текущая настройка аппаратного обеспечения:
- HP ProLiant DL 580
- 4 x Intel (R) Xeon (R) CPU E7- 4830
- 256 ГБ оперативной памяти
В этой настройке производительность прекрасна.