Повернутися до всіх запитань

Що таке SQL Partitioning і які проблеми він вирішує?

Devs Hive

Devs Hive

Зустрічали на інтервʼю: 1 користувач

Partitioning — це спосіб розділити одну велику таблицю на декілька менших частин (partitions), щоб базі даних було простіше працювати з великою кількістю записів.

Уявімо, що ми розробляємо банківський застосунок, який зберігає всі транзакції користувачів у таблиці transactions.

Щодня з'являються сотні тисяч нових транзакцій, і через декілька років таблиця містить уже декілька мільйонів записів.

При цьому найчастіше користувачі переглядають транзакції лише за останній місяць.

Як тут допоможе Partitioning?

Замість того щоб зберігати всі транзакції в одній величезній таблиці, ми можемо розділити її на частини за місяцями:

  1. transactions_january — транзакції за січень.
  2. transactions_february — транзакції за лютий.
  3. transactions_march — транзакції за березень.

Тепер, коли користувач захоче переглянути транзакції за лютий, база даних зможе звернутися лише до відповідної частини таблиці, не перевіряючи решту.

Цей механізм називається Partition Pruning.

При цьому для розробника все виглядає як одна звичайна таблиця transactions. База даних сама визначає, у яку частину записувати нові дані та звідки їх читати.

Які бувають типи Partitioning?

У PostgreSQL є три основні типи:

  1. Range — розділення за діапазонами. Наприклад, транзакції за місяцями або роками.
  2. List — розділення за конкретними значеннями. Наприклад, замовлення за країнами: Україна, Польща, Румунія.
  3. Hash — розподіл записів між частинами на основі хешу певного поля, наприклад user_id.

Чи завжди Partitioning пришвидшує запити?

Ні. Якщо запит не дозволяє визначити потрібну частину таблиці, базі даних усе одно може знадобитися пройтися по всіх partitions.

Крім того, Partitioning ускладнює структуру бази даних, тому його не варто використовувати без потреби (як і будь-який інструмент в програмуванні).

Отже, Partitioning — це спосіб організувати зберігання великих обсягів даних, який може пришвидшити окремі запити та спростити обслуговування великих таблиць.

Зустрічав на інтервʼю?

Повʼязані питання

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!