tgoop.com/smart_data_channel/152
Last Update:
Сегодня хочу рассказать про партиционирование и индексы в базах данных.
Партиционирование - это метод разделения одной большой таблицы (родительской) на много маленьких таблиц (партиций).
Разделение родительской таблицы происходит по заданному условию: например, у нас есть таблица с заказами, каждый заказ произошёл в определённую дату. Мы можем партиционировать эту таблицу по дате заказа.
Когда использовать:
- для более гибкого использования физического хранилища данных. Например, мы можем хранить отдельные партиции на разных серверах и для хранения редко запрашиваемых данных использовать более дешёвую технологию хранения на отдельном сервере;
- для гибкого управления данных в таблицах. Мы можем быстро добавлять и удалять данные на уровне партиций;
- для ускорения выполнения SQL-запросов к таблице. Партиционирование может существенно повысить скорость запросов, так как движок будет сканировать отдельные партиции, в которых лежат нужные для запроса данные, а не всю таблицу.
Вернёмся к нашему примеру с датой заказа: например, у нас есть таблица orders, и мы пишем запрос к ней, запрашивая только заказы за 2021-12-15:
SELECT * FROM orders WHERE order_date = '2021-12-15';
Так как наша таблица партиционирована по дате заказа, движок просканирует только одну партицию "2021-12-15", а не всю таблицу (в случае, если партиционирование не используется). Скорость выполнения такого запроса вырастет во много раз.
Когда не использовать: не нужно использовать партиционирование на небольших таблицах. Если говорить о традиционных реляционных СУБД, создание и поддержка партиций является не самой тривиальной задачей, и, если таблица небольшая, выгода от партиций будет намного меньше затрат на их создание и поддержку. Более того, на небольших таблицах партиционирование может даже снижать производительность запросов.
BY Smart Data
Share with your friend now:
tgoop.com/smart_data_channel/152