Разделение базы данных может быть чрезвычайно эффективным даже до того, как размер вашей базы данных достигнет нескольких ТБ. Основная причина, которую мы обнаружили, заключается в том, что соотношение памяти и процессора к диску заметно меняется, и продукты СУБД, такие как MySQL, действительно превосходно помещают в память самые последние использованные индексы и данные.
При возникновении проблемы с разделением данных этот метод может помочь.
- Параллельный запрос (мы называем это запросами "Go Fish"). Благодаря этой идее вы можете одновременно запрашивать заказы у нескольких шардов и консолидировать результаты. Если все сделано правильно, это может быть очень эффективно.
Для данных, которые не меняются так сильно, мы часто рекомендуем репликацию глобальных таблиц для общих справочных таблиц, но это не очень поможет с чем-то таким активным, как заказы клиентов.
В любом случае, разделение может быть реализовано очень экономически эффективным способом и может масштабироваться линейно для записей, и часто лучше, чем линейно для операций чтения, основываясь на вышеупомянутом.