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

49 lines
3.2 KiB
Markdown
Raw Permalink Normal View History

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