9.26. ФÑнкÑии Ð´Ð»Ñ ÑиÑÑемного админиÑÑÑиÑованиÑ
- 9.26.1. ФÑнкÑии Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑией
- 9.26.2. ФÑнкÑии Ð´Ð»Ñ Ð¿ÐµÑедаÑи Ñигналов ÑеÑвеÑÑ
- 9.26.3. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑезеÑвнÑм копиÑованием
- 9.26.4. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾ÑÑÑановлением
- 9.26.5. ФÑнкÑии ÑÐ¸Ð½Ñ ÑонизаÑии Ñнимков
- 9.26.6. ФÑнкÑии ÑепликаÑии
- 9.26.7. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑами баз даннÑÑ
- 9.26.8. ФÑнкÑии обÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов
- 9.26.9. ФÑнкÑии Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¾Ð±ÑÑнÑми Ñайлами
- 9.26.10. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекомендаÑелÑнÑми блокиÑовками
- 9.26.2. ФÑнкÑии Ð´Ð»Ñ Ð¿ÐµÑедаÑи Ñигналов ÑеÑвеÑÑ
ФÑнкÑии, опиÑаннÑе в ÑÑом Ñазделе, пÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ ÐºÐ¾Ð½ÑÑÐ¾Ð»Ñ Ð¸ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑеÑвеÑом PostgreSQL.
9.26.1. ФÑнкÑии Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑией
РТаблиÑе 9.82 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ ÑÑнкÑии, позволÑÑÑие полÑÑиÑÑ Ð¸ измениÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов конÑигÑÑаÑии вÑполнениÑ.
ТаблиÑа 9.82. ФÑнкÑии Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑией
ФÑнкÑÐ¸Ñ current_setting вÑдаÑÑ ÑекÑÑее знаÑение паÑамеÑÑа setting_name. Ðна ÑооÑвеÑÑÑвÑÐµÑ ÑÑандаÑÑной SQL-команде SHOW. ÐÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ:
SELECT current_setting('datestyle');
current_setting
-----------------
ISO, MDY
(1 row) ÐÑли паÑамеÑÑа Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ setting_name неÑ, ÑÑнкÑÐ¸Ñ current_setting вÑдаÑÑ Ð¾ÑибкÑ, еÑли ÑолÑко дополниÑелÑно не пеÑедан паÑамеÑÑ missing_ok Ñо знаÑением true.
set_config ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑа setting_name знаÑение new_value. ÐÑли паÑамеÑÑ is_local Ñавен true, новое знаÑение бÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ ÑолÑко в ÑамкаÑ
ÑекÑÑей ÑÑанзакÑии. ЧÑÐ¾Ð±Ñ ÑÑо знаÑение дейÑÑвовало на пÑоÑÑжении ÑекÑÑего ÑеанÑа, ÐµÐ¼Ñ Ð½Ñжно пÑиÑвоиÑÑ false. ÐÑа ÑÑнкÑÐ¸Ñ ÑооÑвеÑÑÑвÑÐµÑ SQL-команде SET. ÐÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ:
SELECT set_config('log_statement_stats', 'off', false);
set_config
------------
off
(1 row)9.26.2. ФÑнкÑии Ð´Ð»Ñ Ð¿ÐµÑедаÑи Ñигналов ÑеÑвеÑÑ
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.83, позволÑÑÑ Ð¿ÐµÑедаваÑÑ ÑпÑавлÑÑÑие ÑÐ¸Ð³Ð½Ð°Ð»Ñ Ð´ÑÑгим ÑеÑвеÑнÑм пÑоÑеÑÑам. ÐÑзÑваÑÑ ÑÑи ÑÑнкÑии по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но доÑÑÑп к ним можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм командой GRANT, кÑоме Ñвно оÑмеÑеннÑÑ
иÑклÑÑений.
ТаблиÑа 9.83. ФÑнкÑии Ð´Ð»Ñ Ð¿ÐµÑедаÑи Ñигналов ÑеÑвеÑÑ
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| boolean | ÐÑменÑÐµÑ ÑекÑÑий запÑÐ¾Ñ Ð² обÑлÑживаÑÑем пÑоÑеÑÑе. ÐÑо дейÑÑвие ÑазÑеÑаеÑÑÑ Ð¸ ÑолÑм, ÑвлÑÑÑимÑÑ Ñленами Ñоли, обÑлÑживаÑÑий пÑоÑеÑÑ ÐºÐ¾ÑоÑой заÑÑагиваеÑÑÑ, и ÑолÑм, коÑоÑÑм дано пÑаво pg_signal_backend; однако ÑолÑко ÑÑпеÑполÑзоваÑелÑм ÑазÑеÑено воздейÑÑвоваÑÑ Ð½Ð° обÑлÑживаÑÑие пÑоÑеÑÑÑ Ð´ÑÑгиÑ
ÑÑпеÑполÑзоваÑелей. |
| boolean | ÐаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑеÑвеÑнÑм пÑоÑеÑÑам пеÑегÑÑзиÑÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ |
| boolean | ÐÑокÑÑÑÐ¸Ð²Ð°ÐµÑ Ð¶ÑÑнал ÑообÑений ÑеÑвеÑа |
| boolean | ÐавеÑÑÐ°ÐµÑ Ð¾Ð±ÑлÑживаÑÑий пÑоÑеÑÑ. ÐÑо дейÑÑвие ÑазÑеÑаеÑÑÑ Ð¸ ÑолÑм, ÑвлÑÑÑимÑÑ Ñленами Ñоли, обÑлÑживаÑÑий пÑоÑеÑÑ ÐºÐ¾ÑоÑой пÑеÑÑваеÑÑÑ, и ÑолÑм, коÑоÑÑм дано пÑаво pg_signal_backend; однако ÑолÑко ÑÑпеÑполÑзоваÑелÑм ÑазÑеÑено пÑеÑÑваÑÑ Ð¾Ð±ÑлÑживаÑÑие пÑоÑеÑÑÑ Ð´ÑÑгиÑ
ÑÑпеÑполÑзоваÑелей. |
ÐÐ°Ð¶Ð´Ð°Ñ Ð¸Ð· ÑÑиÑ
ÑÑнкÑий возвÑаÑÐ°ÐµÑ true пÑи ÑÑпеÑном завеÑÑении и false в пÑоÑивном ÑлÑÑае.
pg_cancel_backend и pg_terminate_backend пеÑедаÑÑ ÑÐ¸Ð³Ð½Ð°Ð»Ñ (SIGINT и SIGTERM, ÑооÑвеÑÑÑвенно) ÑеÑвеÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм кодом PID. Ðод акÑивного пÑоÑеÑÑа можно полÑÑиÑÑ Ð¸Ð· ÑÑолбÑа pid пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ pg_stat_activity или пÑоÑмоÑÑев на ÑеÑвеÑе пÑоÑеÑÑÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ postgres (иÑполÑзÑÑ ps в Unix или ÐиÑпеÑÑÐµÑ Ð·Ð°Ð´Ð°Ñ Ð² Windows). Ð Ð¾Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð°ÐºÑивного пÑоÑеÑÑа можно ÑзнаÑÑ Ð² ÑÑолбÑе usename пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ pg_stat_activity.
pg_reload_conf оÑпÑавлÑÐµÑ Ñигнал SIGHUP Ð³Ð»Ð°Ð²Ð½Ð¾Ð¼Ñ ÑеÑвеÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ, коÑоÑÑй командÑÐµÑ Ð²Ñем подÑинÑннÑм пÑоÑеÑÑам пеÑезагÑÑзиÑÑ ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии.
pg_rotate_logfile ÑказÑÐ²Ð°ÐµÑ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑÑ Ð¶ÑÑнала ÑообÑений немедленно пеÑеклÑÑиÑÑÑÑ Ð½Ð° новÑй Ñайл. ÐÑо Ð¸Ð¼ÐµÐµÑ ÑмÑÑл, ÑолÑко когда ÑабоÑÐ°ÐµÑ Ð²ÑÑÑоеннÑй ÑбоÑÑик ÑообÑений, Ñак как без него подпÑоÑеÑÑ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑа жÑÑнала не запÑÑкаеÑÑÑ.
9.26.3. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑезеÑвнÑм копиÑованием
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.84, пÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Â«Ð½Ð° Ñ
одÑ». ÐÑи ÑÑнкÑии нелÑÐ·Ñ Ð²ÑполнÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (за иÑклÑÑением немонополÑнÑÑ
ваÑианÑов pg_start_backup и pg_stop_backup, а Ñакже ÑÑнкÑий pg_is_in_backup, pg_backup_start_time и pg_wal_lsn_diff).
ТаблиÑа 9.84. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑезеÑвнÑм копиÑованием
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| pg_lsn | СоздаÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½ÑÑ ÑоÑÐºÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм) |
| pg_lsn | ÐолÑÑÐ°ÐµÑ ÑекÑÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ ÑбÑоÑа даннÑÑ Ð² жÑÑнале пÑедзапиÑи |
| pg_lsn | ÐолÑÑÐ°ÐµÑ ÑекÑÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² жÑÑнале пÑедзапиÑи |
| pg_lsn | ÐолÑÑÐ°ÐµÑ ÑекÑÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð·Ð°Ð¿Ð¸Ñи в жÑÑнале пÑедзапиÑи |
| pg_lsn | ÐодгоÑÐ°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑеÑÐ²ÐµÑ Ðº ÑезеÑÐ²Ð½Ð¾Ð¼Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм) |
| pg_lsn | ÐавеÑÑÐ°ÐµÑ Ð¼Ð¾Ð½Ð¾Ð¿Ð¾Ð»Ñное ÑезеÑвное копиÑование (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм) |
| setof record | ÐавеÑÑÐ°ÐµÑ Ð¼Ð¾Ð½Ð¾Ð¿Ð¾Ð»Ñное или немонополÑное ÑезеÑвное копиÑование (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм) |
| bool | ÐозвÑаÑÐ°ÐµÑ true в пÑоÑеÑÑе иÑклÑÑиÑелÑного ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ |
| timestamp with time zone | ÐолÑÑÐ°ÐµÑ Ð²ÑÐµÐ¼Ñ Ð·Ð°Ð¿ÑÑка вÑполнÑÑÑегоÑÑ Ð¸ÑклÑÑиÑелÑного ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ |
| pg_lsn | ÐниÑииÑÑÐµÑ Ð¿ÐµÑеклÑÑение на новÑй Ñайл жÑÑнала пÑедзапиÑи (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм) |
| text | ÐолÑÑÐ°ÐµÑ Ð¸Ð· позиÑии в жÑÑнале пÑедзапиÑи Ð¸Ð¼Ñ ÑооÑвеÑÑÑвÑÑÑего Ñайла |
| text, integer | ÐолÑÑÐ°ÐµÑ Ð¸Ð· позиÑии в жÑÑнале пÑедзапиÑи Ð¸Ð¼Ñ ÑооÑвеÑÑÑвÑÑÑего Ñайла и деÑÑÑиÑное ÑмеÑение в нÑм |
| numeric | ÐÑÑиÑлÑÐµÑ ÑазниÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ Ð¿Ð¾Ð·Ð¸ÑиÑми в жÑÑнале пÑедзапиÑи |
pg_start_backup пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿ÑоизволÑнÑÑ Ð·Ð°Ð´Ð°Ð½Ð½ÑÑ Ð¿Ð¾Ð»ÑзоваÑелем меÑÐºÑ ÑезеÑвной копии. (ÐбÑÑно ÑÑо Ð¸Ð¼Ñ Ñайла, в коÑоÑом бÑÐ´ÐµÑ ÑоÑ
Ñанена ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ.) ÐÑи копиÑовании в монополÑном Ñежиме ÑÑа ÑÑнкÑÐ¸Ñ Ð·Ð°Ð¿Ð¸ÑÑÐ²Ð°ÐµÑ Ñайл меÑки (backup_label) и, еÑли еÑÑÑ ÑÑÑлки в каÑалоге pg_tblspc/, Ñайл каÑÑÑ ÑаблиÑнÑÑ
пÑоÑÑÑанÑÑв (tablespace_map) в каÑалог даннÑÑ
клаÑÑеÑа ÐÐ, вÑполнÑÐµÑ Ð¿ÑоÑедÑÑÑ ÐºÐ¾Ð½ÑÑолÑной ÑоÑки, а заÑем возвÑаÑÐ°ÐµÑ Ð² ÑекÑÑовом виде наÑалÑнÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² жÑÑнале пÑедзапиÑи Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑезеÑвной копии. РезÑлÑÑÐ°Ñ ÑÑой ÑÑнкÑии Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½, но еÑли он не нÑжен, его можно пÑоÑÑо игноÑиÑоваÑÑ. ÐÑи копиÑовании в немонополÑном Ñежиме ÑодеÑжимое ÑÑиÑ
Ñайлов вÑдаÑÑÑÑ ÑÑнкÑией pg_stop_backup и должно бÑÑÑ Ð·Ð°Ð¿Ð¸Ñано в аÑÑ
ивнÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð²ÑзÑваÑÑим ÑÑбÑекÑом.
postgres=# select pg_start_backup('label_goes_here');
pg_start_backup
-----------------
0/D4445B8
(1 row) У ÑÑой ÑÑнкÑии еÑÑÑ Ñакже вÑоÑой, необÑзаÑелÑнÑй паÑамеÑÑ Ñипа boolean. ÐÑли он Ñавен true, pg_start_backup наÑнÑÑ ÑабоÑÑ Ð¼Ð°ÐºÑималÑно бÑÑÑÑо. ÐÑи ÑÑом бÑÐ´ÐµÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ вÑполнена пÑоÑедÑÑа конÑÑолÑной ÑоÑки, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð²Ð»ÐµÑÑ Ð¼Ð°ÑÑÑ Ð¾Ð¿ÐµÑаÑий ввода/вÑвода и заÑоÑмозиÑÑ Ð¿Ð°ÑаллелÑнÑе запÑоÑÑ.
ÐÑи монополÑном копиÑовании ÑÑнкÑÐ¸Ñ pg_stop_backup ÑдалÑÐµÑ Ñайл меÑки (и, еÑли ÑÑÑеÑÑвÑеÑ, Ñайл tablespace_map), ÑозданнÑй ÑÑнкÑией pg_start_backup. ÐÑи немонополÑном копиÑовании ÑодеÑжимое backup_label и tablespace_map возвÑаÑаеÑÑÑ Ð² ÑезÑлÑÑаÑе ÑÑнкÑии и должно бÑÑÑ Ð·Ð°Ð¿Ð¸Ñано в ÑÐ°Ð¹Ð»Ñ Ð² аÑÑ
иве (а не в каÑалоге даннÑÑ
). Также еÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑй вÑоÑой паÑамеÑÑ Ñипа boolean. ÐÑли он Ñавен false, pg_stop_backup завеÑÑиÑÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле оконÑÐ°Ð½Ð¸Ñ ÑезеÑвного копиÑованиÑ, не дожидаÑÑÑ Ð°ÑÑ
иваÑии WAL. ÐÑо поведение полезно ÑолÑко Ð´Ð»Ñ Ð¿ÑогÑамм ÑезеÑвного копиÑованиÑ, коÑоÑÑе незавиÑимо оÑÑÑеÑÑвлÑÑÑ Ð°ÑÑ
иваÑÐ¸Ñ WAL. ÐÑли же WAL не зааÑÑ
ивиÑÑеÑÑÑ, ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÐ¿Ð¾Ð»Ð½Ð¾Ð¹, а знаÑиÑ, беÑполезной. Ðогда он Ñавен true, pg_stop_backup бÑÐ´ÐµÑ Ð¶Ð´Ð°ÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð°ÑÑ
иваÑии WAL, еÑли аÑÑ
ивиÑование вклÑÑено; Ð´Ð»Ñ ÑезеÑвного ÑеÑвеÑа ÑÑо ознаÑаеÑ, ÑÑо ожидание возможно ÑолÑко пÑи ÑÑловии archive_mode = always. ÐÑли акÑивноÑÑÑ Ð·Ð°Ð¿Ð¸Ñи на ведÑÑем ÑеÑвеÑе невÑÑока, Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ ÑмÑÑл вÑполниÑÑ Ð½Ð° нÑм pg_switch_wal Ð´Ð»Ñ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾Ð³Ð¾ пеÑеклÑÑÐµÐ½Ð¸Ñ ÑегменÑа.
ÐÑи вÑполнении на ведÑÑем ÑÑа ÑÑнкÑÐ¸Ñ Ñакже ÑоздаÑÑ Ñайл иÑÑоÑии ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² облаÑÑи аÑÑ
ива жÑÑнала пÑедзапиÑи. Ð ÑÑом Ñайле Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑезеÑвной копии ÑоÑ
ÑанÑеÑÑÑ Ð¼ÐµÑка, Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ñи вÑзове pg_start_backup, наÑалÑÐ½Ð°Ñ Ð¸ конеÑÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² жÑÑнале пÑедзапиÑи, а Ñакже вÑÐµÐ¼Ñ Ð½Ð°Ñала и оконÑаниÑ. ÐозвÑаÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¾ÐºÐ¾Ð½ÑÐ°Ð½Ð¸Ñ ÑезеÑвной копии в жÑÑнале пÑедзапиÑи (коÑоÑÑÑ Ñоже можно игноÑиÑоваÑÑ). ÐоÑле запиÑи конеÑной позиÑии ÑекÑÑÐ°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð°Ð²ÑомаÑиÑеÑки пеÑемеÑаеÑÑÑ Ðº ÑледÑÑÑÐµÐ¼Ñ ÑÐ°Ð¹Ð»Ñ Ð¶ÑÑнала пÑедзапиÑи, ÑÑÐ¾Ð±Ñ Ñайл конеÑной позиÑии можно бÑло немедленно аÑÑ
ивиÑоваÑÑ Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ ÑезеÑвного копиÑованиÑ.
pg_switch_wal пÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ Ð¿ÐµÑеклÑÑение на ÑледÑÑÑий Ñайл жÑÑнала пÑедзапиÑи, ÑÑо позволÑÐµÑ Ð°ÑÑ
ивиÑоваÑÑ ÑекÑÑий (в пÑедположении, ÑÑо аÑÑ
иваÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ Ð½ÐµÐ¿ÑеÑÑвно). ÐÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÐºÐ¾Ð½ÐµÑнÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² жÑÑнале пÑедзапиÑи (в ÑолÑко ÑÑо законÑенном Ñайле жÑÑнала) + 1. ÐÑли Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа поÑледнего пеÑеклÑÑÐµÐ½Ð¸Ñ Ñайлов не бÑло акÑивноÑÑи, оÑÑажаÑÑейÑÑ Ð² жÑÑнале пÑедзапиÑи, pg_switch_wal не Ð´ÐµÐ»Ð°ÐµÑ Ð½Ð¸Ñего и возвÑаÑÐ°ÐµÑ Ð½Ð°ÑалÑнÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² Ñайле жÑÑнала пÑедзапиÑи, иÑполÑзÑемом в даннÑй моменÑ.
pg_create_restore_point ÑоздаÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½ÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð² жÑÑнале пÑедзапиÑи, коÑоÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ ÐºÐ°Ðº ÑÐµÐ»Ñ Ð¿Ñи воÑÑÑановлении, и возвÑаÑÐ°ÐµÑ ÑооÑвеÑÑÑвÑÑÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² жÑÑнале пÑедзапиÑи. ÐаÑем полÑÑенное Ð¸Ð¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пÑиÑвоиÑÑ Ð¿Ð°ÑамеÑÑÑ recovery_target_name, Ñказав Ñем ÑамÑм ÑоÑкÑ, до коÑоÑой бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð²Ð¾ÑÑÑановление. УÑÑиÑе, ÑÑо еÑли Ð²Ñ ÑоздадиÑе неÑколÑко ÑоÑек воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¾Ð´Ð½Ð¸Ð¼ именем, воÑÑÑановление бÑÐ´ÐµÑ Ð¾ÑÑановлено на пеÑвой ÑоÑке Ñ ÑÑим именем.
pg_current_wal_lsn вÑÐ²Ð¾Ð´Ð¸Ñ ÑекÑÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð·Ð°Ð¿Ð¸Ñи в жÑÑнале пÑедзапиÑи в Ñом же ÑоÑмаÑе, ÑÑо и вÑÑеопиÑаннÑе ÑÑнкÑии. pg_current_wal_insert_lsn подобнÑм обÑазом вÑÐ²Ð¾Ð´Ð¸Ñ ÑекÑÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ, а pg_current_wal_flush_lsn â позиÑÐ¸Ñ ÑбÑоÑа даннÑÑ
жÑÑнала. ÐозиÑией Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð°Ð·ÑваеÑÑÑ Â«Ð»Ð¾Ð³Ð¸ÑеÑкий» ÐºÐ¾Ð½ÐµÑ Ð¶ÑÑнала пÑедзапиÑи в лÑбой Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, Ñогда как позиÑÐ¸Ñ Ð·Ð°Ð¿Ð¸Ñи ÑказÑÐ²Ð°ÐµÑ Ð½Ð° ÐºÐ¾Ð½ÐµÑ Ð´Ð°Ð½Ð½ÑÑ
, ÑакÑиÑеÑки вÑнеÑÑннÑÑ
из внÑÑÑенниÑ
бÑÑеÑов ÑеÑвеÑа, а позиÑÐ¸Ñ ÑбÑоÑа показÑваеÑ, до какого меÑÑа даннÑе гаÑанÑиÑованно ÑоÑ
ÑÐ°Ð½ÐµÐ½Ñ Ð² надÑжном Ñ
ÑанилиÑе. ÐозиÑÐ¸Ñ Ð·Ð°Ð¿Ð¸Ñи оÑмеÑÐ°ÐµÑ ÐºÐ¾Ð½ÐµÑ Ð´Ð°Ð½Ð½ÑÑ
, коÑоÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¸Ð´ÐµÑÑ ÑнаÑÑжи внеÑний пÑоÑеÑÑ, и именно она пÑедÑÑавлÑÐµÑ Ð¸Ð½ÑеÑÐµÑ Ð¿Ñи копиÑовании ÑаÑÑиÑно заполненнÑÑ
Ñайлов жÑÑнала. ÐозиÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ позиÑÐ¸Ñ ÑбÑоÑа вÑводÑÑÑÑ Ð² оÑновном Ð´Ð»Ñ Ð¾Ñладки ÑеÑвеÑной ÑаÑÑи. ÐÑе ÑÑи опеÑаÑии вÑполнÑÑÑÑÑ Ð² Ñежиме «ÑолÑко ÑÑение» и не ÑÑебÑÑÑ Ð¿Ñав ÑÑпеÑполÑзоваÑелÑ.
Ðз ÑезÑлÑÑаÑов вÑеÑ
опиÑаннÑÑ
вÑÑе ÑÑнкÑий можно полÑÑиÑÑ Ð¸Ð¼Ñ Ñайла жÑÑнала пÑедзапиÑи и ÑмеÑение в нÑм, иÑполÑзÑÑ ÑÑнкÑÐ¸Ñ pg_walfile_name_offset. ÐапÑимеÑ:
postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup());
file_name | file_offset
--------------------------+-------------
00000001000000000000000D | 4039624
(1 row) ÐодобнÑм обÑазом, pg_walfile_name Ð¸Ð·Ð²Ð»ÐµÐºÐ°ÐµÑ ÑолÑко Ð¸Ð¼Ñ Ñайла жÑÑнала пÑедзапиÑи. Ðогда Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² жÑÑнале пÑедзапиÑи наÑ
одиÑÑÑ Ñовно на гÑаниÑе Ñайлов, обе ÑÑи ÑÑнкÑии возвÑаÑаÑÑ Ð¸Ð¼Ñ Ð¿ÑедÑдÑÑего Ñайла. ÐбÑÑно ÑÑо поведение пÑедпоÑÑиÑелÑно пÑи аÑÑ
ивиÑовании жÑÑнала пÑедзапиÑи, Ñак как именно пÑедÑдÑÑий Ñайл ÑвлÑеÑÑÑ Ð¿Ð¾Ñледним подлежаÑим аÑÑ
иваÑии.
pg_wal_lsn_diff вÑÑиÑлÑÐµÑ ÑазниÑÑ Ð² байÑаÑ
Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ Ð¿Ð¾Ð·Ð¸ÑиÑми в жÑÑнале пÑедзапиÑи. ÐолÑÑеннÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ñ pg_stat_replication или дÑÑгими ÑÑнкÑиÑми, пеÑеÑиÑленнÑми в ТаблиÑе 9.84, Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð°Ð´ÐµÑжки ÑепликаÑии.
ÐодÑобнее пÑакÑиÑеÑкое пÑименение ÑÑÐ¸Ñ ÑÑнкÑий опиÑÑваеÑÑÑ Ð² Разделе 25.3.
9.26.4. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾ÑÑÑановлением
ФÑнкÑии, пÑиведÑннÑе в ТаблиÑе 9.85, пÑедоÑÑавлÑÑÑ ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ ÑекÑÑем ÑоÑÑоÑнии ведомого ÑеÑвеÑа. ÐÑи ÑÑнкÑии могÑÑ Ð²ÑполнÑÑÑÑÑ, как во вÑÐµÐ¼Ñ Ð²Ð¾ÑÑÑановлениÑ, Ñак и в обÑÑном Ñежиме ÑабоÑÑ.
ТаблиÑа 9.85. ФÑнкÑии Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о воÑÑÑановлении
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| bool | ÐозвÑаÑÐ°ÐµÑ true в пÑоÑеÑÑе воÑÑÑановлениÑ. |
| pg_lsn | ÐолÑÑÐ°ÐµÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¿Ð¾Ñледней запиÑи жÑÑнала пÑедзапиÑи, полÑÑенной и запиÑанной на диÑк в пÑоÑеÑÑе поÑоковой ÑепликаÑии. Ðока вÑполнÑеÑÑÑ Ð¿Ð¾ÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑиÑ, ÑÑа позиÑÐ¸Ñ Ð¿Ð¾ÑÑоÑнно ÑвелиÑиваеÑÑÑ. Ðо оконÑании воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð½Ð° оÑÑанавливаеÑÑÑ Ð½Ð° запиÑи WAL, полÑÑенной и запиÑанной на диÑк поÑледней. ÐÑли поÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑÐ¸Ñ Ð¾ÑклÑÑена или еÑÑ Ð½Ðµ запÑÑкалаÑÑ, ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NULL. |
| pg_lsn | ÐолÑÑÐ°ÐµÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¿Ð¾Ñледней запиÑи жÑÑнала пÑедзапиÑи, воÑпÑоизведÑнной пÑи воÑÑÑановлении. РпÑоÑеÑÑе воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑа позиÑÐ¸Ñ Ð¿Ð¾ÑÑоÑнно ÑвелиÑиваеÑÑÑ. Ðо оконÑании воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð½Ð° оÑÑанавливаеÑÑÑ Ð½Ð° запиÑи WAL, коÑоÑÐ°Ñ Ð±Ñла воÑÑÑановлена поÑледней. ÐÑли ÑеÑÐ²ÐµÑ Ð±Ñл запÑÑен не в Ñежиме воÑÑÑановлениÑ, ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NULL. |
| timestamp with time zone | ÐолÑÑÐ°ÐµÑ Ð¾ÑмеÑÐºÑ Ð²Ñемени поÑледней ÑÑанзакÑии, воÑпÑоизведÑнной пÑи воÑÑÑановлении. ÐÑо вÑемÑ, когда на главном ÑеÑвеÑе пÑоизоÑла ÑикÑаÑÐ¸Ñ Ð¸Ð»Ð¸ оÑÐºÐ°Ñ Ð·Ð°Ð¿Ð¸Ñи WAL Ð´Ð»Ñ ÑÑой ÑÑанзакÑии. ÐÑли в пÑоÑеÑÑе воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ бÑла воÑпÑоизведена ни одна ÑÑанзакÑиÑ, ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NULL. РпÑоÑивном ÑлÑÑае ÑÑо знаÑение поÑÑоÑнно ÑвелиÑиваеÑÑÑ Ð² пÑоÑеÑÑе воÑÑÑановлениÑ. Ðо оконÑании воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð½Ð¾ оÑÑанавливаеÑÑÑ Ð½Ð° ÑÑанзакÑии, коÑоÑÐ°Ñ Ð±Ñла воÑÑÑановлена поÑледней. ÐÑли ÑеÑÐ²ÐµÑ Ð±Ñл запÑÑен не в Ñежиме воÑÑÑановлениÑ, ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NULL. |
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.86 ÑпÑавлÑÑÑ Ð¿ÑоÑеÑÑом воÑÑÑановлениÑ. ÐÑзÑваÑÑ Ð¸Ñ Ð² дÑÑгое вÑÐµÐ¼Ñ Ð½ÐµÐ»ÑзÑ.
ТаблиÑа 9.86. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾ÑÑÑановлением
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| bool | ÐозвÑаÑÐ°ÐµÑ true, еÑли воÑÑÑановление пÑиоÑÑановлено. |
| boolean | ÐовÑÑÐ°ÐµÑ Ð²ÐµÐ´Ð¾Ð¼Ñй ÑеÑвеÑ. ÐÑли паÑамеÑÑ wait Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение true (по ÑмолÑаниÑ), ÑÑа ÑÑнкÑÐ¸Ñ Ð´Ð¾Ð¶Ð¸Ð´Ð°ÐµÑÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑии повÑÑÐµÐ½Ð¸Ñ Ð² ÑеÑение wait_seconds ÑекÑнд и возвÑаÑÐ°ÐµÑ true в ÑлÑÑае ÑÑпеÑного повÑÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ false в пÑоÑивном ÑлÑÑае. ÐÑли паÑамеÑÑ wait Ñавен false, ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ true ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле пеÑедаÑи пÑоÑеÑÑÑ postmaster Ñигнала SIGUSR1, иниÑииÑÑÑÑего повÑÑение. ÐÑÑ ÑÑнкÑÐ¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено вÑзÑваÑÑ ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм. |
| void | Ðемедленно пÑиоÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð²Ð¾ÑÑÑановление (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм). |
| void | ÐеÑезапÑÑÐºÐ°ÐµÑ Ð²Ð¾ÑÑÑановление, еÑли оно бÑло пÑиоÑÑановлено (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм). |
Ðогда воÑÑÑановление пÑиоÑÑановлено, запиÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в Ð±Ð°Ð·Ñ Ð½Ðµ пÑоизводиÑÑÑ. ÐÑли она Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² «гоÑÑÑем ÑезеÑве», вÑе поÑледÑÑÑие запÑоÑÑ Ð±ÑдÑÑ Ð²Ð¸Ð´ÐµÑÑ Ð¾Ð´Ð¸Ð½ ÑоглаÑованнÑй Ñнимок Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ до пÑÐ¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑликÑÑ Ð·Ð°Ð¿ÑоÑов иÑклÑÑаÑÑÑÑ.
Ðогда поÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑÐ¸Ñ Ð²ÑклÑÑена, паÑза пÑи воÑÑÑановлении Ð¼Ð¾Ð¶ÐµÑ Ð´Ð»Ð¸ÑÑÑÑ ÑÐºÐ¾Ð»Ñ Ñгодно долго без ÐºÐ°ÐºÐ¸Ñ -либо пÑоблем. ÐÑли же запÑÑена поÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑиÑ, новÑе запиÑи WAL пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°Ñ Ð¿Ð¾ÑÑÑпаÑÑ Ð¸ заполнÑÑ Ð²ÐµÑÑ Ð´Ð¸Ñк Ñано или поздно, в завиÑимоÑÑи Ð¾Ñ Ð´Ð»Ð¸ÑелÑноÑÑи паÑзÑ, инÑенÑивноÑÑи запиÑи в WAL и обÑÑма Ñвободного пÑоÑÑÑанÑÑва.
9.26.5. ФÑнкÑии ÑÐ¸Ð½Ñ ÑонизаÑии Ñнимков
PostgreSQL позволÑÐµÑ ÑинÑ
ÑонизиÑоваÑÑ Ñнимки ÑоÑÑоÑÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑеанÑами баз даннÑÑ
. Снимок ÑоÑÑоÑÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑеÑ, какие даннÑе Ð²Ð¸Ð´Ð½Ñ ÑÑанзакÑии, ÑабоÑаÑÑей Ñ ÑÑим Ñнимком. СинÑ
ÑонизаÑÐ¸Ñ Ñнимков необÑ
одима, когда в двÑÑ
или более ÑеанÑаÑ
нÑжно видеÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же ÑодеÑжимое Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐÑли в двÑÑ
ÑеанÑаÑ
ÑÑанзакÑии запÑÑкаÑÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо, вÑегда еÑÑÑ Ð²ÐµÑоÑÑноÑÑÑ, ÑÑо Ð½ÐµÐºÐ°Ñ ÑÑеÑÑÑ ÑÑанзакÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°ÑикÑиÑована Ð¼ÐµÐ¶Ð´Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼Ð¸ START TRANSACTION Ð´Ð»Ñ Ð¿ÐµÑвÑÑ
двÑÑ
, и в ÑезÑлÑÑаÑе в одном ÑеанÑе бÑÐ´ÐµÑ Ð²Ð¸Ð´ÐµÐ½ ÑезÑлÑÑÐ°Ñ ÑÑеÑÑей, а в дÑÑгом â неÑ.
ÐÐ»Ñ ÑеÑÐµÐ½Ð¸Ñ ÑÑой пÑÐ¾Ð±Ð»ÐµÐ¼Ñ PostgreSQL позволÑÐµÑ ÑÑанзакÑии ÑкÑпоÑÑиÑоваÑÑ Ñнимок ÑоÑÑоÑниÑ, Ñ ÐºÐ¾ÑоÑÑм она ÑабоÑаеÑ. Ðока ÑкÑпоÑÑиÑÑÑÑÐ°Ñ ÑÑÐ¾Ñ Ñнимок ÑÑанзакÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ, дÑÑгие ÑÑанзакÑии могÑÑ Ð¸Ð¼Ð¿Ð¾ÑÑиÑоваÑÑ ÐµÐ³Ð¾ и, Ñаким обÑазом, ÑвидеÑÑ Ð°Ð±ÑолÑÑно Ñо же ÑоÑÑоÑние Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑÑо Ð²Ð¸Ð´Ð¸Ñ Ð¿ÐµÑÐ²Ð°Ñ ÑÑанзакÑиÑ. Ðо ÑÑÑиÑе, ÑÑо лÑбÑе изменениÑ, пÑоизведÑннÑе ÑÑими ÑÑанзакÑиÑми, бÑдÑÑ Ð½Ðµ Ð²Ð¸Ð´Ð½Ñ Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ , как ÑÑо и должно бÑÑÑ Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñми в незаÑикÑиÑованнÑÑ ÑÑанзакÑиÑÑ . Таким обÑазом, ÑÑанзакÑии ÑÐ¸Ð½Ñ ÑонизиÑÑÑÑ ÑолÑко наÑалÑное ÑоÑÑоÑние даннÑÑ , а поÑледÑÑÑие пÑоизводимÑе в Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð»Ð¸ÑÑÑÑÑÑ ÐºÐ°Ðº обÑÑно.
Снимки ÑоÑÑоÑÐ½Ð¸Ñ ÑкÑпоÑÑиÑÑÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑии pg_export_snapshot, показанной в ТаблиÑе 9.87, и импоÑÑиÑÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ SET TRANSACTION.
ТаблиÑа 9.87. ФÑнкÑии ÑÐ¸Ð½Ñ ÑонизаÑии Ñнимков
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| text | Ð¡Ð¾Ñ ÑанÑÐµÑ Ñнимок ÑекÑÑего ÑоÑÑоÑÐ½Ð¸Ñ Ð¸ возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾ иденÑиÑикаÑÐ¾Ñ |
ФÑнкÑÐ¸Ñ pg_export_snapshot ÑоздаÑÑ Ñнимок ÑекÑÑего ÑоÑÑоÑÐ½Ð¸Ñ Ð¸ возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾ иденÑиÑикаÑÐ¾Ñ Ð² ÑÑÑоке Ñипа text. ÐÐ°Ð½Ð½Ð°Ñ ÑÑÑока должна пеÑедаваÑÑÑÑ (за Ñамками Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
) клиенÑам, коÑоÑÑе бÑдÑÑ Ð¸Ð¼Ð¿Ð¾ÑÑиÑоваÑÑ ÑÑÐ¾Ñ Ñнимок. ÐÑи ÑÑом импоÑÑиÑоваÑÑ ÐµÐ³Ð¾ нÑжно ÑанÑÑе, Ñем завеÑÑиÑÑÑ ÑÑанзакÑиÑ, коÑоÑÐ°Ñ ÐµÐ³Ð¾ ÑкÑпоÑÑиÑовала. ÐÑли необÑ
одимо, ÑÑанзакÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ ÑкÑпоÑÑиÑоваÑÑ Ð½ÐµÑколÑко Ñнимков. ÐамеÑÑÑе, ÑÑо ÑÑо Ð¸Ð¼ÐµÐµÑ ÑмÑÑл ÑолÑко Ð´Ð»Ñ ÑÑанзакÑий ÑÑÐ¾Ð²Ð½Ñ READ COMMITTED, Ñак как ÑÑанзакÑии REPEATABLE READ и более вÑÑокиÑ
ÑÑовней изолÑÑии ÑабоÑаÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ Ñнимком ÑоÑÑоÑниÑ. ÐоÑле Ñого как ÑÑанзакÑÐ¸Ñ ÑкÑпоÑÑиÑовала Ñнимок, ÐµÑ Ð½ÐµÐ»ÑÐ·Ñ Ð¿Ð¾Ð´Ð³Ð¾ÑовиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ PREPARE TRANSACTION.
ÐодÑобнее иÑполÑзование ÑкÑпоÑÑиÑованнÑÑ Ñнимков ÑаÑÑмаÑÑиваеÑÑÑ Ð² опиÑании SET TRANSACTION.
9.26.6. ФÑнкÑии ÑепликаÑии
РТаблиÑе 9.88 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, пÑедназнаÑеннÑе Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÑ
анизмом ÑепликаÑии и взаимодейÑÑÐ²Ð¸Ñ Ñ Ð½Ð¸Ð¼. ЧÑÐ¾Ð±Ñ Ð¸Ð·ÑÑиÑÑ ÑÑÐ¾Ñ Ð¼ÐµÑ
анизм деÑалÑнее, обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 26.2.5, ÐодÑазделÑ 26.2.6 и Ðлаве 49. ÐÑполÑзоваÑÑ ÑÑи ÑÑнкÑии Ð´Ð»Ñ Ð¸ÑÑоÑников ÑепликаÑии ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, а Ð´Ð»Ñ ÑлоÑов ÑепликаÑии â ÑолÑко ÑÑпеÑполÑзоваÑелÑм и полÑзоваÑелÑм, имеÑÑим пÑаво REPLICATION.
Ðногие из ÑÑÐ¸Ñ ÑÑнкÑий ÑооÑвеÑÑÑвÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼ в пÑоÑоколе ÑепликаÑии; Ñм. Раздел 52.4.
ФÑнкÑии, опиÑаннÑе в ÐодÑазделе 9.26.3, ÐодÑазделе 9.26.4 и ÐодÑазделе 9.26.5, Ñакже имеÑÑ Ð¾ÑноÑение к ÑепликаÑии.
ТаблиÑа 9.88. ФÑнкÑии ÑепликаÑии SQL
| ФÑнкÑÐ¸Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| (slot_name name, lsn pg_lsn) | СоздаÑÑ Ð½Ð¾Ð²Ñй ÑизиÑеÑкий ÑÐ»Ð¾Ñ ÑепликаÑии Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ slot_name. ÐеобÑзаÑелÑнÑй вÑоÑой паÑамеÑÑ, когда он Ñавен true, ÑказÑваеÑ, ÑÑо LSN Ð´Ð»Ñ ÑÑого ÑлоÑа ÑепликаÑии должен бÑÑÑ Ð·Ð°ÑезеÑвиÑован немедленно; в пÑоÑивном ÑлÑÑае LSN ÑезеÑвиÑÑеÑÑÑ Ð¿Ñи пеÑвом подклÑÑении клиенÑа поÑоковой ÑепликаÑии. ÐеÑедаÑа изменений из ÑизиÑеÑкого ÑлоÑа возможна ÑолÑко по пÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð¿Ð¾Ñоковой ÑепликаÑии â Ñм. Раздел 52.4. ÐеобÑзаÑелÑнÑй ÑÑеÑий паÑамеÑÑ, temporary, когда он Ñавен true, ÑказÑваеÑ, ÑÑо ÑÑÐ¾Ñ ÑÐ»Ð¾Ñ Ð½Ðµ должен поÑÑоÑнно Ñ
ÑаниÑÑÑÑ Ð½Ð° диÑке, Ñак как он пÑедназнаÑен ÑолÑко Ð´Ð»Ñ ÑекÑÑего ÑеанÑа. ÐÑеменнÑе ÑлоÑÑ Ñакже оÑвобождаÑÑÑÑ Ð¿Ñи лÑбой оÑибке. ÐÑа ÑÑнкÑÐ¸Ñ ÑооÑвеÑÑÑвÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ðµ пÑоÑокола ÑепликаÑии CREATE_REPLICATION_SLOT ... PHYSICAL. |
| void | УдалÑÐµÑ ÑизиÑеÑкий или логиÑеÑкий ÑÐ»Ð¾Ñ ÑепликаÑии Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ slot_name. СооÑвеÑÑÑвÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ðµ пÑоÑокола ÑепликаÑии DROP_REPLICATION_SLOT. ÐÐ»Ñ Ð»Ð¾Ð³Ð¸ÑеÑкиÑ
ÑлоÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° вÑзÑваÑÑÑÑ ÑеÑез подклÑÑение к Ñой же базе даннÑÑ
, в коÑоÑой бÑл Ñоздан ÑлоÑ. |
| (slot_name name, lsn pg_lsn) | СоздаÑÑ Ð½Ð¾Ð²Ñй логиÑеÑкий (декодиÑÑÑÑий) ÑÐ»Ð¾Ñ ÑепликаÑии Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ slot_name, иÑполÑзÑÑ Ð¼Ð¾Ð´ÑÐ»Ñ Ð²Ñвода plugin. ÐеобÑзаÑелÑнÑй ÑÑеÑий паÑамеÑÑ, temporary, когда Ñавен true, ÑказÑваеÑ, ÑÑо ÑÑÐ¾Ñ ÑÐ»Ð¾Ñ Ð½Ðµ должен поÑÑоÑнно Ñ
ÑаниÑÑÑÑ Ð½Ð° диÑке, Ñак как он пÑедназнаÑен ÑолÑко Ð´Ð»Ñ ÑекÑÑего ÑеанÑа. ÐÑеменнÑе ÑлоÑÑ Ñакже оÑвобождаÑÑÑÑ Ð¿Ñи лÑбой оÑибке. ÐÑзов ÑÑой ÑÑнкÑии ÑавнознаÑен вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿ÑоÑокола ÑепликаÑии CREATE_REPLICATION_SLOT ... LOGICAL. |
| (slot_name name, lsn pg_lsn) | ÐопиÑÑÐµÑ ÑÑÑеÑÑвÑÑÑий ÑÐ»Ð¾Ñ ÑизиÑеÑкой ÑепликаÑии Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ src_slot_name в ÑÐ»Ð¾Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ dst_slot_name. СкопиÑованнÑй ÑÐ»Ð¾Ñ ÑизиÑеÑкой ÑепликаÑии наÑÐ¸Ð½Ð°ÐµÑ ÑезеÑвиÑоваÑÑ WAL Ñ Ñого же поÑледоваÑелÑного номеÑа LSN, ÑÑо и иÑÑ
однÑй ÑлоÑ. ÐаÑамеÑÑ temporary ÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑм и позволÑÐµÑ ÑказаÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÐ»Ð¾Ñ Ð²ÑеменнÑм. ÐÑли паÑамеÑÑ temporary опÑÑен, ÑоÑ
ÑанÑеÑÑÑ Ñо же ÑвойÑÑво, ÑÑо Ð¸Ð¼ÐµÐµÑ Ð¸ÑÑ
однÑй ÑлоÑ. |
| (slot_name name, lsn pg_lsn) | ÐопиÑÑÐµÑ ÑÑÑеÑÑвÑÑÑий ÑÐ»Ð¾Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ src_slot_name в ÑÐ»Ð¾Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ dst_slot_name, Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑÑ ÑÐ¼ÐµÐ½Ñ Ð¼Ð¾Ð´ÑÐ»Ñ Ð²Ñвода и ÑвойÑÑва вÑеменноÑÑи. СкопиÑованнÑй логиÑеÑкий ÑÐ»Ð¾Ñ Ð½Ð°ÑÐ¸Ð½Ð°ÐµÑ Ð¿ÐµÑедаÑÑ Ñ Ñого же поÑледоваÑелÑного номеÑа LSN, ÑÑо и иÑÑ
однÑй ÑлоÑ. ÐаÑамеÑÑÑ temporary и plugin ÑвлÑÑÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑми. ÐÑли они опÑÑенÑ, ÑоÑ
ÑанÑÑÑÑÑ ÑвойÑÑва иÑÑ
одного логиÑеÑкого ÑлоÑа. |
| (lsn pg_lsn, xid xid, data text) | ÐозвÑаÑÐ°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ÑлоÑе slot_name Ñ Ð¿Ð¾Ð·Ð¸Ñии, до коÑоÑой Ñанее бÑли полÑÑÐµÐ½Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ. ÐÑли паÑамеÑÑÑ upto_lsn и upto_nchanges ÑÐ°Ð²Ð½Ñ NULL, логиÑеÑкое декодиÑование пÑодолжиÑÑÑ Ð´Ð¾ конÑа жÑÑнала ÑÑанзакÑий. ÐÑли upto_lsn не NULL, декодиÑоваÑÑÑÑ Ð±ÑдÑÑ ÑолÑко ÑÑанзакÑии, заÑикÑиÑованнÑе до заданного LSN. ÐÑли upto_nchanges не NULL, декодиÑование оÑÑановиÑÑÑ, когда ÑиÑло ÑÑÑок, полÑÑеннÑÑ
пÑи декодиÑовании, пÑевÑÑÐ¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ знаÑение. ÐамеÑÑÑе однако, ÑÑо ÑакÑиÑеÑкое ÑиÑло возвÑаÑÑннÑÑ
ÑÑÑок Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð±Ð¾Ð»ÑÑе, Ñак как ÑÑо огÑаниÑение пÑовеÑÑеÑÑÑ ÑолÑко поÑле Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑÑок, декодиÑованнÑÑ
Ð´Ð»Ñ Ð¾ÑеÑедной ÑÑанзакÑии. |
| (lsn pg_lsn, xid xid, data text) | РабоÑÐ°ÐµÑ Ñак же, как ÑÑнкÑÐ¸Ñ pg_logical_slot_get_changes(), но не забиÑÐ°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ; Ñо еÑÑÑ, они бÑдÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ Ñнова пÑи ÑледÑÑÑиÑ
вÑзоваÑ
. |
| (lsn pg_lsn, xid xid, data bytea) | РабоÑÐ°ÐµÑ Ñак же, как ÑÑнкÑÐ¸Ñ pg_logical_slot_get_changes(), но вÑдаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñипе bytea. |
| (lsn pg_lsn, xid xid, data bytea) | РабоÑÐ°ÐµÑ Ñак же, как ÑÑнкÑÐ¸Ñ pg_logical_slot_get_changes(), но вÑдаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñипе bytea и не забиÑÐ°ÐµÑ Ð¸Ñ
; Ñо еÑÑÑ, они бÑдÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ Ñнова пÑи ÑледÑÑÑиÑ
вÑзоваÑ
. |
| (slot_name name, end_lsn pg_lsn) bool | ÐÑÐ¾Ð´Ð²Ð¸Ð³Ð°ÐµÑ ÑекÑÑÑÑ Ð¿Ð¾Ð´ÑвеÑждÑннÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ ÑлоÑа ÑепликаÑии Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ slot_name. Ð¡Ð»Ð¾Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð¿ÐµÑемеÑÑиÑÑ Ð½Ð°Ð·Ð°Ð´, а Ñакже впеÑÑд за ÑекÑÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ. ÐозвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ ÑлоÑа и позиÑиÑ, до коÑоÑой он пÑодвинÑлÑÑ. ÐÑли ÑÐ»Ð¾Ñ Ð±Ñл пÑодвинÑÑ, инÑоÑмаÑÐ¸Ñ Ð¾Ð± ÑÑом бÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¸Ñана пÑи ближайÑей конÑÑолÑной ÑоÑке. Ð ÑлÑÑае пÑеÑÑÐ²Ð°Ð½Ð¸Ñ ÑабоÑÑ ÑÐ»Ð¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð² пÑедÑдÑÑем положении. |
| oid | СоздаÑÑ Ð¸ÑÑоÑник ÑепликаÑии Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм внеÑним именем и возвÑаÑÐ°ÐµÑ Ð½Ð°Ð·Ð½Ð°ÑеннÑй ÐµÐ¼Ñ Ð²Ð½ÑÑÑенний иденÑиÑикаÑоÑ. |
| void | УдалÑÐµÑ Ñанее ÑозданнÑй иÑÑоÑник ÑепликаÑии, в Ñом ÑиÑле ÑвÑзаннÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ воÑпÑоизведении. |
| oid | ÐÑÐµÑ Ð¸ÑÑоÑник ÑепликаÑии по имени и возвÑаÑÐ°ÐµÑ Ð²Ð½ÑÑÑенний иденÑиÑикаÑоÑ. ÐÑли Ñакой иÑÑоÑник не наÑ
одиÑÑÑ, возвÑаÑÐ°ÐµÑ NULL. |
| void | ÐомеÑÐ°ÐµÑ ÑекÑÑий ÑеанÑ, как воÑпÑоизводÑÑий жÑÑнал из Ñказанного иÑÑоÑника, ÑÑо позволÑÐµÑ Ð¾ÑÑлеживаÑÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ воÑпÑоизведениÑ. ЧÑÐ¾Ð±Ñ Ð¾ÑмениÑÑ ÑÑо дейÑÑвие, вÑзовиÑе pg_replication_origin_session_reset. ÐÐ¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ, ÑолÑко еÑли не бÑл наÑÑÑоен пÑедÑдÑÑий иÑÑоÑник. |
| void | ÐÑменÑÐµÑ Ð´ÐµÐ¹ÑÑвие pg_replication_origin_session_setup(). |
| bool | Ð ÑекÑÑем ÑеанÑе наÑÑÑоен иÑÑоÑник ÑепликаÑии? |
| pg_lsn | ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð²Ð¾ÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸ÑÑоÑника ÑепликаÑии, наÑÑÑоенного в ÑекÑÑем ÑеанÑе. ÐаÑамеÑÑ flush опÑеделÑеÑ, бÑÐ´ÐµÑ Ð»Ð¸ гаÑанÑиÑоваÑÑÑÑ ÑоÑ
Ñанение локалÑной ÑÑанзакÑии на диÑке. |
| void | ÐомеÑÐ°ÐµÑ ÑекÑÑÑÑ ÑÑанзакÑÐ¸Ñ ÐºÐ°Ðº воÑпÑоизводÑÑÑÑ ÑÑанзакÑиÑ, заÑикÑиÑованнÑÑ Ñ ÑказаннÑм LSN и вÑеменем. ÐÐ¾Ð¶ÐµÑ Ð²ÑзÑваÑÑÑÑ ÑолÑко поÑле Ñого, как бÑл наÑÑÑоен иÑÑоÑник ÑепликаÑии в ÑезÑлÑÑаÑе вÑзова pg_replication_origin_session_setup(). |
| void | ÐÑменÑÐµÑ Ð´ÐµÐ¹ÑÑвие pg_replication_origin_xact_setup(). |
pg_replication_origin_advance | void | УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ ÑепликаÑии Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñзла в ÑказаннÑÑ Ð¿Ð¾Ð·Ð¸ÑиÑ. ÐÑо в оÑновном полезно Ð´Ð»Ñ ÑÑÑановки наÑалÑной позиÑии или новой позиÑии поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑии и подобнÑÑ Ð´ÐµÐ¹ÑÑвий. Ðо ÑÑÑиÑе, ÑÑо неоÑÑоÑожное иÑполÑзование ÑÑой ÑÑнкÑии Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к неÑоглаÑованноÑÑи ÑеплиÑиÑованнÑÑ Ð´Ð°Ð½Ð½ÑÑ . |
| pg_lsn | ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð²Ð¾ÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ иÑÑоÑника ÑепликаÑии. ÐаÑамеÑÑ flush опÑеделÑеÑ, бÑÐ´ÐµÑ Ð»Ð¸ гаÑанÑиÑоваÑÑÑÑ ÑоÑ
Ñанение локалÑной ÑÑанзакÑии на диÑке. |
| pg_lsn | ÐÑдаÑÑ ÑекÑÑовое ÑообÑение логиÑеÑкого декодиÑованиÑ. ÐÑ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð´Ð»Ñ Ð¿ÐµÑедаÑи пÑоизволÑнÑÑ
ÑообÑений ÑеÑез WAL модÑлÑм логиÑеÑкого декодиÑованиÑ. ÐаÑамеÑÑ transactional ÑÑÑанавливаеÑ, должно ли ÑообÑение бÑÑÑ ÑаÑÑÑÑ ÑекÑÑей ÑÑанзакÑии или оно должно запиÑÑваÑÑÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ и декодиÑоваÑÑÑÑ ÑÑазÑ, как ÑолÑко ÑÑа запиÑÑ Ð±ÑÐ´ÐµÑ Ð¿ÑоÑиÑана пÑи логиÑеÑком декодиÑовании. ÐаÑамеÑÑ prefix задаÑÑ ÑекÑÑовÑй пÑеÑикÑ, по коÑоÑÐ¾Ð¼Ñ Ð¼Ð¾Ð´Ñли логиÑеÑкого декодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð»ÐµÐ³ÐºÐ¾ ÑаÑпознаÑÑ Ð¸Ð½ÑеÑеÑÑÑÑие иÑ
ÑообÑениÑ. РпаÑамеÑÑе content пеÑедаÑÑÑÑ ÑекÑÑ ÑообÑениÑ. |
| pg_lsn | ÐÑдаÑÑ Ð´Ð²Ð¾Ð¸Ñное ÑообÑение логиÑеÑкого декодиÑованиÑ. ÐÑ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð´Ð»Ñ Ð¿ÐµÑедаÑи пÑоизволÑнÑÑ
ÑообÑений ÑеÑез WAL модÑлÑм логиÑеÑкого декодиÑованиÑ. ÐаÑамеÑÑ transactional ÑÑÑанавливаеÑ, должно ли ÑообÑение бÑÑÑ ÑаÑÑÑÑ ÑекÑÑей ÑÑанзакÑии или оно должно запиÑÑваÑÑÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ и декодиÑоваÑÑÑÑ ÑÑазÑ, как ÑолÑко ÑÑа запиÑÑ Ð±ÑÐ´ÐµÑ Ð¿ÑоÑиÑана пÑи логиÑеÑком декодиÑовании. ÐаÑамеÑÑ prefix задаÑÑ ÑекÑÑовÑй пÑеÑикÑ, по коÑоÑÐ¾Ð¼Ñ Ð¼Ð¾Ð´Ñли логиÑеÑкого декодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð»ÐµÐ³ÐºÐ¾ ÑаÑпознаÑÑ Ð¸Ð½ÑеÑеÑÑÑÑие иÑ
ÑообÑениÑ. РпаÑамеÑÑе content пеÑедаÑÑÑÑ Ð´Ð²Ð¾Ð¸Ñное ÑодеÑжимое ÑообÑениÑ. |
9.26.7. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑами баз даннÑÑ
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.89, вÑÑиÑлÑÑÑ Ð¾Ð±ÑÑм, коÑоÑÑй занимаÑÑ Ð½Ð° диÑке ÑазлиÑнÑе обÑекÑÑ Ð±Ð°Ð· даннÑÑ .
ТаблиÑа 9.89. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ ÑазмеÑа обÑекÑов ÐÐ
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| int | ЧиÑло байÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ знаÑÐµÐ½Ð¸Ñ (возможно, в ÑжаÑом виде) |
| bigint | ÐбÑÑм, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке база даннÑÑ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм OID |
| bigint | ÐбÑÑм, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке база даннÑÑ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именем |
| bigint | ÐбÑий обÑÑм индекÑов, ÑвÑзаннÑÑ Ñ Ñказанной ÑаблиÑей |
| bigint | ÐбÑÑм, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке ÑказаннÑй Ñлой ('main', 'fsm', 'vm' или 'init') заданной ÑаблиÑÑ Ð¸Ð»Ð¸ индекÑа |
| bigint | ÐÑаÑÐºÐ°Ñ ÑоÑма pg_relation_size(..., 'main') |
| bigint | ÐÑеобÑазÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð² понÑÑном ÑÐµÐ»Ð¾Ð²ÐµÐºÑ ÑоÑмаÑе Ñ ÐµÐ´Ð¸Ð½Ð¸Ñами измеÑÐµÐ½Ð¸Ñ Ð² ÑиÑло Ð±Ð°Ð¹Ñ |
| text | ÐÑеобÑазÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð² байÑÐ°Ñ , пÑедÑÑавленнÑй в 64-биÑном Ñелом, в понÑÑнÑй ÑÐµÐ»Ð¾Ð²ÐµÐºÑ ÑоÑÐ¼Ð°Ñ Ñ ÐµÐ´Ð¸Ð½Ð¸Ñами измеÑÐµÐ½Ð¸Ñ |
| text | ÐÑеобÑазÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð² байÑÐ°Ñ , пÑедÑÑавленнÑй в знаÑении ÑиÑлового Ñипа, в понÑÑнÑй ÑÐµÐ»Ð¾Ð²ÐµÐºÑ ÑоÑÐ¼Ð°Ñ Ñ ÐµÐ´Ð¸Ð½Ð¸Ñами измеÑÐµÐ½Ð¸Ñ |
| bigint | ÐбÑÑм, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке Ð´Ð°Ð½Ð½Ð°Ñ ÑаблиÑа, за иÑклÑÑением индекÑов (но вклÑÑÐ°Ñ TOAST, каÑÑÑ Ñвободного меÑÑа и каÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи) |
| bigint | ÐбÑÑм, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке ÑаблиÑное пÑоÑÑÑанÑÑво Ñ ÑказаннÑм OID |
| bigint | ÐбÑÑм, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке ÑаблиÑное пÑоÑÑÑанÑÑво Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именем |
| bigint | ÐбÑий обÑÑм, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ ÑаблиÑа, вклÑÑÐ°Ñ Ð²Ñе индекÑÑ Ð¸ даннÑе TOAST |
pg_column_size показÑваеÑ, какой обÑÑм ÑÑебÑеÑÑÑ Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ знаÑениÑ.
pg_total_relation_size пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ OID или Ð¸Ð¼Ñ ÑаблиÑÑ Ð¸Ð»Ð¸ даннÑÑ
TOAST и возвÑаÑÐ°ÐµÑ Ð¾Ð±Ñий обÑÑм, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке ÑÑа ÑаблиÑа, вклÑÑÐ°Ñ Ð²Ñе ÑвÑзаннÑе Ñ Ð½ÐµÐ¹ индекÑÑ. РезÑлÑÑÐ°Ñ ÑÑой ÑÑнкÑии ÑавнÑеÑÑÑ pg_table_size + pg_indexes_size.
pg_table_size пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ OID или Ð¸Ð¼Ñ ÑаблиÑÑ Ð¸ возвÑаÑÐ°ÐµÑ Ð¾Ð±ÑÑм, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке ÑÑа ÑаблиÑа без индекÑов. (ÐÑи ÑÑом ÑÑиÑÑваеÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ TOAST, каÑÑÑ Ñвободного меÑÑа и каÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи.)
pg_indexes_size пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ OID или Ð¸Ð¼Ñ ÑаблиÑÑ Ð¸ возвÑаÑÐ°ÐµÑ Ð¾Ð±Ñий обÑÑм, коÑоÑÑй занимаÑÑ Ð²Ñе индекÑÑ ÑаблиÑÑ.
pg_database_size и pg_tablespace_size пÑинимаÑÑ OID или Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
либо ÑаблиÑного пÑоÑÑÑанÑÑва и возвÑаÑаÑÑ Ð¾Ð±Ñий обÑÑм, коÑоÑÑй они занимаÑÑ Ð½Ð° диÑке. ÐÐ»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ pg_database_size ÑÑебÑеÑÑÑ Ð¸Ð¼ÐµÑÑ Ð¿Ñаво CONNECT Ð´Ð»Ñ Ñказанной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
(оно пÑедоÑÑавлÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ) или бÑÑÑ Ñленом Ñоли pg_read_all_stats. ÐÐ»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ pg_tablespace_size необÑ
одимо имеÑÑ Ð¿Ñаво CREATE Ð´Ð»Ñ Ñказанного ÑаблиÑного пÑоÑÑÑанÑÑва или бÑÑÑ Ñленом Ñоли pg_read_all_stats, еÑли ÑолÑко ÑÑо не ÑаблиÑное пÑоÑÑÑанÑÑво по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
.
pg_relation_size пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ OID или Ð¸Ð¼Ñ ÑаблиÑÑ, индекÑа или TOAST-ÑаблиÑÑ Ð¸ возвÑаÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑÐ»Ð¾Ñ ÑÑого оÑноÑÐµÐ½Ð¸Ñ (в байÑаÑ
). (ÐамеÑÑÑе, ÑÑо в болÑÑинÑÑве ÑлÑÑаев Ñдобнее иÑполÑзоваÑÑ Ð±Ð¾Ð»ÐµÐµ вÑÑокоÑÑовневÑе ÑÑнкÑии pg_total_relation_size и pg_table_size, коÑоÑÑе ÑÑммиÑÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð²ÑеÑ
ÑлоÑв.) С одним аÑгÑменÑом она возвÑаÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ñновного ÑÐ»Ð¾Ñ Ð´Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ
заданного оÑноÑениÑ. Ðазвание дÑÑгого инÑеÑеÑÑÑÑего ÑÐ»Ð¾Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑедаÑÑ Ð²Ð¾ вÑоÑом аÑгÑменÑе:
'main'возвÑаÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ñновного ÑÐ»Ð¾Ñ Ð´Ð°Ð½Ð½ÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ оÑноÑениÑ.'fsm'возвÑаÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ°ÑÑÑ Ñвободного меÑÑа (Ñм. Раздел 69.3), ÑвÑзанной Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм оÑноÑением.'vm'возвÑаÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи (Ñм. Раздел 69.4), ÑвÑзанной Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм оÑноÑением.'init'возвÑаÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÑÐ»Ð¾Ñ Ð¸Ð½Ð¸ÑиализаÑии Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ оÑноÑениÑ, еÑли он имееÑÑÑ.
pg_size_pretty можно иÑполÑзоваÑÑ Ð´Ð»Ñ ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑезÑлÑÑаÑов дÑÑгиÑ
ÑÑнкÑий в виде, более понÑÑном ÑеловекÑ, Ñ ÐµÐ´Ð¸Ð½Ð¸Ñами измеÑÐµÐ½Ð¸Ñ bytes, kB, MB, GB и TB.
pg_size_bytes можно иÑполÑзоваÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑазмеÑа в байÑаÑ
из ÑÑÑоки в ÑоÑмаÑе, понÑÑном ÑеловекÑ. ÐÑ
Ð¾Ð´Ð½Ð°Ñ ÑÑÑока Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÐµÐ´Ð¸Ð½Ð¸ÑÑ bytes, kB, MB, GB и TB, и ÑазбиÑаеÑÑÑ Ð±ÐµÐ· ÑÑÑÑа ÑегиÑÑÑа. ÐÑли единиÑÑ Ð½Ðµ ÑказÑваÑÑÑÑ, подÑазÑмеваÑÑÑÑ Ð±Ð°Ð¹ÑÑ.
ÐÑимеÑание
ÐдиниÑÑ kB, MB, GB и TB, ÑигÑÑиÑÑÑÑие в ÑÑнкÑиÑÑ
pg_size_pretty и pg_size_bytes, опÑеделÑÑÑÑÑ ÐºÐ°Ðº ÑÑепени 2, а не 10, Ñак ÑÑо 1kB Ñавен 1024 байÑам, 1MB Ñавен 10242 = 1048576 Ð±Ð°Ð¹Ñ Ð¸ Ñ. д.
ÐÑÑеопиÑаннÑе ÑÑнкÑии, ÑабоÑаÑÑие Ñ ÑаблиÑами или индекÑами, пÑинимаÑÑ Ð°ÑгÑÐ¼ÐµÐ½Ñ Ñипа regclass, коÑоÑÑй пÑедÑÑавлÑÐµÑ Ñобой пÑоÑÑо OID ÑаблиÑÑ Ð¸Ð»Ð¸ индекÑа в ÑиÑÑемном каÑалоге pg_class. Ðднако вам не нÑжно вÑÑÑнÑÑ Ð²ÑÑиÑлÑÑÑ OID, Ñак как пÑоÑедÑÑа ввода знаÑÐµÐ½Ð¸Ñ regclass Ð¼Ð¾Ð¶ÐµÑ ÑделаÑÑ ÑÑо за ваÑ. ÐÐ»Ñ ÑÑого доÑÑаÑоÑно запиÑаÑÑ Ð¸Ð¼Ñ ÑаблиÑÑ Ð² апоÑÑÑоÑаÑ
, как обÑÑнÑÑ ÑекÑÑовÑÑ ÐºÐ¾Ð½ÑÑанÑÑ. Ð ÑооÑвеÑÑÑвии Ñ Ð¿Ñавилами обÑабоÑки обÑÑнÑÑ
имÑн SQL, еÑли Ð¸Ð¼Ñ ÑаблиÑÑ Ð½Ðµ заклÑÑено в кавÑÑки, ÑÑа ÑÑÑока бÑÐ´ÐµÑ Ð¿ÐµÑеведена в нижний ÑегиÑÑÑ.
ÐÑли пеÑÐµÐ´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ OID не ÑооÑвеÑÑÑвÑÑÑ ÑÑÑеÑÑвÑÑÑий обÑекÑ, ÑÑи ÑÑнкÑии возвÑаÑаÑÑ NULL.
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.90, помогаÑÑ Ð¾Ð¿ÑеделиÑÑ, в ÐºÐ°ÐºÐ¸Ñ ÑÐ°Ð¹Ð»Ð°Ñ Ð½Ð° диÑке Ñ ÑанÑÑÑÑ Ð¾Ð±ÑекÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
ТаблиÑа 9.90. ФÑнкÑии опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑов
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| oid | ÐÐ¾Ð¼ÐµÑ Ñайлового Ñзла Ð´Ð»Ñ Ñказанного оÑноÑÐµÐ½Ð¸Ñ |
| text | ÐÑÑÑ Ðº ÑайлÑ, в коÑоÑом Ñ ÑаниÑÑÑ Ñказанное оÑноÑение |
| regclass | ÐÐ°Ñ Ð¾Ð´Ð¸Ñ Ð¾ÑноÑение, ÑвÑзанное Ñ Ð´Ð°Ð½Ð½Ñм ÑаблиÑнÑм пÑоÑÑÑанÑÑвом и ÑайловÑм Ñзлом |
pg_relation_filenode пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ OID или Ð¸Ð¼Ñ ÑаблиÑÑ, индекÑа, поÑледоваÑелÑноÑÑи или ÑаблиÑÑ TOAST и возвÑаÑÐ°ÐµÑ Ð½Ð¾Ð¼ÐµÑ Â«Ñайлового Ñзла», ÑвÑзаннÑм Ñ ÑÑим обÑекÑом. ФайловÑм Ñзлом назÑваеÑÑÑ Ð¾Ñновной ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ñайла, иÑполÑзÑемого Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
(подÑобнее ÑÑо опиÑано в Разделе 69.1). ÐÐ»Ñ Ð±Ð¾Ð»ÑÑинÑÑва ÑÐ°Ð±Ð»Ð¸Ñ ÑÑÐ¾Ñ Ð½Ð¾Ð¼ÐµÑ ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñо знаÑением pg_class.relfilenode, но Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
ÑиÑÑемнÑÑ
каÑалогов relfilenode Ñавен 0, и нÑжно иÑполÑзоваÑÑ ÑÑÑ ÑÑнкÑиÑ, ÑÑÐ¾Ð±Ñ ÑзнаÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑное знаÑение. ÐÑли Ñказанное оÑноÑение не Ñ
ÑаниÑÑÑ Ð½Ð° диÑке, как напÑÐ¸Ð¼ÐµÑ Ð¿ÑедÑÑавление, Ð´Ð°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NULL.
pg_relation_filepath подобна pg_relation_filenode, но возвÑаÑÐ°ÐµÑ Ð¿Ð¾Ð»Ð½Ñй пÑÑÑ Ðº ÑÐ°Ð¹Ð»Ñ (оÑноÑиÑелÑно каÑалога даннÑÑ
PGDATA) оÑноÑениÑ.
ФÑнкÑÐ¸Ñ pg_filenode_relation ÑвлÑеÑÑÑ Ð¾Ð±ÑаÑной к pg_relation_filenode. Ðна возвÑаÑÐ°ÐµÑ OID оÑноÑÐµÐ½Ð¸Ñ Ð¿Ð¾ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ OID «ÑаблиÑного пÑоÑÑÑанÑÑва» и «ÑÐ°Ð¹Ð»Ð¾Ð²Ð¾Ð¼Ñ ÑзлÑ». ÐÐ»Ñ ÑаблиÑÑ Ð² ÑаблиÑном пÑоÑÑÑанÑÑве по ÑмолÑÐ°Ð½Ð¸Ñ Ð² пеÑвом паÑамеÑÑе можно пеÑедаÑÑ 0.
РТаблиÑа 9.91 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, пÑедназнаÑеннÑе Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñавилами ÑоÑÑиÑовки.
ТаблиÑа 9.91. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñавилами ÑоÑÑиÑовки
ФÑнкÑÐ¸Ñ pg_collation_actual_version возвÑаÑÐ°ÐµÑ Ð´ÐµÐ¹ÑÑвÑÑÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð¾Ð±ÑекÑа пÑавила ÑоÑÑиÑовки, коÑоÑÐ°Ñ Ð² наÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑÑановлена в опеÑаÑионной ÑиÑÑеме. ÐÑли она оÑлиÑаеÑÑÑ Ð¾Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² pg_collation.collversion, Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¿ÐµÑеÑÑÑоиÑÑ Ð¾Ð±ÑекÑÑ, завиÑÑÑие Ð¾Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ пÑавила ÑоÑÑиÑовки. См. Ñакже ALTER COLLATION.
ФÑнкÑÐ¸Ñ pg_import_system_collations добавлÑÐµÑ Ð¿Ñавила ÑоÑÑиÑовки в ÑиÑÑемнÑй каÑалог pg_collation, анализиÑÑÑ Ð²Ñе локали, коÑоÑÑе она наÑ
Ð¾Ð´Ð¸Ñ Ð² опеÑаÑионной ÑиÑÑеме. ÐÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¸ÑполÑзÑÐµÑ initdb; за подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.2.2. ÐÑли позднее в ÑиÑÑÐµÐ¼Ñ ÑÑÑанавливаÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе локали, ÑÑÑ ÑÑнкÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ запÑÑÑиÑÑ Ñнова, ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ð»Ð¸ÑÑ Ð¿Ñавила ÑоÑÑиÑовки Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ
локалей. Ðокали, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
обнаÑÑживаÑÑÑÑ ÑÑÑеÑÑвÑÑÑие запиÑи в pg_collation, бÑдÑÑ Ð¿ÑопÑÑенÑ. (ÐбÑекÑÑ Ð¿Ñавил ÑоÑÑиÑовки Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÐµÐ¹, коÑоÑÑе пеÑеÑÑаÑÑ ÑÑÑеÑÑвоваÑÑ Ð² опеÑаÑионной ÑиÑÑеме, никогда не ÑдалÑÑÑÑÑ ÑÑой ÑÑнкÑией.) РпаÑамеÑÑе schema обÑÑно пеÑедаÑÑÑÑ pg_catalog, но ÑÑо не обÑзаÑелÑно; пÑавила ÑоÑÑиÑовки могÑÑ Ð±ÑÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð¸ в дÑÑгÑÑ ÑÑ
емÑ. ÐÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÑиÑло ÑозданнÑÑ
ей обÑекÑов пÑавил ÑоÑÑиÑовки; вÑзÑваÑÑ ÐµÑ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.
ТаблиÑа 9.92. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о ÑекÑиониÑовании
ÐÐ»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±Ñего ÑазмеÑа даннÑÑ
, ÑодеÑжаÑиÑ
ÑÑ Ð² ÑаблиÑе measurement, опиÑанной в ÐодÑазделе 5.11.2.1, можно пÑимениÑÑ ÑледÑÑÑий запÑоÑ:
=# SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size
FROM pg_partition_tree('measurement');
total_size
------------
24 kB
(1 row)9.26.8. ФÑнкÑии обÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов
РТаблиÑе 9.93 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, пÑедназнаÑеннÑе Ð´Ð»Ñ Ð¾Ð±ÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов. ÐÑи ÑÑнкÑии нелÑÐ·Ñ Ð²ÑзÑваÑÑ Ð² пÑоÑеÑÑе воÑÑÑановлениÑ. ÐÑполÑзоваÑÑ ÑÑи ÑÑнкÑии ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм и владелÑÑÑ Ð¾Ð¿ÑеделÑнного индекÑа.
ТаблиÑа 9.93. ФÑнкÑии обÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| integer | обобÑÐ°ÐµÑ ÐµÑÑ Ð½Ðµ обобÑÑннÑе Ð·Ð¾Ð½Ñ ÑÑÑÐ°Ð½Ð¸Ñ |
| integer | обобÑÐ°ÐµÑ Ð·Ð¾Ð½Ñ ÑÑÑаниÑ, Ð¾Ñ Ð²Ð°ÑÑваÑÑÑÑ Ð´Ð°Ð½Ð½Ñй блок (еÑли она еÑÑ Ð½Ðµ обобÑена) |
| integer | ÑбÑÐ¾Ñ Ð¾Ð±Ð¾Ð±ÑÐµÐ½Ð¸Ñ Ð·Ð¾Ð½Ñ ÑÑÑаниÑ, Ð¾Ñ Ð²Ð°ÑÑваÑÑей даннÑй блок (еÑли она бÑла обобÑена) |
| bigint | пеÑемеÑÐ°ÐµÑ ÑлеменÑÑ Ð¸Ð· ÑпиÑка запиÑей GIN, ожидаÑÑÐ¸Ñ Ð¾Ð±ÑабоÑки, в оÑновнÑÑ ÑÑÑÑкÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑа |
ФÑнкÑÐ¸Ñ brin_summarize_new_values пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ OID или Ð¸Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑа BRIN и пÑоÑмаÑÑÐ¸Ð²Ð°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ Ð² поиÑкаÑ
зон ÑÑÑÐ°Ð½Ð¸Ñ Ð² базовой ÑаблиÑе, еÑÑ Ð½Ðµ обобÑÑннÑÑ
в индекÑе; Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ñакой Ð·Ð¾Ð½Ñ Ð² ÑезÑлÑÑаÑе ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑÑÐ°Ð½Ð¸Ñ ÑаблиÑÑ ÑоздаÑÑÑÑ Ð½Ð¾Ð²Ñй обобÑаÑÑий коÑÑеж в индекÑе. ÐозвÑаÑÐ°ÐµÑ ÑÑа ÑÑнкÑÐ¸Ñ ÑиÑло вÑÑавленнÑÑ
в Ð¸Ð½Ð´ÐµÐºÑ Ð¾Ð±Ð¾Ð±ÑаÑÑиÑ
запиÑей о зонаÑ
ÑÑÑаниÑ. ФÑнкÑÐ¸Ñ brin_summarize_range Ð´ÐµÐ»Ð°ÐµÑ Ñо же Ñамое, но заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ ÑолÑко зонÑ, оÑ
ваÑÑваÑÑÑÑ Ð±Ð»Ð¾Ðº Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм номеÑом.
ФÑнкÑÐ¸Ñ gin_clean_pending_list пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ OID или Ð¸Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑа GIN и оÑиÑÐ°ÐµÑ Ð¾ÑеÑÐµÐ´Ñ Ñказанного индекÑа, маÑÑово пеÑемеÑÐ°Ñ ÑлеменÑÑ Ð¸Ð· Ð½ÐµÑ Ð² оÑновнÑÑ ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
GIN. ÐозвÑаÑÐ°ÐµÑ Ð¾Ð½Ð° ÑиÑло ÑÑÑаниÑ, ÑбÑаннÑÑ
из оÑеÑеди. ÐамеÑÑÑе, ÑÑо еÑли Ð´Ð»Ñ Ð¾Ð±ÑабоÑки ей пеÑедаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑ GIN, поÑÑÑоеннÑй Ñ Ð¾ÑклÑÑÑннÑм паÑамеÑÑом fastupdate, оÑиÑÑка не пÑоизводиÑÑÑ Ð¸ возвÑаÑаеÑÑÑ Ð·Ð½Ð°Ñение 0, Ñак как Ñ Ñакого индекÑа Ð½ÐµÑ Ð¾ÑеÑеди запиÑей. ÐодÑобнее об оÑеÑеди запиÑей и паÑамеÑÑе fastupdate ÑаÑÑказÑваеÑÑÑ Ð² ÐодÑазделе 66.4.1 и Разделе 66.5.
9.26.9. ФÑнкÑии Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¾Ð±ÑÑнÑми Ñайлами
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.94, пÑедоÑÑавлÑÑÑ Ð¿ÑÑмой доÑÑÑп к Ñайлам, наÑ
одÑÑимÑÑ Ð½Ð° ÑеÑвеÑе. ÐбÑÑнÑм полÑзоваÑелÑм, не вклÑÑÑннÑм в ÑÐ¾Ð»Ñ pg_read_server_files, они позволÑÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ ÑолÑко к Ñайлам в каÑалоге клаÑÑеÑа баз даннÑÑ
и в каÑалоге log_directory. ÐÐ»Ñ Ñайлов в каÑалоге клаÑÑеÑа ÑÑим ÑÑнкÑиÑм пеÑедаÑÑÑÑ Ð¾ÑноÑиÑелÑнÑй пÑÑÑ, а Ð´Ð»Ñ Ñайлов жÑÑнала â пÑÑÑ, ÑооÑвеÑÑÑвÑÑÑий знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа log_directory.
ÐамеÑÑÑе, ÑÑо полÑзоваÑели, обладаÑÑие пÑавом EXECUTE Ð´Ð»Ñ pg_read_file() или ÑвÑзаннÑÑ
ÑÑнкÑий, имеÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑиÑаÑÑ Ð»Ñбой Ñайл на ÑеÑвеÑе, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоÑиÑаÑÑ ÑеÑвеÑнÑй пÑоÑеÑÑ, и ÑÑо ÑÑение не огÑаниÑиваеÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ð¼Ð¸ пÑовеÑками ÑÑÐ¾Ð²Ð½Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. Ð ÑаÑÑноÑÑи ÑÑо ознаÑаеÑ, ÑÑо полÑзоваÑÐµÐ»Ñ Ñ Ñакими пÑавами Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоÑиÑаÑÑ ÑодеÑжимое ÑаблиÑÑ pg_authid, в коÑоÑой Ñ
ÑанÑÑÑÑ Ð´Ð°Ð½Ð½Ñе аÑÑенÑиÑикаÑии, Ñавно как и лÑбой дÑÑгой Ñайл в базе даннÑÑ
. Таким обÑазом, ÑазÑеÑаÑÑ Ð´Ð¾ÑÑÑп к ÑÑим ÑÑнкÑиÑм ÑледÑÐµÑ Ñ Ð±Ð¾Ð»ÑÑой оÑÑоÑожноÑÑÑÑ.
ТаблиÑа 9.94. ФÑнкÑии Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¾Ð±ÑÑнÑми Ñайлами
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| setof text | ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑодеÑжимое каÑалога (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм). |
| setof record | ÐÑÐ²Ð¾Ð´Ð¸Ñ Ð¸Ð¼Ñ, ÑÐ°Ð·Ð¼ÐµÑ Ð¸ вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñайлов в каÑалоге жÑÑнала ÑообÑений. ÐоÑÑÑп к ÑÑой ÑÑнкÑии имеÑÑ ÑÐ»ÐµÐ½Ñ Ñоли pg_monitor, Ñакже его можно ÑазÑеÑиÑÑ Ð¸ дÑÑгим ÑолÑм обÑÑнÑÑ
полÑзоваÑелей. |
| setof record | ÐÑÐ²Ð¾Ð´Ð¸Ñ Ð¸Ð¼Ñ, ÑÐ°Ð·Ð¼ÐµÑ Ð¸ вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñайлов в каÑалоге WAL. ÐоÑÑÑп к ÑÑой ÑÑнкÑии имеÑÑ ÑÐ»ÐµÐ½Ñ Ñоли pg_monitor, Ñакже его можно ÑазÑеÑиÑÑ Ð¸ дÑÑгим ÑолÑм обÑÑнÑÑ
полÑзоваÑелей. |
| setof record | ÐÑÐ²Ð¾Ð´Ð¸Ñ Ð¸Ð¼Ñ, ÑÐ°Ð·Ð¼ÐµÑ Ð¸ вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñайлов в каÑалоге ÑоÑÑоÑÐ½Ð¸Ñ Ð°ÑÑ
ива WAL. ÐоÑÑÑп к ÑÑой ÑÑнкÑии имеÑÑ ÑÐ»ÐµÐ½Ñ Ñоли pg_monitor, Ñакже его можно ÑазÑеÑиÑÑ Ð¸ дÑÑгим ÑолÑм обÑÑнÑÑ
полÑзоваÑелей. |
| setof record | ÐÑÐ²Ð¾Ð´Ð¸Ñ Ð¸Ð¼Ñ, ÑÐ°Ð·Ð¼ÐµÑ Ð¸ вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñайлов во вÑеменном каÑалоге Ð´Ð»Ñ ÑаблиÑного пÑоÑÑÑанÑÑва tablespace. ÐÑли паÑамеÑÑ tablespace не задан, подÑазÑмеваеÑÑÑ ÑаблиÑное пÑоÑÑÑанÑÑво pg_default. ÐоÑÑÑп к ÑÑой ÑÑнкÑии имеÑÑ ÑÐ»ÐµÐ½Ñ Ñоли pg_monitor, Ñакже его можно ÑазÑеÑиÑÑ Ð¸ дÑÑгим ÑолÑм обÑÑнÑÑ
полÑзоваÑелей. |
| text | ÐозвÑаÑÐ°ÐµÑ ÑодеÑжимое ÑекÑÑового Ñайла (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм). |
| bytea | ÐозвÑаÑÐ°ÐµÑ ÑодеÑжимое Ñайла (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм). |
| record | ÐозвÑаÑÐ°ÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ñайле (по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм, но пÑаво на ÐµÑ Ð²Ñполнение (EXECUTE) можно даÑÑ Ð¸ дÑÑгим полÑзоваÑелÑм). |
ÐекоÑоÑÑе из ÑÑиÑ
ÑÑнкÑий пÑинимаÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑй паÑамеÑÑ missing_ok, коÑоÑÑй опÑеделÑÐµÑ Ð¸Ñ
поведение в ÑлÑÑае оÑÑÑÑÑÑÐ²Ð¸Ñ Ñайла или каÑалога. ÐÑли он Ñавен true, ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NULL (за иÑклÑÑением pg_ls_dir, коÑоÑÐ°Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð¿ÑÑÑое множеÑÑво). ÐÑли он Ñавен false, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â false.
pg_ls_dir возвÑаÑÐ°ÐµÑ Ð¸Ð¼ÐµÐ½Ð° вÑеÑ
Ñайлов (а Ñакже каÑалогов и дÑÑгиÑ
ÑпеÑиалÑнÑÑ
Ñайлов) в заданном каÑалоге. ÐаÑамеÑÑ include_dot_dirs опÑеделÑеÑ, бÑдÑÑ Ð»Ð¸ в ÑезÑлÑÑиÑÑÑÑий Ð½Ð°Ð±Ð¾Ñ Ð²ÐºÐ»ÑÑаÑÑÑÑ ÐºÐ°Ñалоги «.» и «..». Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½Ð¸ не вклÑÑаÑÑÑÑ (false), но иÑ
можно вклÑÑиÑÑ, ÑÑÐ¾Ð±Ñ Ñ Ð¿Ð°ÑамеÑÑом missing_ok ÑавнÑм true, пÑÑÑой каÑалог можно бÑло оÑлиÑиÑÑ Ð¾Ñ Ð½ÐµÑÑÑеÑÑвÑÑÑего.
pg_ls_logdir возвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ, ÑÐ°Ð·Ð¼ÐµÑ Ð¸ вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (mtime) вÑеÑ
Ñайлов в каÑалоге жÑÑналов ÑообÑений. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзоваÑÑ ÐµÑ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм и Ñленам Ñоли pg_monitor. ÐÑÑгим полÑзоваÑелÑм доÑÑÑп к ней можно даÑÑ, иÑполÑзÑÑ GRANT. ÐÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ показÑÐ²Ð°ÐµÑ ÑÐ°Ð¹Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸, наÑинаÑÑимиÑÑ Ñ ÑоÑки, каÑалоги и дÑÑгие ÑпеÑиалÑнÑе ÑайлÑ.
pg_ls_waldir возвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ, ÑÐ°Ð·Ð¼ÐµÑ Ð¸ вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (mtime) вÑеÑ
Ñайлов в каÑалоге жÑÑнала пÑедзапиÑи (WAL). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзоваÑÑ ÐµÑ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм и Ñленам Ñоли pg_monitor. ÐÑÑгим полÑзоваÑелÑм доÑÑÑп к ней можно даÑÑ, иÑполÑзÑÑ GRANT. ÐÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ показÑÐ²Ð°ÐµÑ ÑÐ°Ð¹Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸, наÑинаÑÑимиÑÑ Ñ ÑоÑки, каÑалоги и дÑÑгие ÑпеÑиалÑнÑе ÑайлÑ.
pg_ls_archive_statusdir возвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ, ÑÐ°Ð·Ð¼ÐµÑ Ð¸ вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (mtime) вÑеÑ
Ñайлов в каÑалоге ÑоÑÑоÑÐ½Ð¸Ñ Ð°ÑÑ
ива WAL pg_wal/archive_status. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзоваÑÑ ÐµÑ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм и Ñленам Ñоли pg_monitor. ÐÑÑгим полÑзоваÑелÑм доÑÑÑп к ней можно даÑÑ, иÑполÑзÑÑ GRANT. ÐÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ показÑÐ²Ð°ÐµÑ ÑÐ°Ð¹Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸, наÑинаÑÑимиÑÑ Ñ ÑоÑки, каÑалоги и дÑÑгие ÑпеÑиалÑнÑе ÑайлÑ.
pg_ls_tmpdir возвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ, ÑÐ°Ð·Ð¼ÐµÑ Ð¸ вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (mtime) вÑеÑ
Ñайлов во вÑеменном каÑалоге Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑаблиÑного пÑоÑÑÑанÑÑва tablespace. ÐÑли паÑамеÑÑ tablespace не задан, подÑазÑмеваеÑÑÑ ÑаблиÑное пÑоÑÑÑанÑÑво pg_default. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзоваÑÑ ÐµÑ ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм и Ñленам Ñоли pg_monitor. ÐÑÑгим полÑзоваÑелÑм доÑÑÑп к ней можно даÑÑ, иÑполÑзÑÑ GRANT. ÐÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ показÑÐ²Ð°ÐµÑ ÑÐ°Ð¹Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸, наÑинаÑÑимиÑÑ Ñ ÑоÑки, каÑалоги и дÑÑгие ÑпеÑиалÑнÑе ÑайлÑ.
pg_read_file возвÑаÑÐ°ÐµÑ ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ ÑекÑÑового Ñайла Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑмеÑÐµÐ½Ð¸Ñ (offset), ÑазмеÑом не болÑÑе length Ð±Ð°Ð¹Ñ (ÑÐ°Ð·Ð¼ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼ÐµÐ½ÑÑе, еÑли Ñайл конÑиÑÑÑ ÑанÑÑе). ÐÑли ÑмеÑение offset оÑÑиÑаÑелÑно, оно оÑÑÑиÑÑваеÑÑÑ Ð¾Ñ ÐºÐ¾Ð½Ñа Ñайла. ÐÑли паÑамеÑÑÑ offset и length опÑÑенÑ, возвÑаÑаеÑÑÑ Ð²ÑÑ ÑодеÑжимое Ñайла. ÐÑоÑиÑаннÑе из Ñайла байÑÑ Ð¾Ð±ÑабаÑÑваÑÑÑÑ ÐºÐ°Ðº ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² ÑеÑвеÑной кодиÑовке; еÑли они оказÑваÑÑÑÑ Ð½ÐµÐ´Ð¾Ð¿ÑÑÑимÑми Ð´Ð»Ñ ÑÑой кодиÑовки, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка.
pg_read_binary_file подобна pg_read_file, но ÐµÑ ÑезÑлÑÑÐ°Ñ Ð¸Ð¼ÐµÐµÑ Ñип bytea; как ÑледÑÑвие, никакие пÑовеÑки кодиÑовки не вÑполнÑÑÑÑÑ. Ð ÑоÑеÑании Ñ convert_from ÑÑÑ ÑÑнкÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пÑименÑÑÑ Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ Ñайлов в пÑоизволÑной кодиÑовке:
SELECT convert_from(pg_read_binary_file('file_in_utf8.txt'), 'UTF8');pg_stat_file возвÑаÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, ÑодеÑжаÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ñайла, вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего обÑаÑÐµÐ½Ð¸Ñ Ð¸ поÑледнего изменениÑ, а Ñакже вÑÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑоÑÑоÑÐ½Ð¸Ñ (ÑолÑко в Unix-ÑиÑÑемаÑ
), вÑÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ (ÑолÑко в Windows) и пÑизнак Ñипа boolean, показÑваÑÑий, ÑÑо ÑÑо каÑалог. ÐÑимеÑÑ Ð¸ÑполÑзованиÑ:
SELECT * FROM pg_stat_file('filename');
SELECT (pg_stat_file('filename')).modification;9.26.10. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекомендаÑелÑнÑми блокиÑовками
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.95, пÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекомендаÑелÑнÑми блокиÑовками. ÐодÑобнее об Ð¸Ñ Ð¸ÑполÑзовании можно ÑзнаÑÑ Ð² ÐодÑазделе 13.3.5.
ТаблиÑа 9.95. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекомендаÑелÑнÑми блокиÑовками
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| void | ÐолÑÑÐ°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа |
| void | ÐолÑÑÐ°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа |
| void | ÐолÑÑÐ°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа |
| void | ÐолÑÑÐ°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа |
| boolean | ÐÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа |
| boolean | ÐÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа |
| void | ÐÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð²Ñе блокиÑовки на ÑÑовне ÑеанÑа, ÑдеÑживаемÑе в данном ÑеанÑе |
| boolean | ÐÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа |
| boolean | ÐÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа |
| void | ÐолÑÑÐ°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑÑанзакÑии |
| void | ÐолÑÑÐ°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑÑанзакÑии |
| void | ÐолÑÑÐ°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑÑанзакÑии |
| void | ÐолÑÑÐ°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑÑанзакÑии |
| boolean | ÐолÑÑÐ°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа, еÑли ÑÑо возможно |
| boolean | ÐолÑÑÐ°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа, еÑли ÑÑо возможно |
| boolean | ÐолÑÑÐ°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа, еÑли ÑÑо возможно |
| boolean | ÐолÑÑÐ°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа, еÑли ÑÑо возможно |
| boolean | ÐолÑÑÐ°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑÑанзакÑии, еÑли ÑÑо возможно |
| boolean | ÐолÑÑÐ°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑÑанзакÑии, еÑли ÑÑо возможно |
| boolean | ÐолÑÑÐ°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑÑанзакÑии, еÑли ÑÑо возможно |
| boolean | ÐолÑÑÐ°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑÑанзакÑии, еÑли ÑÑо возможно |
pg_advisory_lock блокиÑÑÐµÑ Ð¾Ð¿ÑеделÑннÑй пÑиложением ÑеÑÑÑÑ, задаваемÑй одним 64-биÑнÑм или двÑÐ¼Ñ 32-биÑнÑми клÑÑами (замеÑÑÑе, ÑÑо иÑ
знаÑÐµÐ½Ð¸Ñ Ð½Ðµ пеÑеÑекаÑÑÑÑ). ÐÑли иденÑиÑикаÑÐ¾Ñ ÑÑого ÑеÑÑÑÑа ÑдеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð´ÑÑгой ÑеанÑ, ÑÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ завеÑÑиÑÑÑ, пока ÑеÑÑÑÑ Ð½Ðµ ÑÑÐ°Ð½ÐµÑ Ð´Ð¾ÑÑÑпнÑм. ÐÐ°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð² иÑклÑÑиÑелÑном Ñежиме. ÐÑли поÑÑÑÐ¿Ð°ÐµÑ ÑÑÐ°Ð·Ñ Ð½ÐµÑколÑко запÑоÑов на блокиÑовкÑ, они накапливаÑÑÑÑ, Ñак ÑÑо еÑли один ÑеÑÑÑÑ Ð±Ñл заблокиÑован ÑÑи Ñаза, его необÑ
одимо ÑÑи Ñаза ÑазблокиÑоваÑÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð½ бÑл доÑÑÑпен в дÑÑгиÑ
ÑеанÑаÑ
.
pg_advisory_lock_shared ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ pg_advisory_lock, но позволÑÐµÑ ÑазделÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ñ Ð´ÑÑгими ÑеанÑами, запÑаÑиваÑÑими ÐµÑ ÐºÐ°Ðº ÑазделÑемÑÑ. ÐÑполнение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑиоÑÑановлено, ÑолÑко еÑли дÑÑгой ÑÐµÐ°Ð½Ñ Ð·Ð°Ð¿ÑоÑил ÐµÑ Ð² иÑклÑÑиÑелÑном Ñежиме.
pg_try_advisory_lock ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ pg_advisory_lock, но не ждÑÑ Ð¾ÑÐ²Ð¾Ð±Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÑеÑÑÑÑа. ÐÑа ÑÑнкÑÐ¸Ñ Ð»Ð¸Ð±Ð¾ немедленно полÑÑÐ°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð¸ возвÑаÑÐ°ÐµÑ true, либо ÑÑÐ°Ð·Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ false, еÑли полÑÑиÑÑ ÐµÑ Ð½Ðµ ÑдаÑÑÑÑ.
pg_try_advisory_lock_shared ÑабоÑÐ°ÐµÑ ÐºÐ°Ðº pg_try_advisory_lock, но пÑÑаеÑÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ ÑазделÑемÑÑ, а не иÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ.
pg_advisory_unlock оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ñанее полÑÑеннÑÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа. ÐÑли блокиÑовка оÑвобождена ÑÑпеÑно, ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ true, а еÑли она не бÑла занÑÑа â false, пÑи ÑÑом ÑеÑÐ²ÐµÑ Ð²ÑдаÑÑ Ð¿ÑедÑпÑеждение SQL.
pg_advisory_unlock_shared ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ pg_advisory_unlock, но оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ ÑазделÑемÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð½Ð° ÑÑовне ÑеанÑа.
pg_advisory_unlock_all оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð²Ñе блокиÑовки на ÑÑовне ÑеанÑа, закÑеплÑннÑе за ÑекÑÑим ÑеанÑом. (ÐÑа ÑÑнкÑÐ¸Ñ Ð½ÐµÑвно вÑзÑваеÑÑÑ Ð² конÑе лÑбого ÑеанÑа, даже пÑи неÑÑаÑном оÑклÑÑении клиенÑа.)
pg_advisory_xact_lock ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ pg_advisory_lock, но ÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка авÑомаÑиÑеÑки оÑвобождаеÑÑÑ Ð² конÑе ÑекÑÑей ÑÑанзакÑии и не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ñвобождена ÑвнÑм обÑазом.
pg_advisory_xact_lock_shared подобна ÑÑнкÑии pg_advisory_lock_shared, но ÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка авÑомаÑиÑеÑки оÑвобождаеÑÑÑ Ð² конÑе ÑекÑÑей ÑÑанзакÑии и не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ñвобождена ÑвнÑм обÑазом.
pg_try_advisory_xact_lock ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ pg_try_advisory_lock, но ÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка (еÑли она бÑла полÑÑена) авÑомаÑиÑеÑки оÑвобождаеÑÑÑ Ð² конÑе ÑекÑÑей ÑÑанзакÑии и не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ñвобождена ÑвнÑм обÑазом.
pg_try_advisory_xact_lock_shared ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ pg_try_advisory_lock_shared, но ÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка (еÑли она бÑла полÑÑена) авÑомаÑиÑеÑки оÑвобождаеÑÑÑ Ð² конÑе ÑекÑÑей ÑÑанзакÑии и не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ñвобождена ÑвнÑм обÑазом.