Назад | Перейти на главную страницу

В чем преимущество разделения таблицы mysql на более мелкие без физического распределения?

Я видел такой дизайн в своей компании.

Большая таблица mysql разбита на десятки меньших по идентичной схеме на том же сервере в той же базе данных, без какого-либо физического распределения, нет innodb_file_per_table, без разделения и т. д. Данные распределяются равномерно, а шаблон доступа для чтения / записи единообразен для всех таблиц.

В чем преимущество этого с точки зрения производительности?

Если ваши чтения / записи распределены равномерно, я думаю, что нет преимущества в производительности. Если бы вы много писали и писали, например, только в 2-3 таблицы, вы могли бы извлечь выгоду (см. Слайды 28-34 этот презентация).

Несколько идей об эксплуатационных преимуществах:

  • Будет проще масштабировать / сегментировать, если будет слишком много данных или слишком много трафика.
  • В зависимости от того, как создаются ваши резервные копии, восстановить что-либо будет быстрее, если вы сможете определить, в какой из таблиц были обнаружены потерянные данные.

Редактировать: Еще одна мысль: если запросы выполняются параллельно, может быть преимущество в производительности - вы можете получить больше операций ввода-вывода в секунду с вашего RAID и улучшить локализацию многоядерной системы, если рабочий набор умещается в памяти.