Добавить в корзинуПозвонить
Найти в Дзене
CODERIKK

🔹 Партиционирование таблиц: ускоряем большие таблицы

🔹 Как партиционирование помогает улучшить производительность запросов? 🔸 Партиционирование (partitioning) уменьшает объём данных, которые нужно читать: вместо полного скана таблицы запросы читают только релевантные партиции — это снижает I/O и ускоряет обработку. 🔸 range — хорош для временных рядов: разделяйте по дате, чтобы старые партиции можно было быстро архивировать/удалять без влияния на свежие данные. 🔸 hash — полезен для равномерного распределения данных по партициям, когда нет естественного диапазона; уменьшает «горячие» партиции при высокой конкурентности. 🔸 Планировщик использует partition pruning для query optimization: если условие WHERE соответствует ключу партиции, он исключит остальные партиции и скан будет быстрым. CREATE TABLE events (dt date, data text) PARTITION BY RANGE (dt); CREATE TABLE events_2026 PARTITION OF events FOR VALUES FROM ('2026-01-01') TO ('2027-01-01'); SELECT * FROM events WHERE dt >= '2026-06-01' AND dt < '2026-06-30'; -- planner прочита

🔹 Партиционирование таблиц: ускоряем большие таблицы

🔹 Как партиционирование помогает улучшить производительность запросов?

🔸 Партиционирование (partitioning) уменьшает объём данных, которые нужно читать: вместо полного скана таблицы запросы читают только релевантные партиции — это снижает I/O и ускоряет обработку.

🔸 range — хорош для временных рядов: разделяйте по дате, чтобы старые партиции можно было быстро архивировать/удалять без влияния на свежие данные.

🔸 hash — полезен для равномерного распределения данных по партициям, когда нет естественного диапазона; уменьшает «горячие» партиции при высокой конкурентности.

🔸 Планировщик использует partition pruning для query optimization: если условие WHERE соответствует ключу партиции, он исключит остальные партиции и скан будет быстрым.

CREATE TABLE events (dt date, data text) PARTITION BY RANGE (dt);

CREATE TABLE events_2026 PARTITION OF events FOR VALUES FROM ('2026-01-01') TO ('2027-01-01');

SELECT * FROM events WHERE dt >= '2026-06-01' AND dt < '2026-06-30';

-- planner прочитает только партиции за 2026

📚 Выбирайте range для времени, hash для равномерности; проектируйте ключ партиции под реальные WHERE — это главная оптимизация.

#CODERIKK #SQL #Senior

➡️ Мы в Telegram - Сетке - ВК

Буду рад вашей реакции здесь⬇️