@beduin01

Позволяют ли партишены делать такое?

Почитал документацию. Но остались вопросы. У меня есть большая БД которую нужно ускорить т.к. есть тормоза при вставке новых данных (тестировал с индексами и без).

В документации показаны примеры. Когда создается базовая таблица table_base и дальше от нее создаются партишены, допустим по дате вида: table_base_2015, table_base_2016, table_base_2017, table_base_2018 и тд.

И дальше в момент Insert'a нужно указать правильную таблицу для данных (я же правильно понял?) INSERT INTO table_base_2018 ...

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

Вопрос в следующем. Можно ли создать партишен под названием
table_base_latest куда бы попадали данные только за последние 365 дней, а остальные а остальные складирвоались без в какой-нибудь table_base_tail который бы содержал все оставшиеся данные?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 3
@rPman
Вставка данных без индексов должна работать максимально быстро, у вас что, на чтение очень много запросов?
p.s. диск хоть ssd?

Чтобы partitioning ускоряло работу, нужно чтобы условие разделения данных по партициям делило нагрузку, в идеале развномерно, а так же сами файлы таблейспейс размещались на разных физических устройствах, чтобы нагрузка на одни секции не затрагивало скорость работы с другими

table_base_latest куда бы попадали данные только за последние 365 дней, а остальные а остальные складирвоались без в какой-нибудь table_base_tail который бы содержал все оставшиеся данные?
на сколько я знаю штатный инструмент это не умеет, ведь данные придется как то перемещать между партициями

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

Имхо 'овчинка не стоит выделки', точнее очень мало случаев когда геморой реализации даст адекватное повышение производительности.
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
Можно ли создать партишен ... куда бы попадали данные только за последние 365 дней

Нет, динамические границы раздела - такое в принципе невозможно.

В документации показаны примеры. Когда создается базовая таблица table_base и дальше от нее создаются партишены
Не лезьте в высокие материи, не зная основ. Начните с самого обычного RANGE PARTITIONING. Одна таблица - куча разделов, и никаких надтаблиц.
Ответ написан
@galaxy
И дальше в момент Insert'a нужно указать правильную таблицу для данных (я же правильно понял?) INSERT INTO table_base_2018

Неправильно понял. Вставлять можно (и нужно) в главную (можно и в партиции - но зачем?).

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

У меня есть большая БД которую нужно ускорить т.к. есть тормоза при вставке новых данных (тестировал с индексами и без).

Ускорить вставку партицирование не поможет, если партиции на одном физическом диске (замедлить вот может).
Партицирование может пригодиться в следующих случаях:
- выборка с условием по колонке партицирования (чтобы сканировать меньше данных)
- удаление данных большими блоками (например, исторических данных за прошлые годы).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы