Sobes.tech
Back to questions
Middle
3

Расскажи про партиционирование таблиц в PostgreSQL. Использовали ли у себя?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Партиционирование таблиц в PostgreSQL — это способ разбить большую таблицу на несколько меньших, называемых партициями, чтобы улучшить производительность и упростить управление данными.

Основные виды партиционирования:

  • Диапазон (range): данные разбиваются по диапазонам значений, например, по дате.
  • Список (list): данные разбиваются по конкретным значениям, например, по региону.
  • Хэш (hash): данные распределяются по партициям с помощью хэш-функции.

Преимущества:

  • Быстрее запросы, которые касаются только части данных.
  • Упрощается архивирование и удаление старых данных.
  • Улучшается параллелизм при обработке запросов.

Пример создания партиционированной таблицы по диапазону дат:

CREATE TABLE orders (
    id serial,
    order_date date,
    amount numeric
) PARTITION BY RANGE (order_date);

CREATE TABLE orders_2023 PARTITION OF orders
    FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');

CREATE TABLE orders_2024 PARTITION OF orders
    FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');

В моей практике использовали партиционирование для таблиц с логами и историей транзакций, чтобы ускорить выборки и упростить удаление устаревших данных.