digital-garden/_inbox/Партиционирование в БД.md

49 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
tags:
- зрелость/🌱
date:
- - 2024-06-20
zero-link:
- "[[00 Базы Данных]]"
- "[[00 HighLoad]]"
parents:
linked:
- "[[Шардирование в БД]]"
---
## Тезисы
- Данные разделяются по какому-то признаку.
- Разделенные данные физически лежат раздельно. Разные таблицы. Но все данные остаются в пределах одного сервера.
- Прирост производительности будет только в том случае, если данные для выполнения запроса будут хранится в одной партиции. Поэтому важно правильно определить ключ партиционирования
***
Приложение работает неограниченное количество времени, с каждым днем количество данных в БД увеличивается. При возрастании объема запросы начинают отрабатывать медленнее, в таком случае возникает необходимость в применении партиционирования.
На некоторых докладах партиции назывались вертикальным [шардированием](Шардирование%20в%20БД.md).
**Минусы:**
- Некоторые запросы могут замедлиться. Для выполнения запросов, в которых нам нужно сходить в несколько партиций.
- Так как данные лежат на одном сервере, то если уперлись в производительность диска, партиционирование не поможет.
- Перестройка партиций дорогостоящая операция.
**Плюсы:**
- Простая реализация. Разработчик продолжает обращаться к таблице, а СУБД понимает в какую партицию ей стоит идти.
- Некоторые типы запросов может ускорить за счет уменьшения объема данных в партиции.
**Основные типы разделения:**
- По ключу
- По диапазону
- По списку
- По хэш значению поля
**Советы:**
- Лучше не использовать BETWEEN для разбивки на партиции. Так как непонятно в какую партицию попадут пограничные значения
- Не стоит создавать партиции одной таблицы по разным полям.
Особенности СУБД:
- [Партиционирование в PostgreSQL](Партиционирование%20в%20PostgreSQL.md)
Когда стоит использовать?
- Для отделения исторических данных от операционных
Пример создания в MySQL: ![](Pasted%20image%2020240620214648.png)