20.17. ÐаÑамеÑÑÑ Ð´Ð»Ñ ÑазÑабоÑÑиков #
СледÑÑÑие паÑамеÑÑÑ Ð¿ÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² пÑоÑеÑÑе ÑазÑабоÑки, и иÑ
никогда не ÑледÑÐµÑ Ð¿ÑименÑÑÑ Ð² пÑоизводÑÑвенной ÑÑеде. (Ðднако в некоÑоÑÑÑ
ÑлÑÑаÑÑ
они могÑÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð²Ð¾ÑÑÑановиÑÑ ÑилÑно повÑеждÑннÑе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
.) Ðо ÑÑим пÑиÑинам они оÑÑÑÑÑÑвÑÑÑ Ð² пÑимеÑе Ñайла postgresql.conf. ÐамеÑÑÑе, ÑÑо Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ
из ÑÑиÑ
паÑамеÑÑов ÑÑебÑÑÑÑÑ ÑпеÑиалÑнÑе Ñлаги компилÑÑии.
allow_in_place_tablespaces(boolean) #ÐозволÑÐµÑ ÑоздаваÑÑ ÑаблиÑнÑе пÑоÑÑÑанÑÑва как каÑалоги в
pg_tblspc, когда в каÑеÑÑве пÑÑи ÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² командеCREATE TABLESPACEзадана пÑÑÑÐ°Ñ ÑÑÑока. ÐÑа возможноÑÑÑ Ð¿ÑедназнаÑена Ð´Ð»Ñ ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑенаÑиев ÑепликаÑии, когда ведÑÑий и ведомÑй ÑеÑвеÑÑ ÑабоÑаÑÑ Ð½Ð° одном компÑÑÑеÑе. СÑÑеÑÑвование каÑалогов в ÑÑом меÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñм Ð´Ð»Ñ ÑÑедÑÑв ÑезеÑвного копиÑованиÑ, коÑоÑÑе ÑаÑÑÑиÑÑваÑÑ Ð½Ð°Ð¹Ñи Ñам ÑолÑко ÑимволиÑеÑкие ÑÑÑлки. ÐзменÑÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавомSET.allow_system_table_mods(boolean) #РазÑеÑÐ°ÐµÑ Ð¼Ð¾Ð´Ð¸ÑикаÑии ÑÑÑÑкÑÑÑÑ ÑиÑÑемнÑÑ ÑаблиÑ, а Ñакже некоÑоÑÑе дÑÑгие поÑенÑиалÑно опаÑнÑе опеÑаÑии Ñ ÑиÑÑемнÑми ÑаблиÑами. ÐÑли даннÑй паÑамеÑÑ Ð¾ÑклÑÑÑн, ÑÑи дейÑÑÐ²Ð¸Ñ Ð½Ðµ ÑазÑеÑÐµÐ½Ñ Ð´Ð°Ð¶Ðµ ÑÑпеÑполÑзоваÑелÑм. ÐепÑодÑманное иÑполÑзование ÑÑого паÑамеÑÑа ÑÑеваÑо неиÑпÑавимÑми повÑеждениÑми даннÑÑ Ð¸ ÑазÑÑÑением вÑей СУÐÐ. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавом
SET.backtrace_functions(string) #Ð ÑÑом паÑамеÑÑе задаÑÑÑÑ ÑазделÑннÑй запÑÑÑми ÑпиÑок имÑн ÑÑнкÑий C. Ð ÑлÑÑае Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ð¾Ñибки в ÑÑнкÑии, Ð¸Ð¼Ñ ÐºÐ¾ÑоÑой пÑиÑÑÑÑÑвÑÐµÑ Ð² ÑÑом ÑпиÑке, в жÑÑнал ÑеÑвеÑа помимо ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке бÑÐ´ÐµÑ Ð²ÑводиÑÑÑÑ ÑÑаÑÑиÑовка ÑÑека. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð¾Ñладки в опÑеделÑннÑÑ Ð¼ÐµÑÑÐ°Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода.
ÐоддеÑжка ÑÑаÑÑиÑовки ÑÑека имееÑÑÑ Ð½Ðµ на вÑÐµÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ , а инÑоÑмаÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑенноÑÑÑ ÑÑаÑÑиÑовки завиÑÐ¸Ñ Ð¾Ñ Ð¿Ð°ÑамеÑÑов компилÑÑии.
ТолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавом
SETмогÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ.debug_discard_caches(integer) #ÐÑли ÑÑÑановлено знаÑение
1, ÐºÐ°Ð¶Ð´Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ ÐºÐµÑа ÑиÑÑемного каÑалога ÑÑановиÑÑÑ Ð½ÐµÐ´ÐµÐ¹ÑÑвиÑелÑной пÑи пеÑвой же возможноÑÑи, незавиÑимо Ð¾Ñ Ñого, пÑоизоÑло ли на Ñамом деле ÑÑо-Ñо, ÑÑо могло Ð±Ñ ÑделаÑÑ ÐµÑ Ð½ÐµÐ´ÐµÐ¹ÑÑвиÑелÑной. Ð ÑезÑлÑÑаÑе кеÑиÑование ÑиÑÑемнÑÑ ÐºÐ°Ñалогов ÑакÑиÑеÑки оÑклÑÑаеÑÑÑ, поÑÑÐ¾Ð¼Ñ ÑеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ ÑабоÑаÑÑ Ð¾ÑÐµÐ½Ñ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾. ÐÑи ÑвелиÑении знаÑÐµÐ½Ð¸Ñ ÑÑого паÑамеÑÑа аннÑлиÑование кеÑа пÑоизводиÑÑÑ ÑекÑÑÑивно, ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº еÑÑ Ð±Ð¾Ð»ÑÑÐµÐ¼Ñ Ð·Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð¸Ñ Ð¸ полезно ÑолÑко Ð´Ð»Ñ ÑеÑÑиÑование ÑобÑÑвенно логики кеÑиÑованиÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â0â вклÑÑÐ°ÐµÑ Ð¾Ð±ÑÑное поведение кеÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ñалога.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ пÑи вÑÑвлении ÑÑÑдновоÑпÑоизводимÑÑ Ð¾Ñибок, ÑвÑзаннÑÑ Ñ Ð¾Ð´Ð½Ð¾Ð²ÑеменнÑми изменениÑми в каÑалоге, но Ñедко бÑÐ²Ð°ÐµÑ Ð½Ñжен в дÑÑÐ³Ð¸Ñ ÑлÑÑаÑÑ . ÐодÑобнее он опиÑан в ÑÐ°Ð¹Ð»Ð°Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода
visible.cиpg_config_manual.h.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ, еÑли пÑи компилÑÑии бÑл опÑеделÑн макÑоÑ
DISCARD_CACHES_ENABLED(он опÑеделÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки пÑи вÑполнении configure Ñ ÐºÐ»ÑÑом--enable-cassert). РобÑÑнÑÑ ÑбоÑÐºÐ°Ñ ÐµÐ³Ð¾ знаÑение вÑегда бÑдеÑ0; пÑи попÑÑке измениÑÑ ÑÑо знаÑение Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ð¾Ñибка.debug_io_direct(string) #ÐбÑаÑаеÑÑÑ Ðº ÑдÑÑ Ð´Ð»Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð¸Ð·Ð°Ñии кеÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¾ÑноÑений и Ñайлов WAL, иÑполÑзÑÑ
O_DIRECT(болÑÑинÑÑво Unix-подобнÑÑ ÑиÑÑем),F_NOCACHE(macOS) илиFILE_FLAG_NO_BUFFERING(Windows).ÐнаÑение Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедÑÑавлÑÑÑ Ñобой пÑÑÑÑÑ ÑÑÑÐ¾ÐºÑ (по ÑмолÑаниÑ), ÑÑÐ¾Ð±Ñ Ð¾ÑклÑÑиÑÑ Ð¸ÑполÑзование пÑÑмого ввода-вÑвода, или ÑпиÑок опеÑаÑий, ÑазделÑннÑÑ Ð·Ð°Ð¿ÑÑÑми, в коÑоÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¿ÑÑмой ввод-вÑвод. ÐаÑианÑÑ Ð¾Ð¿ÐµÑаÑий:
dataÐ´Ð»Ñ Ð¾ÑновнÑÑ Ñайлов даннÑÑ ,walÐ´Ð»Ñ Ñайлов WAL иwal_initÐ´Ð»Ñ Ñайлов WAL пÑи пеÑвонаÑалÑном ÑазмеÑении. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.ÐекоÑоÑÑе опеÑаÑионнÑе и ÑайловÑе ÑиÑÑÐµÐ¼Ñ Ð½Ðµ поддеÑживаÑÑ Ð¿ÑÑмой ввод-вÑвод, Ñак ÑÑо неÑÑандаÑÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа могÑÑ Ð½Ðµ пÑинимаÑÑÑÑ Ð¿Ñи запÑÑке или вÑзÑваÑÑ Ð¾Ñибки.
РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑа ÑÑнкÑионалÑноÑÑÑ ÑÐ½Ð¸Ð¶Ð°ÐµÑ Ð¿ÑоизводиÑелÑноÑÑÑ Ð¸ пÑедназнаÑена ÑолÑко Ð´Ð»Ñ ÑеÑÑиÑованиÑ.
debug_parallel_query(enum) #ÐозволÑÐµÑ ÑаÑпаÑаллеливаÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð² ÑелÑÑ ÑеÑÑиÑованиÑ, даже когда Ð¾Ñ ÑÑого не ожидаеÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ вÑигÑÑÑа в ÑкоÑоÑÑи. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа
debug_parallel_queryâoff(иÑполÑзоваÑÑ Ð¿Ð°ÑаллелÑнÑй Ñежим ÑолÑко когда ожидаеÑÑÑ ÑвелиÑение пÑоизводиÑелÑноÑÑи),on(пÑинÑдиÑелÑно ÑаÑпаÑаллеливаÑÑ Ð²Ñе запÑоÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ ÑÑо безопаÑно) иregress(какon, но Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑми изменениÑми поведениÑ, опиÑаннÑми ниже).ÐовоÑÑ ÑоÑнее, Ñо знаÑением
onÑзелGatherдобавлÑеÑÑÑ Ð² веÑÑÐ¸Ð½Ñ Ð»Ñбого плана запÑоÑа, Ð´Ð»Ñ ÐºÐ¾ÑоÑого допÑÑкаеÑÑÑ ÑаÑпаÑаллеливание, Ñак ÑÑо запÑÐ¾Ñ Ð²ÑполнÑеÑÑÑ Ð²Ð½ÑÑÑи паÑаллелÑного иÑполниÑелÑ. Ðаже когда паÑаллелÑнÑй иÑполниÑÐµÐ»Ñ Ð½ÐµÐ´Ð¾ÑÑÑпен или не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован, Ñакие опеÑаÑии, как запÑÑк подÑÑанзакÑии, коÑоÑÑе не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑполнÑÑÑÑÑ Ð² конÑекÑÑе паÑаллелÑного запÑоÑа, не бÑдÑÑ Ð²ÑполнÑÑÑÑÑ Ð² ÑÑом Ñежиме, еÑли ÑолÑко планиÑовÑик не ÑеÑиÑ, ÑÑо ÑÑо пÑиведÑÑ Ðº оÑибке запÑоÑа. ÐÑли пÑи вклÑÑении ÑÑого паÑамеÑÑа возникаÑÑ Ð¾Ñибки или вÑдаÑÑÑÑ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñе ÑезÑлÑÑаÑÑ, веÑоÑÑно, некоÑоÑÑе ÑÑнкÑии, задейÑÑвованнÑе в ÑÑом запÑоÑе, нÑжно помеÑиÑÑ ÐºÐ°ÐºPARALLEL UNSAFE(или, возможно,PARALLEL RESTRICTED).ÐнаÑение
regressдейÑÑвÑÐµÑ Ñак же, как и знаÑениеon, Ñ Ð½ÐµÐºÐ¾ÑоÑÑми дополниÑелÑнÑми оÑобенноÑÑÑми, пÑедназнаÑеннÑми Ð´Ð»Ñ Ð¾Ð±Ð»ÐµÐ³ÑÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑкого ÑегÑеÑÑионного ÑеÑÑиÑованиÑ. ÐбÑÑно ÑообÑÐµÐ½Ð¸Ñ Ð¾Ñ Ð¿Ð°ÑаллелÑнÑÑ Ð¸ÑполниÑелей вклÑÑаÑÑ ÑÑÑÐ¾ÐºÑ ÐºÐ¾Ð½ÑекÑÑа, оÑмеÑаÑÑÑÑ ÑÑо, но знаÑениеregressподавлÑÐµÑ ÑÑÑ ÑÑÑокÑ, Ñак ÑÑо вÑвод не оÑлиÑаеÑÑÑ Ð¾Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð² не паÑаллелÑном Ñежиме. ÐÑоме Ñого, ÑзлÑGather, добавлÑемÑе в Ð¿Ð»Ð°Ð½Ñ Ñ ÑÑим знаÑением паÑамеÑÑа, ÑкÑÑваÑÑÑÑ Ð² вÑводеEXPLAIN, ÑÑÐ¾Ð±Ñ Ð²Ñвод ÑооÑвеÑÑÑвовал ÑомÑ, ÑÑо бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен пÑи оÑклÑÑении ÑÑого паÑамеÑÑа (Ñо знаÑениемoff).ignore_system_indexes(boolean) #ÐÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование индекÑов пÑи ÑÑении ÑиÑÑемнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ (пÑи ÑÑом индекÑÑ Ð²ÑÑ Ð¶Ðµ бÑдÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑÑÑ Ð¿Ñи запиÑи в ÑÑи ÑаблиÑÑ). ÐÑо полезно Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑабоÑоÑпоÑобноÑÑи пÑи повÑеждÑннÑÑ ÑиÑÑемнÑÑ Ð¸Ð½Ð´ÐµÐºÑÐ°Ñ . ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½ÐµÐ»ÑÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð¿Ð¾Ñле запÑÑка ÑеанÑа.
post_auth_delay(integer) #ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¿Ñи запÑÑке нового ÑеÑвеÑного пÑоÑеÑÑа поÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿ÑоÑедÑÑÑ Ð°ÑÑенÑиÑикаÑии. Ðн пÑедназнаÑен Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑазÑабоÑÑики имели возможноÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑ Ð¾ÑладÑик к ÑеÑвеÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в ÑекÑÐ½Ð´Ð°Ñ . ÐÑи нÑлевом знаÑении (по ÑмолÑаниÑ) задеÑжка оÑÑÑÑÑÑвÑеÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½ÐµÐ»ÑÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð¿Ð¾Ñле наÑала ÑеанÑа.
pre_auth_delay(integer) #ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð·Ð°Ð´ÐµÑжкÑ, добавлÑемÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле поÑÐ¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑеÑвеÑного пÑоÑеÑÑа, до вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿ÑоÑедÑÑÑ Ð°ÑÑенÑиÑикаÑии. Ðн пÑедназнаÑен Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑазÑабоÑÑики имели возможноÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑ Ð¾ÑладÑик к ÑеÑвеÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ð¿Ñи ÑеÑении пÑоблем Ñ Ð°ÑÑенÑиÑикаÑией. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в ÑекÑÐ½Ð´Ð°Ñ . ÐÑи нÑлевом знаÑении (по ÑмолÑаниÑ) задеÑжка оÑÑÑÑÑÑвÑеÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.trace_notify(boolean) #ÐклÑÑÐ°ÐµÑ Ð²Ñвод оÑÐµÐ½Ñ Ð¿Ð¾Ð´Ñобной оÑладоÑной инÑоÑмаÑии пÑи вÑполнении команд
LISTENиNOTIFY. ЧÑÐ¾Ð±Ñ ÑÑи ÑообÑÐµÐ½Ð¸Ñ Ð¿ÐµÑедавалиÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑ Ð¸Ð»Ð¸ в жÑÑнал ÑеÑвеÑа, паÑамеÑÑ client_min_messages или log_min_messages, ÑооÑвеÑÑÑвенно, должен имеÑÑ Ð·Ð½Ð°ÑениеDEBUG1или ниже.trace_recovery_messages(enum) #ÐклÑÑÐ°ÐµÑ Ð²Ñвод в жÑÑнал оÑладоÑнÑÑ ÑообÑений, ÑвÑзаннÑÑ Ñ Ð²Ð¾ÑÑÑановлением, коÑоÑÑе инаÑе не вÑводÑÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¿ÐµÑеопÑеделиÑÑ Ð¾Ð±ÑÑное знаÑение log_min_messages, но ÑолÑко Ð´Ð»Ñ ÑпеÑиÑиÑеÑÐºÐ¸Ñ ÑообÑений. Ðн пÑедназнаÑен Ð´Ð»Ñ Ð¾Ñладки Ñежима гоÑÑÑего ÑезеÑва. ÐопÑÑÑимÑе знаÑениÑ:
DEBUG5,DEBUG4,DEBUG3,DEBUG2,DEBUG1иLOG. ÐнаÑение по ÑмолÑаниÑ,LOG, никак не влиÑÐµÑ Ð½Ð° запиÑÑ ÑÑÐ¸Ñ ÑообÑений в жÑÑнал. С дÑÑгими знаÑениÑми оÑладоÑнÑе ÑообÑениÑ, ÑвÑзаннÑе Ñ Ð²Ð¾ÑÑÑановлением, имеÑÑие заданнÑй пÑиоÑиÑÐµÑ Ð¸Ð»Ð¸ вÑÑе, вÑводÑÑÑÑ, как еÑли Ð±Ñ Ð¾Ð½Ð¸ имели пÑиоÑиÑеÑLOG; пÑи ÑÑандаÑÑнÑÑ Ð·Ð½Ð°ÑениÑÑlog_min_messagesÑÑо ознаÑаеÑ, ÑÑо они бÑдÑÑ ÑикÑиÑоваÑÑÑÑ Ð² жÑÑнале ÑеÑвеÑа. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.trace_sort(boolean) #ÐклÑÑÐ°ÐµÑ Ð²Ñвод инÑоÑмаÑии об иÑполÑзовании ÑеÑÑÑÑов во вÑÐµÐ¼Ñ Ð¾Ð¿ÐµÑаÑий ÑоÑÑиÑовки. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾ÑÑÑпен, ÑолÑко еÑли пÑи ÑбоÑке PostgreSQL бÑл опÑеделÑн макÑоÑ
TRACE_SORT. (Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¼Ð°ÐºÑоÑTRACE_SORTопÑеделÑн.)trace_locks(boolean) #ÐклÑÑÐ°ÐµÑ Ð²Ñвод подÑобнÑÑ Ñведений о блокиÑÐ¾Ð²ÐºÐ°Ñ . Ð ÑÑи ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²Ñ Ð¾Ð´Ð¸Ñ Ð²Ð¸Ð´ опеÑаÑии блокиÑовки, Ñип блокиÑовки и ÑникалÑнÑй иденÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа, коÑоÑÑй блокиÑÑеÑÑÑ Ð¸Ð»Ð¸ ÑазблокиÑÑеÑÑÑ. ÐÑоме Ñого, в Ð¸Ñ ÑоÑÑаве вÑводÑÑÑÑ Ð±Ð¸ÑовÑе маÑки Ð´Ð»Ñ Ñипов блокиÑовок, Ñже полÑÑеннÑÑ Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ обÑекÑа, и Ð´Ð»Ñ Ñипов блокиÑовок, ожидаÑÑÐ¸Ñ ÐµÐ³Ð¾ оÑвобождениÑ. Рдополнение к ÑÑÐ¾Ð¼Ñ Ð²ÑводиÑÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво полÑÑеннÑÑ Ð¸ ожидаÑÑÐ¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñипа блокиÑовок, а Ñакже Ð¸Ñ Ð¾Ð±Ñее колиÑеÑÑво. Ðиже показан пÑÐ¸Ð¼ÐµÑ Ð²Ñвода в жÑÑнал:
LOG: LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1 wait(0) type(AccessShareLock) LOG: UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(INVALID)ÐодÑобнее о ÑÑÑÑкÑÑÑе вÑводимой инÑоÑмаÑии можно ÑзнаÑÑ Ð²
src/include/storage/lock.h.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾ÑÑÑпен, ÑолÑко еÑли пÑи компилÑÑии PostgreSQL бÑл опÑеделÑн макÑоÑ
LOCK_DEBUG.trace_lwlocks(boolean) #ÐклÑÑÐ°ÐµÑ Ð²Ñвод инÑоÑмаÑии об иÑполÑзовании легковеÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовок. Такие блокиÑовки пÑедназнаÑÐµÐ½Ñ Ð² оÑновном Ð´Ð»Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð¸ÑклÑÑаÑÑего доÑÑÑпа к обÑим ÑÑÑÑкÑÑÑам даннÑÑ Ð² памÑÑи.
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾ÑÑÑпен, ÑолÑко еÑли пÑи компилÑÑии PostgreSQL бÑл опÑеделÑн макÑоÑ
LOCK_DEBUG.trace_userlocks(boolean) #ÐклÑÑÐ°ÐµÑ Ð²Ñвод инÑоÑмаÑии об иÑполÑзовании полÑзоваÑелÑÑÐºÐ¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок. Ðна вÑводиÑÑÑ Ð² Ñом же ÑоÑмаÑе, ÑÑо и Ñ
trace_locks, но по ÑекомендаÑелÑнÑм блокиÑовкам.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾ÑÑÑпен, ÑолÑко еÑли пÑи компилÑÑии PostgreSQL бÑл опÑеделÑн макÑоÑ
LOCK_DEBUG.trace_lock_oidmin(integer) #ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑÑÑановлен, пÑи ÑÑаÑÑиÑовке блокиÑовок не бÑдÑÑ Ð¾ÑÑлеживаÑÑÑÑ ÑаблиÑÑ Ñ OID менÑÑе заданного (ÑÑо иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¸ÑклÑÑÐµÐ½Ð¸Ñ Ð¸Ð· ÑÑаÑÑиÑовки ÑиÑÑемнÑÑ ÑаблиÑ).
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾ÑÑÑпен, ÑолÑко еÑли пÑи компилÑÑии PostgreSQL бÑл опÑеделÑн макÑоÑ
LOCK_DEBUG.trace_lock_table(integer) #ÐезÑÑловно ÑÑаÑÑиÑоваÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки Ð´Ð»Ñ ÑаблиÑÑ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм OID.
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾ÑÑÑпен, ÑолÑко еÑли пÑи компилÑÑии PostgreSQL бÑл опÑеделÑн макÑоÑ
LOCK_DEBUG.debug_deadlocks(boolean) #ÐклÑÑÐ°ÐµÑ Ð²Ñвод инÑоÑмаÑии обо вÑÐµÑ ÑекÑÑÐ¸Ñ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÐ°Ñ Ð¿Ñи Ñайм-аÑÑе взаимоблокиÑовки.
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾ÑÑÑпен, ÑолÑко еÑли пÑи компилÑÑии PostgreSQL бÑл опÑеделÑн макÑоÑ
LOCK_DEBUG.log_btree_build_stats(boolean) #ÐклÑÑÐ°ÐµÑ Ð²Ñвод ÑÑаÑиÑÑики иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑиÑÑемнÑÑ ÑеÑÑÑÑов (памÑÑи и пÑоÑеÑÑоÑа) пÑи ÑазлиÑнÑÑ Ð¾Ð¿ÐµÑаÑиÑÑ Ñ B-деÑевом.
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾ÑÑÑпен, ÑолÑко еÑли пÑи компилÑÑии PostgreSQL бÑл опÑеделÑн макÑоÑ
BTREE_BUILD_STATS.wal_consistency_checking(string) #ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿ÑедназнаÑен Ð´Ð»Ñ Ð¿ÑовеÑки оÑибок в пÑоÑедÑÑÐ°Ñ Ð²Ð¾ÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ WAL. Ðогда он вклÑÑÑн, в запиÑи WAL добавлÑÑÑÑÑ Ð¿Ð¾Ð»Ð½Ñе обÑÐ°Ð·Ñ ÑÑÑÐ°Ð½Ð¸Ñ Ð²ÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÑемÑÑ Ð±ÑÑеÑов, Ðогда запиÑÑ Ð²Ð¿Ð¾ÑледÑÑвии воÑпÑоизводиÑÑÑ, ÑиÑÑема ÑнаÑала пÑименÑÐµÑ ÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ, а заÑем пÑовеÑÑеÑ, ÑооÑвеÑÑÑвÑÑÑ Ð»Ð¸ бÑÑеÑÑ, изменÑннÑе запиÑÑÑ, ÑÐ¾Ñ ÑанÑннÑм обÑазам. РопÑеделÑннÑÑ ÑлÑÑаÑÑ (напÑимеÑ, во вÑпомогаÑелÑнÑÑ Ð±Ð¸ÑÐ°Ñ ) неболÑÑие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿ÑÑкаÑÑÑÑ Ð¸ бÑдÑÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑÑÑ. ÐÑли вÑÑвлÑÑÑÑÑ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñе ÑазлиÑиÑ, ÑÑо ÑÑиÑаеÑÑÑ ÐºÑиÑиÑеÑкой оÑибкой и воÑÑÑановление пÑеÑÑваеÑÑÑ.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñение ÑÑого паÑамеÑÑа â пÑÑÑÐ°Ñ ÑÑÑока, Ñак ÑÑо ÑÑа ÑÑнкÑионалÑноÑÑÑ Ð¾ÑклÑÑена. Ðго знаÑением Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ
all(бÑдÑÑ Ð¿ÑовеÑÑÑÑÑÑ Ð²Ñе запиÑи) или ÑпиÑок имÑн менеджеÑов ÑеÑÑÑÑов ÑеÑез запÑÑÑÑ (бÑдÑÑ Ð¿ÑовеÑÑÑÑÑÑ Ð·Ð°Ð¿Ð¸Ñи, вÑдаваемÑе ÑÑими менеджеÑами). РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑÑheap,heap2,btree,hash,gin,gist,sequence,spgist,brinиgeneric. Ð ÑаÑÑиÑениÑÑ Ð¼Ð¾Ð³ÑÑ Ð¾Ð¿ÑеделÑÑÑÑÑ Ð¸ дÑÑгие менеджеÑÑ ÑеÑÑÑÑов. ÐзменÑÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавомSET.wal_debug(boolean) #ÐклÑÑÐ°ÐµÑ Ð²Ñвод оÑладоÑной инÑоÑмаÑии, ÑвÑзанной Ñ WAL. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾ÑÑÑпен, ÑолÑко еÑли пÑи компилÑÑии PostgreSQL бÑл опÑеделÑн макÑоÑ
WAL_DEBUG.ignore_checksum_failure(boolean) #ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´ÐµÐ¹ÑÑвÑеÑ, ÑолÑко еÑли вклÑÑÑн ÐонÑÑолÑнÑе ÑÑÐ¼Ð¼Ñ Ð´Ð°Ð½Ð½ÑÑ .
ÐÑи обнаÑÑжении оÑибок конÑÑолÑнÑÑ ÑÑмм пÑи ÑÑении PostgreSQL обÑÑно ÑообÑÐ°ÐµÑ Ð¾Ð± оÑибке и пÑеÑÑÐ²Ð°ÐµÑ ÑекÑÑÑÑ ÑÑанзакÑиÑ. ÐÑли паÑамеÑÑ
ignore_checksum_failureвклÑÑÑн, ÑиÑÑема игноÑиÑÑÐµÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ (но вÑÑ Ð¶Ðµ пÑедÑпÑÐµÐ¶Ð´Ð°ÐµÑ Ð¾ ней) и пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ Ð¾Ð±ÑабоÑкÑ. ÐÑо поведение Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к кÑÐ°Ñ Ñ, ÑаÑпÑоÑÑÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑокÑÑÑÐ¸Ñ Ð¿Ð¾Ð²ÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ дÑÑгим ÑеÑÑÑзнÑми пÑоблемам. Ðднако вклÑÑив его, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе обойÑи оÑÐ¸Ð±ÐºÑ Ð¸ полÑÑиÑÑ Ð½ÐµÐ¿Ð¾Ð²ÑеждÑннÑе даннÑе, коÑоÑÑе могÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² ÑаблиÑе, еÑли Ñел заголовок блока. ÐÑли же повÑеждÑн заголовок, бÑÐ´ÐµÑ Ð²Ñдана оÑибка, даже когда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾ÑклÑÑÑн (Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеoff). ТолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавомSETмогÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ.zero_damaged_pages(boolean) #ÐÑи вÑÑвлении повÑеждÑнного заголовка ÑÑÑаниÑÑ PostgreSQL обÑÑно ÑообÑÐ°ÐµÑ Ð¾Ð± оÑибке и пÑеÑÑÐ²Ð°ÐµÑ ÑекÑÑÑÑ ÑÑанзакÑиÑ. ÐÑли паÑамеÑÑ
zero_damaged_pagesвклÑÑÑн, вмеÑÑо ÑÑого ÑиÑÑема вÑдаÑÑ Ð¿ÑедÑпÑеждение, обнÑлÑÐµÑ Ð¿Ð¾Ð²ÑеждÑннÑÑ ÑÑÑаниÑÑ Ð² памÑÑи и пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ Ð¾Ð±ÑабоÑкÑ. ÐÑо поведение ÑазÑÑÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе, а именно вÑе ÑÑÑоки в повÑеждÑнной ÑÑÑаниÑе. Ðднако вклÑÑив его, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе обойÑи оÑÐ¸Ð±ÐºÑ Ð¸ полÑÑиÑÑ ÑÑÑоки из неповÑеждÑннÑÑ ÑÑÑаниÑ, коÑоÑÑе могÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² ÑаблиÑе. ÐÑо бÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ , иÑпоÑÑеннÑÑ Ð² ÑезÑлÑÑаÑе аппаÑаÑной или пÑогÑаммной оÑибки. ÐбÑÑно вклÑÑаÑÑ ÐµÐ³Ð¾ ÑледÑÐµÑ ÑолÑко Ñогда, когда не оÑÑалоÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ дÑÑгой Ð½Ð°Ð´ÐµÐ¶Ð´Ñ Ð½Ð° воÑÑÑановление даннÑÑ Ð² повÑеждÑннÑÑ ÑÑÑаниÑÐ°Ñ ÑаблиÑÑ. ÐбнÑлÑннÑе ÑÑÑаниÑÑ Ð½Ðµ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð½Ð° диÑк, поÑÑÐ¾Ð¼Ñ Ð¿Ñежде Ñем вÑклÑÑаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ, ÑекомендÑеÑÑÑ Ð¿ÐµÑеÑоздаÑÑ Ð¿ÑоблемнÑе ÑаблиÑÑ Ð¸Ð»Ð¸ индекÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾ÑклÑÑÑн (Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеoff). ТолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавомSETмогÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ.ignore_invalid_pages(boolean) #Ðогда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
off(по ÑмолÑаниÑ), обнаÑÑжение в WAL запиÑей, ÑÑÑлаÑÑÐ¸Ñ ÑÑ Ð½Ð° некоÑÑекÑнÑе ÑÑÑаниÑÑ, в пÑоÑеÑÑе воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº оÑÑановке PostgreSQL Ñ Ð¾Ñибкой кÑиÑиÑеÑкого ÑÑÐ¾Ð²Ð½Ñ Ð¸, как ÑледÑÑвие, к пÑеÑÑÐ²Ð°Ð½Ð¸Ñ Ð²Ð¾ÑÑÑановлениÑ. Ðогда паÑамеÑÑignore_invalid_pagesвклÑÑÑн (on), ÑиÑÑема игноÑиÑÑÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñе недейÑÑвиÑелÑнÑе ÑÑÑлки в запиÑÑÑ WAL (но вÑÑ Ð¶Ðµ вÑдаÑÑ Ð¿ÑедÑпÑеждениÑ) и пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ Ð²Ð¾ÑÑÑановление. ÐÑо поведение Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к кÑÐ°Ñ Ñ, поÑеÑе даннÑÑ , ÑаÑпÑоÑÑÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑокÑÑÑÐ¸Ñ Ð¿Ð¾Ð²ÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ дÑÑгим ÑеÑÑÑзнÑми пÑоблемам. Ðднако вклÑÑив ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе обойÑи кÑиÑиÑеÑкÑÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð¸ законÑиÑÑ Ð²Ð¾ÑÑÑановление, ÑÑÐ¾Ð±Ñ ÑеÑÐ²ÐµÑ Ð²ÑÑ Ð¶Ðµ запÑÑÑилÑÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. ÐейÑÑвÑÐµÑ Ð¾Ð½ ÑолÑко пÑи воÑÑÑановлении или в Ñежиме ведомого.jit_debugging_support(boolean) #ÐÑи налиÑии ÑÑебÑемой ÑÑнкÑионалÑноÑÑи LLVM ÑегиÑÑÑиÑоваÑÑ Ð³ÐµÐ½ÐµÑиÑÑемÑе ÑÑнкÑии в GDB. ÐÑо позволÑÐµÑ ÑпÑоÑÑиÑÑ Ð¾ÑладкÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
off(вÑкл.). ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.jit_dump_bitcode(boolean) #ÐапиÑÑваÑÑ ÑгенеÑиÑованнÑй LLVM IR-код в ÑайловÑÑ ÑиÑÑемÑ, в каÑалог data_directory. ÐÑо полезно ÑолÑко Ð´Ð»Ñ ÑабоÑÑ Ñ Ð²Ð½ÑÑÑенним Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð¾Ð¼ JIT. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
off(вÑкл.). ТолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавомSETмогÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ.jit_expressions(boolean) #ÐпÑеделÑеÑ, бÑдÑÑ Ð»Ð¸ JIT-компилиÑоваÑÑÑÑ Ð²ÑÑажениÑ, когда JIT-компилÑÑÐ¸Ñ Ð²ÐºÐ»ÑÑена (Ñм. Раздел 32.2). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
on(вкл.).jit_profiling_support(boolean) #ÐÑи налиÑии ÑÑебÑемой ÑÑнкÑионалÑноÑÑи LLVM вÑдаваÑÑ Ð´Ð°Ð½Ð½Ñе, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе Ð´Ð»Ñ Ð¿ÑоÑилиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ perf ÑÑнкÑий, коÑоÑÑе генеÑиÑÑÐµÑ JIT. ÐÑÑ Ð¾Ð´Ð½Ñе ÑÐ°Ð¹Ð»Ñ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð² каÑалог
~/.debug/jit/; ÑдалÑÑÑ Ð¸Ñ Ð¿Ñи желании должен Ñам полÑзоваÑелÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ âoff(вÑкл.). ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.jit_tuple_deforming(boolean) #ÐпÑеделÑеÑ, бÑÐ´ÐµÑ Ð»Ð¸ JIT-компилиÑоваÑÑÑÑ Ð¿ÑеобÑазование коÑÑежей, когда JIT-компилÑÑÐ¸Ñ Ð²ÐºÐ»ÑÑена (Ñм. Раздел 32.2). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
on(вкл.).remove_temp_files_after_crash(boolean) #ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн (ÑоÑÑоÑние по ÑмолÑаниÑ), PostgreSQL авÑомаÑиÑеÑки ÑдалÑÐµÑ Ð²ÑеменнÑе ÑÐ°Ð¹Ð»Ñ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ ÑеÑвеÑа. ÐÑли он вÑклÑÑен, ÑÐ°Ð¹Ð»Ñ Ð±ÑдÑÑ ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ñ Ð¸ могÑÑ Ð¸ÑполÑзоваÑÑÑÑ, напÑимеÑ, Ð´Ð»Ñ Ð¾Ñладки. Ðднако повÑоÑÑÑÑиеÑÑ Ñбои могÑÑ Ð¿ÑивеÑÑи к Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÑполезнÑÑ Ñайлов. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.send_abort_for_crash(boolean) #Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ ÑеÑвеÑа ÑпÑавлÑÑÑий пÑоÑеÑÑ postmaster оÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¾ÑÑавÑиеÑÑ Ð´Ð¾ÑеÑние пÑоÑеÑÑÑ, оÑпÑавлÑÑ Ð¸Ð¼ ÑÐ¸Ð³Ð½Ð°Ð»Ñ SIGQUIT, ÑÑо позволÑÐµÑ Ð¸Ð¼ завеÑÑиÑÑ ÑабоÑÑ Ð±Ð¾Ð»ÐµÐµ или менее коÑÑекÑно. ÐÑли Ð´Ð»Ñ ÑÑого паÑамеÑÑа ÑÑÑановлено знаÑение
on, вмеÑÑо SIGQUIT оÑпÑавлÑеÑÑÑ SIGABRT. ÐбÑÑно ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñайла дампа памÑÑи Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñакого доÑеÑнего пÑоÑеÑÑа. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñдобно Ð´Ð»Ñ Ð¸ÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÑоÑÑоÑний дÑÑÐ³Ð¸Ñ Ð¿ÑоÑеÑÑов поÑле ÑбоÑ. Ðо Ñакие ÑÐ°Ð¹Ð»Ñ Ñакже могÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð¼Ð½Ð¾Ð³Ð¾ меÑÑа на диÑке в ÑлÑÑае повÑоÑÑÑÑÐ¸Ñ ÑÑ Ñбоев, поÑÑÐ¾Ð¼Ñ Ð½Ðµ вклÑÑайÑе паÑамеÑÑ Ð² ÑиÑÑÐµÐ¼Ð°Ñ Ð±ÐµÐ· ÑÑаÑелÑного мониÑоÑинга. ÐмейÑе в видÑ, ÑÑо авÑомаÑиÑеÑкое Ñдаление дампов памÑÑи не поддеÑживаеÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко в Ñайлеpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.send_abort_for_kill(boolean) #Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ñле попÑÑки оÑÑановиÑÑ Ð´Ð¾ÑеÑний пÑоÑеÑÑ, иÑполÑзÑÑ Ñигнал SIGQUIT, ÑпÑавлÑÑÑий пÑоÑеÑÑ postmaster ждÑÑ Ð¿ÑÑÑ ÑекÑнд, а заÑем оÑпÑавлÑÐµÑ SIGKILL Ð´Ð»Ñ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾Ð³Ð¾ завеÑÑениÑ. ÐÑли Ð´Ð»Ñ ÑÑого паÑамеÑÑа ÑÑÑановлено знаÑение
on, вмеÑÑо SIGKILL оÑпÑавлÑеÑÑÑ SIGABRT. ÐбÑÑно ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñайла дампа памÑÑи Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñакого доÑеÑнего пÑоÑеÑÑа. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñдобно Ð´Ð»Ñ Ð¸ÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÑоÑÑоÑний «завиÑÑÐ¸Ñ Â» доÑеÑÐ½Ð¸Ñ Ð¿ÑоÑеÑÑов. Ðо Ñакие ÑÐ°Ð¹Ð»Ñ Ñакже могÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð¼Ð½Ð¾Ð³Ð¾ меÑÑа на диÑке в ÑлÑÑае повÑоÑÑÑÑÐ¸Ñ ÑÑ Ñбоев, поÑÑÐ¾Ð¼Ñ Ð½Ðµ вклÑÑайÑе паÑамеÑÑ Ð² ÑиÑÑÐµÐ¼Ð°Ñ Ð±ÐµÐ· ÑÑаÑелÑного мониÑоÑинга. ÐмейÑе в видÑ, ÑÑо авÑомаÑиÑеÑÐºÐ°Ñ Ð¾ÑиÑÑка Ñайлов дампа не поддеÑживаеÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко в Ñайлеpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.debug_logical_replication_streaming(enum) #ÐопÑÑÑимÑе знаÑениÑ:
bufferedиimmediate. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑbuffered. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿ÑедназнаÑен Ð´Ð»Ñ ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого декодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ ÑепликаÑии болÑÑÐ¸Ñ ÑÑанзакÑий. ÐаÑамеÑÑdebug_logical_replication_streamingна пÑбликÑÑÑем ÑеÑвеÑе и на подпиÑÑике ÑабоÑÐ°ÐµÑ Ð¿Ð¾-ÑазномÑ:Ðа ÑÑоÑоне пÑбликÑÑÑего ÑеÑвеÑа
debug_logical_replication_streamingпозволÑÐµÑ Ð²ÑполнÑÑÑ Ð¿Ð¾ÑоковÑÑ Ð¿ÐµÑедаÑÑ Ð¸Ð»Ð¸ ÑеÑиализаÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ ÑÑÐ°Ð·Ñ Ð¶Ðµ пÑи логиÑеÑком декодиÑовании. ÐÑли ÑÑÑановлено знаÑениеimmediate, каждое изменение пеÑедаÑÑÑÑ Ð² поÑоковом Ñежиме, еÑли подпиÑка бÑла Ñоздана Ñ Ð¿Ð°ÑамеÑÑомstreaming, в пÑоÑивном ÑлÑÑае Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑеÑиализÑÑÑÑÑ. ÐÑли ÑÑÑановлено знаÑениеbuffered, пÑи декодиÑовании Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÐµÑедаÑÑÑÑ Ð² поÑоке или ÑеÑиализÑÑÑÑÑ Ð¿Ñи доÑÑижении знаÑениÑlogical_decoding_work_mem.Ðа ÑÑоÑоне подпиÑÑика, еÑли Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑа
streamingзадано знаÑениеparallel, можно иÑполÑзоваÑÑdebug_logical_replication_streaming, ÑÑÐ¾Ð±Ñ ÑказаÑÑ Ð²ÐµÐ´ÑÑÐµÐ¼Ñ Ð¿ÑоÑеÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ оÑпÑавлÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² оÑеÑÐµÐ´Ñ Ð¾Ð±Ñей памÑÑи или Ð´Ð»Ñ ÑеÑиализаÑии вÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в Ñайле. ÐÑли задано знаÑениеbuffered, ведÑÑий пÑоÑеÑÑ Ð¾ÑпÑавлÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°ÑаллелÑнÑм ÑабоÑим пÑоÑеÑÑам пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ ÑеÑез оÑеÑÐµÐ´Ñ Ð¾Ð±Ñей памÑÑи. ÐÑли ÑÑÑановлено знаÑениеimmediate, ведÑÑий пÑоÑеÑÑ ÑеÑиализÑÐµÑ Ð²Ñе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ÑÐ°Ð¹Ð»Ñ Ð¸ ÑведомлÑÐµÑ Ð¿Ð°ÑаллелÑнÑе ÑабоÑие пÑоÑеÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ о Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи Ð¸Ñ ÑÑÐµÐ½Ð¸Ñ Ð¸ пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конÑе ÑÑанзакÑии.