|
Function Postgresql
|
|||
---|---|---|---|
#18+
Друзья,подскажите как написать функцию. У меня есть список из 135 индексов,я хочу сделать функцию в которую буду подавать этот список индексов потом циклом проходиться по len(списка триггеров) и возвращать в случае успешного реиндекса что такое то количество перестроенно в случае не успешного есть ошибки и выводить имена индексов на которых происходят ошибки,и выполнять это раз в неделю ночью. Буду благодарен если подскажете как такое оформить ну или хотя бы укажете где подробно разобрано с типами возможных переменных циклами,которые хавает postgres,я понимал бы как написать такое на каком нибудь питоне но вот тут не совсем ясно учитывая тонкости синтаксиса.( Спасибо заранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2017, 10:38 |
|
Function Postgresql
|
|||
---|---|---|---|
#18+
Strippett, Смотрите на `FOR var IN query LOOP ... END LOOP;` конструкцию: https://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-RECORDS-ITERATING ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2017, 11:07 |
|
Function Postgresql
|
|||
---|---|---|---|
#18+
1. лучше делать цыкл в клиенте. (вариант -- дергать автономии через db_link). чтобы каждый отдельный реиндекс компактно коммитился. вариант с дблинком хуже -- т.к. он будет держать долгую транзакцию (тут можно БД обслуживания сделать отличной от обслуживаемой БД -- это поможет). 2. как дергать структуры /описания индексов по именам -- см pg_catalog и information_schema https://www.postgresql.org/docs/current/static/information-schema.html и ф-ии а-ля pg_get_indexdef(index_oid) отсюда: https://www.postgresql.org/docs/current/static/functions-info.html 3.всё остальное -- см тут: https://www.postgresql.org/docs/current/static/server-programming.html ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2017, 11:18 |
|
Function Postgresql
|
|||
---|---|---|---|
#18+
Спасибо,пошёл изучать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2017, 12:45 |
|
Function Postgresql
|
|||
---|---|---|---|
#18+
qwwq, Ну тогда совсем лучше взять что-то готовенькое, что умеет индексы пересоздавать: https://github.com/dataegret/pgcompacttable ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2017, 13:33 |
|
Function Postgresql
|
|||
---|---|---|---|
#18+
vyegorovqwwq, Ну тогда совсем лучше взять что-то готовенькое, что умеет индексы пересоздавать: https://github.com/dataegret/pgcompacttable в принципе -- да но самому сделать это руками -- полезнее, чтобы почуять проблемности пж напр reindex не м.б. конкурентным а конкурентное индексирование с разыменовыванием (как кажется делает максимов компактор) требует подробных плясок с бубнами, в т.ч. с невалидными индексами [при прерывании], и объектами типа пк и уникъю. всё это полезно единожды пощупать самому. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2017, 14:54 |
|
Function Postgresql
|
|||
---|---|---|---|
#18+
qwwqvyegorovqwwq, Ну тогда совсем лучше взять что-то готовенькое, что умеет индексы пересоздавать: https://github.com/dataegret/pgcompacttable в принципе -- да но самому сделать это руками -- полезнее, чтобы почуять проблемности пж напр reindex не м.б. конкурентным а конкурентное индексирование с разыменовыванием (как кажется делает максимов компактор) требует подробных плясок с бубнами, в т.ч. с невалидными индексами [при прерывании], и объектами типа пк и уникъю. всё это полезно единожды пощупать самому. Да наверное так. Я вообще рекомендую руками проделать эту процедуру несколько раз прежде чем начинать компактор использовать чтобы понимать где там подводные камни и как оно себя ведет. Заодно и SQL постгресовый освоится лучше. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2017, 17:29 |
|
|
start [/forum/topic.php?fid=53&fpage=77&tid=1996663]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 141ms |
0 / 0 |