172 похожих чатов

Привет! Нужна помощь-консультация с партиционированием таблиц. Собственно, задача разбить на партиции

большую табличку в postgresql.
Я так понимаю, есть два варианта:
- Создать копию таблицы через create table partition by, после чего создавать партиции
- Сразу создавать партиции через наследование (INHERITS).

Отсюда есть вопросы:
1) Партиции - это полноценные таблицы в БД, которые отжирают место на диске?
2) Если использовать наследование, то данные в партициях будут являться копиями или нет? То есть в оригинальной таблице они останутся? Это важно, так как если они просто копируются, то получается по итогу создания партиций место на диске сильно уменьшится, так как по сути произойдет полное копированиие таблицы
3) Я так понимаю, все манипуляции есть смысл сначала обкатать на бэкапе, верно?
4) Если юзать первый метод партиционирования (классический), то при копировании данных может закончиться место. Как лучше копировать данные и сразу их удалять из оригинальной таблицы? Батчи? Или есть какой-то более красивый путь, так как удалять данные - как то стремно всегда

4 ответов

14 просмотров

1. да, полноценные таблицы 2. надо уже встроенное декларативное использовать, а не наследование 3. конечно! 4. надо так поступать: выбрать точку перехода (день, граница недели или месяца); создать новую головную таблицу с партициями вперёд от точки; в текущей таблице сделать CHECK CONSTRAINT и NOT NULL для колонки партиционирования; подцепить старую таблицу к новой как “большую историческую”; постепенно оптимизировать большую таблицу удобным способом

3) нет вы что, сразу на продакшене в прайм тайм)

Павел Соколов
2. А почему?

более жесткий контроль над схемой; партиционированные индексы; возможности оптимизатора; автоматическое направление строк в нужную партицию (без триггеров). доступно во всех поддерживаемых версиях Postgres-а. наследование использовалось только для партиций. в данный момент надо сразу декларативное начинать использовать

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Привет, запускаю werf в dind в k8s, получаю ошибку на этапе build/beforeSetup: /.werf/stapel/embedded/bin/bash: /.werf/scripts/5898bdfe5214357d3706b879cc8d3d78460fb379607cbd...
florius0
4
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Подскажите, можно ведь комбинировать запись данных в один и тот же Stream через TFileStream и через TCompressionStream поочерёдно? Ну т.е. часть данных мне нужно сжать, часть ...
notme
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ребят, кто сталкивался с тем, что Electron.js не разворачивает билд React.js-приложения? Голый body в чёрном цвете, как и должно быть, но остального - нет. Билд работает исп...
..
6
Карта сайта