Следует ли разбить большую таблицу mysql, использовать механизм слияния, master/slave или что-то еще?

Возможно, я слишком рано пошел по пути чрезмерной оптимизации и заблудился. Я записываю все возможные ходы в дереве настольной игры. У меня мало надежд на завершение дерева, так как оно станет таким большим (10^28), но я хочу получить хороший кусок, если это возможно. В ожидании медленных запросов я разбил таблицы на ~50 ветвей дерева с суффиксами, описывающими каждую ветвь.

К сожалению, в моем приложении много операций чтения, записи, обновлений и объединений, поэтому все быстро замедлилось, прежде чем я разделил их. С тех пор я также добавил несколько очень полезных индексов, которые могли бы решить начальную медлительность. Однако по мере развития приложения становится все сложнее переключаться между множеством таблиц с более сложными объединениями. Недавно я слышал об использовании главного подчиненного, а также механизма слияния, чтобы помочь с большими таблицами. Я выбрал неправильное решение своей проблемы или я должен просто выпустить его?

1 ответ

Решение

10^28 строк или что-то еще, прямо скажем, невозможно. Рассчитать стоимость такого большого дискового пространства; это должно вас напугать. Вы должны сосредоточиться на "обрезке" своих деревьев.

PARTITIONing выглядит заманчиво, но по своей сути не обеспечивает какого-либо выигрыша в производительности (за редким исключением). То же самое для ручного разбиения на 50 таблиц. MERGE это просто старый вариант PARTITION, Репликация может помочь для масштабирования чтения. Разделение (разделение данных на несколько машин) может помочь, но увеличивает стоимость и сложность - и все равно не даст вам 10^28 чего-либо.

Если вы предоставите SHOW CREATE TABLE и некоторые вопросы, мы можем обсудить методы оптимизации, бит, индексации и т. д. Это может вам помочь.

Используете ли вы 64-битный BIGINT UNSIGNED для отслеживания некоторых вещей на доске 8х8? И используя булеву арифметику для манипулирования ими? В некоторых ситуациях это может значительно уменьшить дисковое пространство, количество необходимых запросов и т. Д.

Другие вопросы по тегам