Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
поставили задачу секционировать таблицу на партиции, но загвоздка в том, что на эту таблицу через FK ссылаются полста других таблиц хочу обсудить такой путь решения: для работы FK такой костыль: 1. создать промежуточную таблицу для хранения значения PK из основной таблицы (эта таблица не будет разбиваться на партиции) + 2. целостность этой промежуточной таблицы сделать с помощью тригеров на изменение/вставку/делет в основной таблице 3. заполнить текущую таблицу значениями в ручную 4. все внешние ключи перенастроить на эту промежуточную таблицу и далее разбиваем основную таблицу на партиции так же можно немного улучшить: промежуточную таблицу дополнить полем "название таблицы партиции" - что бы точно знать в какой партиции лежит значение, вдруг пригодится какие еще есть способы сохранить и FK и сделать партицирование, и какие могут быть подводные камни у текущего решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 10:34 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
Legushkaпоставили задачу секционировать таблицу на партиции, но загвоздка в том, что на эту таблицу через FK ссылаются полста других таблиц Если что у PostgreSQL есть понятие "наследование таблиц". Почитайте. Может быть вам поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 11:02 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, вам тоже будет наверное интересно что нельзя напрямую наследовать если на таблицу есть внешние FK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 11:14 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
проблема какрас не в том как наследовать, создавать переносить партиции а в том что бы сохранить функционал FK, и при разбивке система не ругалась на наличие FK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 11:17 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
Legushkaпроблема какрас не в том как наследовать, создавать переносить партиции а в том что бы сохранить функционал FK, и при разбивке система не ругалась на наличие FK Понятно. Я думал, что у вас немного другая задача, а не с явным FK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 11:52 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
Legushka, одно из решений -- партицровать по одному и тому же полю как голову, так и все подчиненные. только для единичных ссылок. т.е. кооптировать поле партицирования (если не пк) из головной во все зависимые. не сработает при множественности связей. (напр. люди в разных ролях ссылаются из одной записи "документ" на разные партиции головной). ------ пс . в центр звезды можно пихать поле партицирования -- для целей оптимизации. но много хенджоба будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 13:18 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
хотя самое популярное решение , какое видел , -- отказаться от поддержки целостности посредством FK, и пытаться поддержать её кодом (палка о 2--х концах) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 13:21 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, qwwq а как вы считаете у костыля предложенного выше будет шанс на успех? или могут быть подводные камни об которые я еще не спотыкался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 13:50 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
qwwqхотя самое популярное решение , какое видел , -- отказаться от поддержки целостности посредством FK, и пытаться поддержать её кодом (палка о 2--х концах) Ага, если нужна Referential Integrity + секционирование — много триггеров, pgsql кода и багов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 14:25 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
vyegorov, много кода страшно только по одной причине: я не могу повлиять на разработку за пределами текущей основной таблицы, например навешать тригеры на зависящие от моей основной таблицы там рулят другие отделы, и они сами если решили что должна быть целостность то навешиывают FK иначе могут и не делать мне главное предоставить возможность создавать FK на мою таблицу и быстро отдавать данные которые здесь и сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 14:51 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
Legushka, Какой знакомый проэхт ))) с медициной связано ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 15:28 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
Legushka, а какой размер у таблицы (в ГБ)? может обойтись можно без партициирования? оно не всегда полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 16:30 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
Legushka…там рулят другие отделы… Когда в базе данных нет хозяина — человека, который бы взял на себя ответственность за модель данных и соблюдение стандартов наименования, целостности, бэкапов, разработки и т.д. — жди беды! Терпеть ненавижу коллективную ответственность... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 22:36 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
Legushkaпоставили задачу секционировать таблицу на партиции, но загвоздка в том, что на эту таблицу через FK ссылаются полста других таблиц хочу обсудить такой путь решения: для работы FK такой костыль: 1. создать промежуточную таблицу для хранения значения PK из основной таблицы (эта таблица не будет разбиваться на партиции) + 2. целостность этой промежуточной таблицы сделать с помощью тригеров на изменение/вставку/делет в основной таблице 3. заполнить текущую таблицу значениями в ручную 4. все внешние ключи перенастроить на эту промежуточную таблицу и далее разбиваем основную таблицу на партиции так же можно немного улучшить: промежуточную таблицу дополнить полем "название таблицы партиции" - что бы точно знать в какой партиции лежит значение, вдруг пригодится какие еще есть способы сохранить и FK и сделать партицирование, и какие могут быть подводные камни у текущего решения? Не может быть такой задачи или задача некорректна. Для решения какой именно проблемы предлагается партиционировать таблицу? Единственный вариант это сделать нормально - отпартиционировать все полста других таблиц по тому же критерию (но там с планами запросов будет много веселья). -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 00:07 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
всем стала интересна сама задача, где она, кем инициирована и тд. а не путь ее решения. во всех источниках, которые я находил по партицированию было написано что нельзя партицировать таблицу, если на нее есть FK я хочу только зачернкуть нельзя и обсудить это решение. но придется видимо отвечать на все доп вопросы не относящиеся к решению "нельзя". =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 18:40 |
|
||
|
секционирование таблицы на которую есть внешние FK
|
|||
|---|---|---|---|
|
#18+
Legushka, партицирование само-по-себе не очень разумная операция. оправдана она обычно при таких размерах таблицы, когда уже не очень оправданы FK на неё. но вы не стесняйтесь. поддержание "центра звизды" триггерами я видел. осталось пристроить к ней (звизде) fk, скорее всего -- differable -- и посмотреть, чем вся эта жуть чревата. как сделаете -- нагрузите и отпишитесь. ps если не секрет -- у вас там всюду ON DELETE RESTRICT , или и CASCADE бывают ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 18:55 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39284988&tid=1997074]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
200ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 301ms |

| 0 / 0 |
