18.4. ÐоÑÑебление ÑеÑÑÑÑов
18.4.1. ÐамÑÑÑ
shared_buffers(integer)ÐадаÑÑ Ð¾Ð±ÑÑм памÑÑи, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ Ð´Ð»Ñ Ð±ÑÑеÑов в ÑазделÑемой памÑÑи. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо обÑÑно 128 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (
128MB), но Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ менÑÑе, еÑли конÑигÑÑаÑÐ¸Ñ Ð²Ð°Ñего ÑдÑа накладÑÐ²Ð°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе огÑаниÑÐµÐ½Ð¸Ñ (ÑÑо опÑеделÑеÑÑÑ Ð² пÑоÑеÑÑе initdb). ÐÑо знаÑение не должно бÑÑÑ Ð¼ÐµÐ½ÑÑе 128 килобайÑ. Ðднако Ð´Ð»Ñ Ñ Ð¾ÑоÑей пÑоизводиÑелÑноÑÑи обÑÑно ÑÑебÑÑÑÑÑ Ð³Ð¾Ñаздо болÑÑие знаÑениÑ. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐинималÑное допÑÑÑимое знаÑение завиÑÐ¸Ñ Ð¾Ñ Ð²ÐµÐ»Ð¸ÑинÑBLCKSZ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе вÑделеннÑй ÑеÑÐ²ÐµÑ Ñ Ð¾Ð±ÑÑмом ÐÐУ 1 ÐРи более, ÑазÑмнÑм наÑалÑнÑм знаÑением
shared_buffersбÑÐ´ÐµÑ 25% Ð¾Ñ Ð¾Ð±ÑÑма памÑÑи. СÑÑеÑÑвÑÑÑ Ð²Ð°ÑианÑÑ Ð½Ð°Ð³ÑÑзки, пÑи коÑоÑÑÑ ÑÑÑекÑÐ¸Ð²Ð½Ñ Ð±ÑдÑÑ Ð¸ еÑÑ Ð±Ð¾Ð»ÑÑие знаÑениÑshared_buffers, но Ñак как Postgres Pro иÑполÑзÑÐµÑ Ð¸ ÐºÐµÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ, вÑделÑÑÑ Ð´Ð»Ñshared_buffersболее 40% ÐÐУ вÑÑд ли бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾. ÐÑи ÑвелиÑенииshared_buffersобÑÑно ÑÑебÑеÑÑÑ ÑооÑвеÑÑÑвенно ÑвелиÑиÑÑmax_wal_size, ÑÑÐ¾Ð±Ñ ÑаÑÑÑнÑÑÑ Ð¿ÑоÑеÑÑ Ð·Ð°Ð¿Ð¸Ñи болÑÑого обÑÑма новÑÑ Ð¸Ð»Ð¸ изменÑннÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° более пÑодолжиÑелÑное вÑемÑ.Ð ÑиÑÑÐµÐ¼Ð°Ñ Ñ Ð¾Ð±ÑÑмом ÐÐУ менÑÑе 1 ÐÐ ÑÑÐ¾Ð¸Ñ Ð¾Ð³ÑаниÑиÑÑÑÑ Ð¼ÐµÐ½ÑÑим пÑоÑенÑом ÐÐУ, ÑÑÐ¾Ð±Ñ Ð¾ÑÑавиÑÑ Ð´Ð¾ÑÑаÑоÑно меÑÑа опеÑаÑионной ÑиÑÑеме.
huge_pages(enum)ÐпÑеделÑеÑ, бÑдÑÑ Ð»Ð¸ огÑомнÑе ÑÑÑаниÑÑ Ð·Ð°Ð¿ÑаÑиваÑÑÑÑ Ð¸Ð· оÑновной облаÑÑи обÑей памÑÑи. ÐопÑÑÑимÑе знаÑениÑ:
try(по ÑмолÑаниÑ),onиoff. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. Ðогда паÑамеÑÑhuge_pagesÑавенtry, ÑеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ Ð¿ÑÑаÑÑÑÑ Ð·Ð°Ð¿ÑаÑиваÑÑ Ð¾Ð³ÑомнÑе ÑÑÑаниÑÑ, но еÑли ÑÑо ÐµÐ¼Ñ Ð½Ðµ ÑдаÑÑÑÑ, он веÑнÑÑÑÑ Ðº ÑÑандаÑÑÐ½Ð¾Ð¼Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ. Со знаÑениемon, еÑли полÑÑиÑÑ Ð¾Ð³ÑомнÑе ÑÑÑаниÑÑ Ð½Ðµ ÑдаÑÑÑÑ, ÑеÑÐ²ÐµÑ Ð½Ðµ бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑен. Со знаÑениемoffболÑÑие ÑÑÑаниÑÑ Ð½Ðµ бÑдÑÑ Ð·Ð°Ð¿ÑаÑиваÑÑÑÑ.РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо поддеÑживаеÑÑÑ Ð² Linux и в Windows. РдÑÑÐ³Ð¸Ñ ÑиÑÑÐµÐ¼Ð°Ñ Ð·Ð½Ð°Ñение
tryпÑоÑÑо игноÑиÑÑеÑÑÑ. Ð Linux ÑÑа поддеÑжка обеÑпеÑиваеÑÑÑ, ÑолÑко когда паÑамеÑÑshared_memory_typeÐ¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеmmap(по ÑмолÑаниÑ).Ð ÑезÑлÑÑаÑе иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð³ÑомнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ ÑменÑÑаÑÑÑÑ ÑаблиÑÑ ÑÑÑаниÑ, и пÑоÑеÑÑÐ¾Ñ ÑÑаÑÐ¸Ñ Ð¼ÐµÐ½ÑÑе вÑемени на ÑпÑавление памÑÑÑÑ, ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº ÑвелиÑÐµÐ½Ð¸Ñ Ð±ÑÑÑÑодейÑÑвиÑ. Ðа более подÑобной инÑоÑмаÑией об иÑполÑзовании огÑомнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð² Linux обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 17.4.5.
ÐгÑомнÑе ÑÑÑаниÑÑ Ð² Windows назÑваÑÑÑÑ Ð±Ð¾Ð»ÑÑими ÑÑÑаниÑами. ЧÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ Ð¸Ñ , Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ даÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Windows, Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ коÑоÑого ÑабоÑÐ°ÐµÑ Postgres Pro, пÑаво блокиÑоваÑÑ ÑÑÑаниÑÑ. ÐÐ»Ñ Ð½Ð°Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑÑого пÑава Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе воÑполÑзоваÑÑÑÑ ÑÑедÑÑвом ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð³ÑÑпповой полиÑикой Windows (gpedit.msc). ЧÑÐ¾Ð±Ñ ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ Ð·Ð°Ð¿ÑÑкалÑÑ Ð² командной ÑÑÑоке как оÑделÑнÑй пÑоÑеÑÑ, а не как ÑлÑжба Windows, пÑиглаÑение командной ÑÑÑоки должно запÑÑкаÑÑÑÑ Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ админиÑÑÑаÑоÑа или должен бÑÑÑ Ð¾ÑклÑÑÑн Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ UAC (User Access Control, ÐонÑÑÐ¾Ð»Ñ ÑÑÑÑнÑÑ Ð·Ð°Ð¿Ð¸Ñей полÑзоваÑелей). Ðогда UAC вклÑÑÑн, в обÑÑном командном пÑиглаÑении полÑзоваÑÐµÐ»Ñ Ð»Ð¸ÑаеÑÑÑ Ð¿Ñава блокиÑоваÑÑ Ð±Ð¾Ð»ÑÑие ÑÑÑаниÑÑ Ð² памÑÑи.
ÐамеÑÑÑе, ÑÑо ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²Ð»Ð¸ÑÐµÑ ÑолÑко на оÑновнÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¾Ð±Ñей памÑÑи. РопеÑаÑионнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ , ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº Linux, FreeBSD и Illumos огÑомнÑе ÑÑÑаниÑÑ (Ñакже назÑваемÑе «ÑÑпеÑÑÑÑаниÑами» или «болÑÑими» ÑÑÑаниÑами) могÑÑ Ñакже авÑомаÑиÑеÑки иÑполÑзоваÑÑÑÑ Ð¿Ñи обÑÑном вÑделении памÑÑи, без Ñвного запÑоÑа Ñо ÑÑоÑÐ¾Ð½Ñ Postgres Pro. Ð Linux ÑÑо назÑваеÑÑÑ Â«Ð¿ÑозÑаÑнÑми огÑомнÑми ÑÑÑаниÑами» (Transparent Huge Pages, THP). ÐзвеÑÑно, ÑÑо ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº ÑÐ½Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð±ÑÑÑÑодейÑÑÐ²Ð¸Ñ Postgres Pro в некоÑоÑÑÑ ÑиÑÑÐµÐ¼Ð°Ñ Linux Ñ ÑÑда полÑзоваÑелей, поÑÑÐ¾Ð¼Ñ Ð¸ÑполÑзоваÑÑ ÑÑÐ¾Ñ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ ÑекомендÑеÑÑÑ (в оÑлиÑие Ð¾Ñ Ñвного иÑполÑзованиÑ
huge_pages).temp_buffers(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй обÑÑм памÑÑи, вÑделÑемой Ð´Ð»Ñ Ð²ÑеменнÑÑ Ð±ÑÑеÑов в каждом ÑеанÑе. ÐÑи ÑÑÑеÑÑвÑÑÑие ÑолÑко в ÑÐ°Ð¼ÐºÐ°Ñ ÑеанÑа бÑÑеÑÑ Ð¸ÑполÑзÑÑÑÑÑ Ð¸ÑклÑÑиÑелÑно Ð´Ð»Ñ ÑабоÑÑ Ñ Ð²ÑеменнÑми ÑаблиÑами. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ Ñавен
BLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 8 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (8MB). (ÐÑлиBLCKSZоÑлиÑен Ð¾Ñ 8 ÐÐ, знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ¾ÑÑекÑиÑÑеÑÑÑ Ð¿ÑопоÑÑионалÑно.) ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ измениÑÑ Ð² оÑделÑном ÑеанÑе, но ÑолÑко до пеÑвого обÑаÑÐµÐ½Ð¸Ñ Ðº вÑеменнÑм ÑаблиÑам; поÑле ÑÑого Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ знаÑÐµÐ½Ð¸Ñ Ð½Ðµ бÑдÑÑ Ð²Ð»Ð¸ÑÑÑ Ð½Ð° ÑекÑÑий ÑеанÑ.Ð¡ÐµÐ°Ð½Ñ Ð²ÑделÑÐµÑ Ð²ÑеменнÑе бÑÑеÑÑ Ð¿Ð¾ меÑе Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи до доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñедела, заданного паÑамеÑÑом
temp_buffers. ÐÑли ÑÐµÐ°Ð½Ñ Ð½Ðµ задейÑÑвÑÐµÑ Ð²ÑеменнÑе бÑÑеÑÑ, Ñо Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ Ñ ÑанÑÑÑÑ ÑолÑко деÑкÑипÑоÑÑ Ð±ÑÑеÑов, коÑоÑÑе занимаÑÑ Ð¾ÐºÐ¾Ð»Ð¾ 64 Ð±Ð°Ð¹Ñ (в колиÑеÑÑвеtemp_buffers). Ðднако еÑли бÑÑÐµÑ Ð´ÐµÐ¹ÑÑвиÑелÑно иÑполÑзÑеÑÑÑ, он бÑÐ´ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно занимаÑÑ 8192 байÑа (илиBLCKSZбайÑ, в обÑем ÑлÑÑае).max_prepared_transactions(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑÑанзакÑий, коÑоÑÑе могÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² «подгоÑовленном» ÑоÑÑоÑнии (Ñм. PREPARE TRANSACTION). ÐÑи нÑлевом знаÑении (по ÑмолÑаниÑ) Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ подгоÑовленнÑÑ ÑÑанзакÑий оÑклÑÑаеÑÑÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
ÐÑли иÑполÑзоваÑÑ ÑÑанзакÑии не планиÑÑеÑÑÑ, ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑледÑÐµÑ Ð¾Ð±Ð½ÑлиÑÑ, ÑÑÐ¾Ð±Ñ Ð½Ðµ допÑÑÑиÑÑ Ð½ÐµÐ¿ÑеднамеÑенного ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð³Ð¾ÑовленнÑÑ ÑÑанзакÑий. ÐÑли же подгоÑовленнÑе ÑÑанзакÑии пÑименÑÑÑÑÑ, Ñо
max_prepared_transactions, веÑоÑÑно, должен бÑÑÑ Ð½Ðµ менÑÑе, Ñем max_connections, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð´Ð³Ð¾ÑовиÑÑ ÑÑанзакÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ бÑло в каждом ÑеанÑе.ÐÐ»Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð³Ð¾ ÑеÑвеÑа знаÑение ÑÑого паÑамеÑÑа должно бÑÑÑ Ð±Ð¾Ð»ÑÑе или Ñавно знаÑÐµÐ½Ð¸Ñ Ð½Ð° ведÑÑем. РпÑоÑивном ÑлÑÑае на ведомом ÑеÑвеÑе не бÑдÑÑ ÑазÑеÑÐµÐ½Ñ Ð·Ð°Ð¿ÑоÑÑ.
work_mem(integer)ÐадаÑÑ Ð±Ð°Ð·Ð¾Ð²Ñй макÑималÑнÑй обÑÑм памÑÑи, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð²Ð¾ внÑÑÑÐµÐ½Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑиÑÑ Ð¿Ñи обÑабоÑке запÑоÑов (напÑимеÑ, Ð´Ð»Ñ ÑоÑÑиÑовки или Ñ ÐµÑ-ÑаблиÑ), пÑежде Ñем бÑдÑÑ Ð·Ð°Ð´ÐµÐ¹ÑÑÐ²Ð¾Ð²Ð°Ð½Ñ Ð²ÑеменнÑе ÑÐ°Ð¹Ð»Ñ Ð½Ð° диÑке. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â ÑеÑÑÑе мегабайÑа (
4MB). ÐамеÑÑÑе, ÑÑо в ÑложнÑÑ Ð·Ð°Ð¿ÑоÑÐ°Ñ Ð¾Ð´Ð½Ð¾Ð²Ñеменно могÑÑ Ð²ÑполнÑÑÑÑÑ Ð½ÐµÑколÑко опеÑаÑий ÑоÑÑиÑовки и Ñ ÐµÑиÑованиÑ, и пÑи ÑÑом пÑимеÑно ÑÑÐ¾Ñ Ð¾Ð±ÑÑм памÑÑи Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² каждой опеÑаÑии, пÑежде Ñем даннÑе наÑнÑÑ Ð²ÑÑеÑнÑÑÑÑÑ Ð²Ð¾ вÑеменнÑе ÑайлÑ. ÐÑоме Ñого, Ñакие опеÑаÑии могÑÑ Ð²ÑполнÑÑÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно в ÑазнÑÑ ÑеанÑÐ°Ñ . Таким обÑазом, обÑий обÑÑм памÑÑи Ð¼Ð¾Ð¶ÐµÑ Ð¼Ð½Ð¾Ð³Ð¾ÐºÑаÑно пÑевоÑÑ Ð¾Ð´Ð¸ÑÑ Ð·Ð½Ð°Ñениеwork_mem; ÑÑо ÑледÑÐµÑ ÑÑиÑÑваÑÑ, вÑбиÑÐ°Ñ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее знаÑение. ÐпеÑаÑии ÑоÑÑиÑовки иÑполÑзÑÑÑÑÑ Ð´Ð»ÑORDER BY,DISTINCTи Ñоединений ÑлиÑнием. ХеÑ-ÑаблиÑÑ Ð¸ÑполÑзÑÑÑÑÑ Ð¿Ñи ÑоединениÑÑ Ð¸ агÑегиÑовании по Ñ ÐµÑÑ, а Ñакже обÑабоÑке подзапÑоÑовINÑ Ð¿Ñименением Ñ ÐµÑа.ÐпеÑаÑии вÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ñ ÐµÑа обÑÑно более ÑÑебоваÑелÑÐ½Ñ Ðº памÑÑи, Ñем ÑавнознаÑнÑе им опеÑаÑии ÑоÑÑиÑовки. ÐоÑÑÐ¾Ð¼Ñ Ð¾Ð³ÑаниÑение памÑÑи Ð´Ð»Ñ Ñ ÐµÑ-ÑÐ°Ð±Ð»Ð¸Ñ Ð¾Ð¿ÑеделÑеÑÑÑ Ð¿Ñоизведением
work_memиhash_mem_multiplierи Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑевÑÑаÑÑ Ð¾Ð±ÑÑнÑй базовÑй обÑÑмwork_mem.ÐÑимеÑание
ÐланиÑовÑик Postgres Pro Ð¼Ð¾Ð¶ÐµÑ Ð½ÐµÐºÐ¾ÑÑекÑно оÑениÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ñ ÐµÑ-ÑаблиÑÑ Ð¿Ñи опеÑаÑиÑÑ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ñ ÐµÑа. ÐÑли одна или неÑколÑко поÑÑий даннÑÑ Ð² Ñ ÐµÑ-ÑаблиÑе наÑÑолÑко болÑÑие, ÑÑо не помеÑаÑÑÑÑ Ð² вÑделеннÑÑ Ð¿Ð°Ð¼ÑÑÑ, пÑевÑÑÐ°Ñ Ð¾Ð³ÑаниÑение по памÑÑи, и пÑи ÑÑом даннÑе в Ñ ÐµÑ-ÑаблиÑе невозможно поделиÑÑ Ð½Ð° болÑÑее колиÑеÑÑво поÑÑий, планиÑовÑик бÑÐ´ÐµÑ Ð¿ÑÑаÑÑÑÑ ÑазмеÑÑиÑÑ ÐºÐ°Ð¶Ð´ÑÑ Ð¿Ð¾ÑÑÐ¸Ñ Ð² памÑÑи, даже еÑли ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¿ÑевÑÑÐ°ÐµÑ ÑпомÑнÑÑое огÑаниÑение.
Таким обÑазом, пÑи опеÑаÑиÑÑ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ñ ÐµÑа Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ Ð½Ð°Ð±Ð¾Ñов даннÑÑ Ð¿Ð¾ÑÑебление памÑÑи Ð¼Ð¾Ð¶ÐµÑ Ñезко возÑаÑÑаÑÑ, еÑли даннÑе в полÑÑеннÑÑ Ñ ÐµÑ-ÑаблиÑÐ°Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ ÑазделиÑÑ Ð½Ð° доÑÑаÑоÑное колиÑеÑÑво поÑÑий.
hash_mem_multiplier(floating point)ÐÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¼Ð°ÐºÑималÑного обÑÑма памÑÑи, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð²ÑделÑÑÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑий Ñ Ñ ÐµÑиÑованием. ÐÑоговÑй обÑÑм опÑеделÑеÑÑÑ Ð¿Ñоизведением
work_memиhash_mem_multiplier. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 1.0, Ñо еÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑий Ñ Ñ ÐµÑиÑованием ÑÑÑанавливаеÑÑÑ ÑÐ¾Ñ Ð¶Ðµ макÑимÑм, ÑавнÑйwork_mem, ÑÑо и Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑий Ñ ÑоÑÑиÑовкой.ÐнаÑение
hash_mem_multiplierÐ¸Ð¼ÐµÐµÑ ÑмÑÑл ÑвелиÑиÑÑ, когда поÑÑоÑнно наблÑдаеÑÑÑ Ð²ÑÑеÑнение даннÑÑ Ð½Ð° диÑк пÑи вÑполнении запÑоÑов, а пÑÑмолинейное ÑвелиÑениеwork_memпÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº деÑиÑиÑÑ Ð¿Ð°Ð¼ÑÑи (обÑÑно пÑоÑвлÑÑÑемÑÑÑ Ð² оÑÐ¸Ð±ÐºÐ°Ñ Â«Ð½ÐµÑ Ð²Ð°Ñка памÑÑи»). Ð ÑÑÐ¸Ñ ÑлÑÑаÑÑ Ð·Ð½Ð°Ñение 1.5 или 2.0 Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑим пÑи ÑмеÑанной нагÑÑзке, а знаÑение 2.0â8.0 Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ñам, гдеwork_memÑже ÑвелиÑено до 40 ÐÐ±Ð°Ð¹Ñ Ð¸Ð»Ð¸ более.maintenance_work_mem(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй обÑÑм памÑÑи Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑий обÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÐÐ, в ÑаÑÑноÑÑи
VACUUM,CREATE INDEXиALTER TABLE ADD FOREIGN KEY. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 64 мегабайÑа (64MB). Так как в один Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени в ÑеанÑе Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑÑÑ ÑолÑко одна ÑÐ°ÐºÐ°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¸ обÑÑно они не запÑÑкаÑÑÑÑ Ð¿Ð°ÑаллелÑно, ÑÑо знаÑение вполне Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð³Ð¾Ñаздо болÑÑеwork_mem. УвелиÑение ÑÑого знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к ÑÑкоÑÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑий оÑиÑÑки и воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐРиз копии.УÑÑиÑе, ÑÑо когда вÑполнÑеÑÑÑ Ð°Ð²ÑооÑиÑÑка, ÑÑÐ¾Ñ Ð¾Ð±ÑÑм Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ñделен autovacuum_max_workers Ñаз, поÑÑÐ¾Ð¼Ñ Ð½Ðµ ÑÑÐ¾Ð¸Ñ ÑÑÑанавливаÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ ÑлиÑком болÑÑим. Ðозможно, бÑÐ´ÐµÑ Ð»ÑÑÑе ÑпÑавлÑÑÑ Ð¾Ð±ÑÑмом памÑÑи Ð´Ð»Ñ Ð°Ð²ÑооÑиÑÑки оÑделÑно, изменÑÑ autovacuum_work_mem.
ÐамеÑÑÑе, ÑÑо Ð´Ð»Ñ ÑбоÑа иденÑиÑикаÑоÑов мÑÑÑвÑÑ ÐºÐ¾ÑÑежей
VACUUMÐ¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ Ð½Ðµ более1GBпамÑÑи.autovacuum_work_mem(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй обÑÑм памÑÑи, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ ÐºÐ°Ð¶Ð´Ñй ÑабоÑий пÑоÑеÑÑ Ð°Ð²ÑооÑиÑÑки. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐÑи дейÑÑвÑÑÑем по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñении
-1ÑÑÐ¾Ñ Ð¾Ð±ÑÑм опÑеделÑеÑÑÑ Ð·Ð½Ð°Ñением maintenance_work_mem. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ влиÑÐµÑ Ð½Ð° поведение командÑVACUUM, вÑполнÑемой в дÑÑÐ³Ð¸Ñ ÐºÐ¾Ð½ÑекÑÑÐ°Ñ . ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.ÐÐ»Ñ ÑбоÑа иденÑиÑикаÑоÑов мÑÑÑвÑÑ ÐºÐ¾ÑÑежей авÑооÑиÑÑка Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ Ð¼Ð°ÐºÑимÑм
1GBпамÑÑи, поÑÑÐ¾Ð¼Ñ ÑвелиÑениеautovacuum_work_memдо болÑÑего знаÑÐµÐ½Ð¸Ñ Ð½Ðµ повлиÑÐµÑ Ð½Ð° колиÑеÑÑво мÑÑÑвÑÑ ÐºÐ¾ÑÑежей, коÑоÑÑе авÑооÑиÑÑка Ð¼Ð¾Ð¶ÐµÑ ÑобÑаÑÑ Ð¿Ñи ÑканиÑовании ÑаблиÑÑ.logical_decoding_work_mem(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй обÑÑм памÑÑи, иÑполÑзÑемой Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого декодиÑованиÑ, поÑле пÑевÑÑÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑого некоÑоÑÑе декодиÑованнÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð²ÑмеÑаÑÑÑÑ Ð½Ð° локалÑнÑй диÑк. Тем ÑамÑм огÑаниÑиваеÑÑÑ Ð¾Ð±ÑÑм памÑÑи, иÑполÑзÑемой подклÑÑениÑми поÑоковой логиÑеÑкой ÑепликаÑии. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÐµÐ³Ð¾ знаÑение â 64 мегабайÑа (
64MB). Так как каждое подклÑÑение ÑепликаÑии иÑполÑзÑÐµÑ Ð¾Ð´Ð¸Ð½ бÑÑÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑазмеÑа, а колиÑеÑÑво ÑÐ°ÐºÐ¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑений к Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑеÑвеÑÑ Ð¾Ð±ÑÑно невелико (оно огÑаниÑиваеÑÑÑ Ð·Ð½Ð°Ñениемmax_wal_senders), знаÑение данного паÑамеÑÑа вполне можно ÑделаÑÑ Ð´Ð¾ÑÑаÑоÑно болÑÑим, намного пÑевÑÑаÑÑимwork_mem, ÑÑÐ¾Ð±Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð¸Ð·Ð¸ÑоваÑÑ Ð¾Ð±ÑÑм вÑмеÑаемÑÑ Ð½Ð° диÑк декодиÑÑемÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹.max_stack_depth(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑÑ Ð³Ð»ÑÐ±Ð¸Ð½Ñ ÑÑека Ð´Ð»Ñ Ð¸ÑполниÑелÑ. Ридеале ÑÑо знаÑение должно ÑавнÑÑÑÑÑ Ð¿ÑеделÑÐ½Ð¾Ð¼Ñ ÑазмеÑÑ ÑÑека, огÑаниÑÐµÐ½Ð½Ð¾Ð¼Ñ ÑдÑом (коÑоÑÑй ÑÑÑанавливаеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹
ulimit -sили аналогиÑной), за вÑÑеÑом запаÑа пÑимеÑно в мегабайÑ. ÐÑÐ¾Ñ Ð·Ð°Ð¿Ð°Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼, поÑÐ¾Ð¼Ñ ÑÑо ÑеÑÐ²ÐµÑ Ð¿ÑовеÑÑÐµÑ Ð³Ð»ÑÐ±Ð¸Ð½Ñ ÑÑека не в каждой пÑоÑедÑÑе, а ÑолÑко в поÑенÑиалÑно ÑекÑÑÑивнÑÑ Ð¿ÑоÑедÑÑÐ°Ñ , напÑимеÑ, пÑи вÑÑиÑлении вÑÑажений. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â два мегабайÑа (2MB) â вÑбÑано Ñ Ð±Ð¾Ð»ÑÑим запаÑом, Ñак ÑÑо ÑиÑк пеÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑека минимален. Ðо Ñ Ð´ÑÑгой ÑÑоÑонÑ, его Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾ÑÑаÑоÑно Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑложнÑÑ ÑÑнкÑий. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.ÐÑли
max_stack_depthбÑÐ´ÐµÑ Ð¿ÑевÑÑаÑÑ ÑакÑиÑеÑкий пÑедел ÑдÑа, Ñо ÑÑнкÑÐ¸Ñ Ñ Ð½ÐµÐ¾Ð³ÑаниÑенной ÑекÑÑÑией ÑÐ¼Ð¾Ð¶ÐµÑ Ð²ÑзваÑÑ ÐºÑÐ°Ñ Ð¾ÑделÑного пÑоÑеÑÑа ÑеÑвеÑа. Ð ÑиÑÑÐµÐ¼Ð°Ñ , где Postgres Pro Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÑеделиÑÑ Ð¿Ñедел, ÑÑÑановленнÑй ÑдÑом, он не Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ ÑÑÑановиÑÑ Ð´Ð»Ñ ÑÑого паÑамеÑÑа небезопаÑное знаÑение. Ðднако ÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð²ÑдаÑÑ Ð½Ðµ вÑе ÑиÑÑемÑ, поÑÑÐ¾Ð¼Ñ Ð²ÑбиÑаÑÑ ÑÑо знаÑение ÑледÑÐµÑ Ñ Ð¾ÑÑоÑожноÑÑÑÑ.shared_memory_type(enum)ÐÑбиÑÐ°ÐµÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ ÑазделÑемой памÑÑи, иÑполÑзÑÑ ÐºÐ¾ÑоÑÑй ÑеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ ÑабоÑаÑÑ Ñ Ð¾Ñновной облаÑÑÑÑ Ð¾Ð±Ñей памÑÑи, ÑодеÑжаÑей обÑие бÑÑеÑÑ Postgres Pro и дÑÑгие обÑие даннÑе. ÐопÑÑÑимÑе ваÑианÑÑ:
mmap(Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½ÑÑ Ð±Ð»Ð¾ÐºÐ¾Ð² ÑазделÑемой памÑÑи Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑmmap),sysv(Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑазделÑемой памÑÑи System V ÑÑнкÑиейshmget) иwindows(Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑазделÑемой памÑÑи в Windows). Ðе вÑе ваÑианÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð½Ð° ÑазнÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ ; пеÑвÑй из поддеÑживаемÑÑ Ð´Ð°Ð½Ð½Ð¾Ð¹ плаÑÑоÑмой ваÑианÑов ÑÑановиÑÑÑ Ð´Ð»Ñ Ð½ÐµÑ Ð²Ð°ÑианÑом по ÑмолÑаниÑ. ÐÑименÑÑÑsysv, коÑоÑÑй нигде не вÑбиÑаеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ, вообÑе не ÑекомендÑеÑÑÑ, Ñак как Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑÑого обÑÑма памÑÑи (Ñм. ÐодÑаздел 17.4.1) обÑÑно ÑÑебÑеÑÑÑ Ð½ÐµÑÑандаÑÑÐ½Ð°Ñ Ð½Ð°ÑÑÑойка ÑдÑа. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.dynamic_shared_memory_type(enum)ÐÑбиÑÐ°ÐµÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ динамиÑеÑкой ÑазделÑемой памÑÑи, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÑеÑвеÑом. ÐопÑÑÑимÑе ваÑианÑÑ:
posix(Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑазделÑемой памÑÑи POSIX ÑÑнкÑиейshm_open),sysv(Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑазделÑемой памÑÑи System V ÑÑнкÑиейshmget),windows(Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑазделÑемой памÑÑи в Windows) иmmap(Ð´Ð»Ñ ÑмÑлÑÑии ÑазделÑемой памÑÑи ÑеÑез оÑобÑажение в памÑÑÑ Ñайлов, Ñ ÑанÑÑÐ¸Ñ ÑÑ Ð² каÑалоге даннÑÑ ). Ðе вÑе ваÑианÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð½Ð° ÑазнÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ ; пеÑвÑй из поддеÑживаемÑÑ Ð´Ð°Ð½Ð½Ð¾Ð¹ плаÑÑоÑмой ваÑианÑов ÑÑановиÑÑÑ Ð´Ð»Ñ Ð½ÐµÑ Ð²Ð°ÑианÑом по ÑмолÑаниÑ. ÐÑименÑÑÑmmap, коÑоÑÑй нигде не вÑбиÑаеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ, вообÑе не ÑекомендÑеÑÑÑ, Ñак как опеÑаÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑиÑÑема Ð¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑиодиÑеÑки запиÑÑваÑÑ Ð½Ð° диÑк изменÑннÑе ÑÑÑаниÑÑ, ÑÑо ÑоздаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑÑ Ð½Ð°Ð³ÑÑзкÑ; однако ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð¾Ñладки, когда каÑалогpg_dynshmemÐ½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð½Ð° RAM-диÑке или когда дÑÑгие Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ñ ÑазделÑемой памÑÑи недоÑÑÑпнÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
18.4.2. ÐиÑк
temp_file_limit(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй обÑÑм диÑкового пÑоÑÑÑанÑÑва, коÑоÑÑй ÑÐ¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ Ð¾Ð´Ð¸Ð½ пÑоÑеÑÑ Ð´Ð»Ñ Ð²ÑеменнÑÑ Ñайлов, напÑимеÑ, пÑи ÑоÑÑиÑовке и Ñ ÐµÑиÑовании, или Ð´Ð»Ñ ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑдеÑживаемого кÑÑÑоÑа. ТÑанзакÑиÑ, коÑоÑÐ°Ñ Ð¿Ð¾Ð¿ÑÑаеÑÑÑ Ð¿ÑевÑÑиÑÑ ÑÑÐ¾Ñ Ð¿Ñедел, бÑÐ´ÐµÑ Ð¾Ñменена. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐнаÑение
-1(по ÑмолÑаниÑ) ознаÑаеÑ, ÑÑо пÑедел оÑÑÑÑÑÑвÑеÑ. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð³ÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±Ñий обÑÑм, коÑоÑÑй могÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени вÑе вÑеменнÑе ÑайлÑ, задейÑÑвованнÑе в данном пÑоÑеÑÑе Postgres Pro. СледÑÐµÑ Ð¾ÑмеÑиÑÑ, ÑÑо ÑÑо не каÑаеÑÑÑ Ñайлов Ñвно ÑоздаваемÑÑ Ð²ÑеменнÑÑ ÑаблиÑ; огÑаниÑиваеÑÑÑ ÑолÑко обÑÑм вÑеменнÑÑ Ñайлов, коÑоÑÑе ÑоздаÑÑÑÑ Ð½ÐµÑвно пÑи вÑполнении запÑоÑов.
18.4.3. ÐÑполÑзование ÑеÑÑÑÑов ÑдÑа
max_files_per_process(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло Ñайлов, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно оÑкÑÑÑÑ ÐºÐ°Ð¶Ð´Ñм ÑеÑвеÑнÑм подпÑоÑеÑÑом. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 1000 Ñайлов. ÐÑли ÑдÑо ÑеализÑÐµÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñное огÑаниÑение по пÑоÑеÑÑам, об ÑÑом паÑамеÑÑе можно не беÑпокоиÑÑÑÑ. Ðо на некоÑоÑÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ (а именно, в болÑÑинÑÑве ÑиÑÑем BSD) ÑдÑо позволÑÐµÑ Ð¾ÑделÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ð¾ÑкÑÑÑÑ Ð±Ð¾Ð»ÑÑе Ñайлов, Ñем могÑÑ Ð¾ÑкÑÑÑÑ Ð½ÐµÑколÑко пÑоÑеÑÑов одновÑеменно. ÐÑли Ð²Ñ ÑÑолкнÑÑеÑÑ Ñ Ð¾Ñибками «Too many open files» (СлиÑком много оÑкÑÑÑÑÑ Ñайлов), попÑобÑйÑе ÑменÑÑиÑÑ ÑÑо ÑиÑло. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
18.4.4. ÐадеÑжка оÑиÑÑки по ÑÑоимоÑÑи
Ðо вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ VACUUM и ANALYZE ÑиÑÑема ведÑÑ Ð²Ð½ÑÑÑенний ÑÑÑÑÑик, в коÑоÑом ÑÑммиÑÑÐµÑ Ð¾ÑениваемÑÑ ÑÑоимоÑÑÑ ÑазлиÑнÑÑ
вÑполнÑемÑÑ
опеÑаÑий ввода-вÑвода. Ðогда Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð½Ð°Ñ ÑÑоимоÑÑÑ Ð¿ÑевÑÑÐ°ÐµÑ Ð¿Ñедел (vacuum_cost_limit), пÑоÑеÑÑ, вÑполнÑÑÑий ÑÑÑ Ð¾Ð¿ÐµÑаÑиÑ, заÑÑÐ¿Ð°ÐµÑ Ð½Ð° некоÑоÑое вÑÐµÐ¼Ñ (vacuum_cost_delay). ÐаÑем ÑÑÑÑÑик ÑбÑаÑÑваеÑÑÑ Ð¸ пÑоÑеÑÑ Ð¿ÑодолжаеÑÑÑ.
ÐаннÑй подÑ
од Ñеализован Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð¼Ð¾Ð³Ð»Ð¸ ÑнизиÑÑ Ð²Ð»Ð¸Ñние ÑÑиÑ
команд на паÑаллелÑнÑÑ ÑабоÑÑ Ñ Ð±Ð°Ð·Ð¾Ð¹, за ÑÑÑÑ ÑменÑÑÐµÐ½Ð¸Ñ Ð½Ð°Ð³ÑÑзки на подÑиÑÑÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода. ÐÑÐµÐ½Ñ ÑаÑÑо не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑениÑ, наÑколÑко бÑÑÑÑо вÑполнÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±ÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ (напÑимеÑ, VACUUM и ANALYZE), но оÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ как можно менÑÑе влиÑли на вÑполнение дÑÑгиÑ
опеÑаÑий Ñ Ð±Ð°Ð·Ð¾Ð¹ даннÑÑ
. ÐдминиÑÑÑаÑоÑÑ Ð¸Ð¼ÐµÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑпÑавлÑÑÑ ÑÑим, наÑÑÑÐ°Ð¸Ð²Ð°Ñ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¾ÑиÑÑки по ÑÑоимоÑÑи.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ñежим оÑклÑÑÑн Ð´Ð»Ñ Ð²ÑполнÑемÑÑ
вÑÑÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ VACUUM. ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ ÐµÐ³Ð¾, нÑжно ÑÑÑановиÑÑ Ð² vacuum_cost_delay ненÑлевое знаÑение.
vacuum_cost_delay(floating point)ÐÑодолжиÑелÑноÑÑÑ Ð²Ñемени, в ÑеÑение коÑоÑого бÑÐ´ÐµÑ Ð¿ÑоÑÑаиваÑÑ Ð¿ÑоÑеÑÑ, пÑевÑÑивÑий пÑедел ÑÑоимоÑÑи. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно нÑлÑ, Ñо еÑÑÑ Ð·Ð°Ð´ÐµÑжка оÑиÑÑки оÑÑÑÑÑÑвÑеÑ. ÐÑи положиÑелÑнÑÑ Ð·Ð½Ð°ÑениÑÑ Ð¸Ð½ÑенÑивноÑÑÑ Ð¾ÑиÑÑки бÑÐ´ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ ÑÑоимоÑÑи.
ÐÑи наÑÑÑойке инÑенÑивноÑÑи оÑиÑÑки длÑ
vacuum_cost_delayобÑÑно вÑбиÑаÑÑÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно неболÑÑие знаÑениÑ, вплоÑÑ Ð´Ð¾ 1 миллиÑекÑÐ½Ð´Ñ Ð¸ менÑÑе. ХоÑÑ Ð²vacuum_cost_delayможно задаваÑÑ Ð´ÑобнÑе знаÑÐµÐ½Ð¸Ñ Ð² миллиÑекÑÐ½Ð´Ð°Ñ , Ñакие задеÑжки могÑÑ Ð±ÑÑÑ Ð½ÐµÑоÑнÑми на ÑÑаÑÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ . Ðа ÑÐ°ÐºÐ¸Ñ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ Ð´Ð»Ñ ÑвелиÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑенÑивноÑÑиVACUUMпо ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑÑовнем, обеÑпеÑиваемÑм пÑи задеÑжке 1 мÑ, поÑÑебÑеÑÑÑ Ð½Ð°ÑÑÑаиваÑÑ Ð´ÑÑгие паÑамеÑÑÑ ÑÑоимоÑÑи оÑиÑÑки. Тем не менее Ð¸Ð¼ÐµÐµÑ ÑмÑÑл вÑбиÑаÑÑ Ð½Ð°ÑÑолÑко малÑÑ Ð·Ð°Ð´ÐµÑжкÑvacuum_cost_delay, наÑколÑко Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÐµÑпеÑиÑÑ Ð¿Ð»Ð°ÑÑоÑма; болÑÑие задеÑжки не бÑдÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ.vacuum_cost_page_hit(integer)ÐÑимеÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð¾ÑиÑÑки бÑÑеÑа, оказавÑегоÑÑ Ð² обÑем кеÑе. ÐÑо подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð¿Ñла бÑÑеÑов, поиÑк в Ñ ÐµÑ-ÑаблиÑе и ÑканиÑование ÑодеÑжимого ÑÑÑаниÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ñавен одномÑ.
vacuum_cost_page_miss(integer)ÐÑимеÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð¾ÑиÑÑки бÑÑеÑа, коÑоÑÑй нÑжно пÑоÑиÑаÑÑ Ñ Ð´Ð¸Ñка. ÐÑо подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð¿Ñла бÑÑеÑов, поиÑк в Ñ ÐµÑ-ÑаблиÑе, ÑÑение ÑÑебÑемого блока Ñ Ð´Ð¸Ñка и ÑканиÑование его ÑодеÑжимого. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ñавен 10.
vacuum_cost_page_dirty(integer)ÐÑимеÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð¾ÑиÑÑки, пÑи коÑоÑой изменÑеÑÑÑ Ð±Ð»Ð¾Ðº, не модиÑиÑиÑованнÑй Ñанее. Ð Ð½ÐµÑ Ð²ÐºÐ»ÑÑаеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода, ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ Ð·Ð°Ð¿Ð¸ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñнного блока на диÑк. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ñавен 20.
vacuum_cost_limit(integer)ÐбÑÐ°Ñ ÑÑоимоÑÑÑ, пÑи накоплении коÑоÑой пÑоÑеÑÑ Ð¾ÑиÑÑки бÑÐ´ÐµÑ Ð·Ð°ÑÑпаÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ñавен 200.
ÐÑимеÑание
ÐекоÑоÑÑе опеÑаÑии ÑÑÑанавливаÑÑ ÐºÑиÑиÑеÑкие блокиÑовки и поÑÑÐ¾Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð²ÐµÑÑаÑÑÑÑ ÐºÐ°Ðº можно бÑÑÑÑее. Ðо вÑÐµÐ¼Ñ ÑакиÑ
опеÑаÑий задеÑжка оÑиÑÑки по ÑÑоимоÑÑи не оÑÑÑеÑÑвлÑеÑÑÑ, Ñак ÑÑо Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð½Ð°Ñ Ð·Ð° ÑÑо вÑÐµÐ¼Ñ ÑÑоимоÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð¼Ð½Ð¾Ð³Ð¾ пÑевÑÑаÑÑ ÑÑÑановленнÑй пÑедел. Ðо избежание ненÑжнÑÑ
длиÑелÑнÑÑ
задеÑжек в ÑакиÑ
ÑлÑÑаÑÑ
, ÑакÑиÑеÑÐºÐ°Ñ Ð·Ð°Ð´ÐµÑжка вÑÑиÑлÑеÑÑÑ Ð¿Ð¾ ÑоÑмÑле vacuum_cost_delay * accumulated_balance / vacuum_cost_limit и огÑаниÑиваеÑÑÑ Ð¼Ð°ÐºÑимÑмом, ÑавнÑм vacuum_cost_delay * 4.
18.4.5. Ð¤Ð¾Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ
Ð ÑиÑле ÑпеÑиалÑнÑÑ Ð¿ÑоÑеÑÑов ÑеÑвеÑа еÑÑÑ Ð¿ÑоÑеÑÑ Ñоновой запиÑи, задаÑа коÑоÑого â оÑÑÑеÑÑвлÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Â«Ð³ÑÑзнÑÑ Â» (новÑÑ Ð¸Ð»Ð¸ изменÑннÑÑ ) обÑÐ¸Ñ Ð±ÑÑеÑов на диÑк. Ðогда колиÑеÑÑво ÑиÑÑÑÑ Ð¾Ð±ÑÐ¸Ñ Ð±ÑÑеÑов ÑÑиÑаеÑÑÑ Ð½ÐµÐ´Ð¾ÑÑаÑоÑнÑм, даннÑй пÑоÑеÑÑ Ð·Ð°Ð¿Ð¸ÑÑÐ²Ð°ÐµÑ Ð³ÑÑзнÑе бÑÑеÑÑ Ð² ÑайловÑÑ ÑиÑÑÐµÐ¼Ñ Ð¸ помеÑÐ°ÐµÑ Ð¸Ñ ÐºÐ°Ðº ÑиÑÑÑе. ÐÑо ÑÐ½Ð¸Ð¶Ð°ÐµÑ Ð²ÐµÑоÑÑноÑÑÑ Ñого, ÑÑо ÑеÑвеÑнÑе пÑоÑеÑÑÑ, вÑполнÑÑÑие запÑоÑÑ Ð¿Ð¾Ð»ÑзоваÑелей, не ÑмогÑÑ Ð½Ð°Ð¹Ñи ÑиÑÑÑе бÑÑеÑÑ Ð¸ им пÑидÑÑÑÑ ÑбÑаÑÑваÑÑ Ð³ÑÑзнÑе бÑÑеÑÑ ÑамоÑÑоÑÑелÑно. Ðднако пÑоÑеÑÑ Ñоновой запиÑи ÑвелиÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±ÑÑÑ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð½Ð° подÑиÑÑÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода, Ñак как он Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑ Ð½ÐµÐ¾Ð´Ð½Ð¾ÐºÑаÑно изменÑемÑÑ ÑÑÑаниÑÑ Ð½ÐµÑколÑко Ñаз, Ñогда как ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ бÑло Ð±Ñ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ð²Ñего один Ñаз в конÑÑолÑной ÑоÑке. ÐаÑамеÑÑÑ, ÑаÑÑмаÑÑиваемÑе в данном подÑазделе, позволÑÑÑ Ð½Ð°ÑÑÑоиÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ Ñоновой запиÑи Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑнÑÑ Ð½Ñжд.
bgwriter_delay(integer)ÐадаÑÑ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¼ÐµÐ¶Ð´Ñ ÑаÑндами акÑивноÑÑи пÑоÑеÑÑа Ñоновой запиÑи. Ðо вÑÐµÐ¼Ñ ÑаÑнда ÑÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð¾ÑÑÑеÑÑвлÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð½ÐµÐºÐ¾ÑоÑого колиÑеÑÑва загÑÑзнÑннÑÑ Ð±ÑÑеÑов (ÑÑо наÑÑÑаиваеÑÑÑ ÑледÑÑÑими паÑамеÑÑами). ÐаÑем он заÑÑÐ¿Ð°ÐµÑ Ð½Ð° вÑемÑ
bgwriter_delay, и вÑÑ Ð¿Ð¾Ð²ÑоÑÑеÑÑÑ Ñнова. Ðднако еÑли в пÑле не оÑÑаÑÑÑÑ Ð·Ð°Ð³ÑÑзнÑннÑÑ Ð±ÑÑеÑов, он Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ°ÐºÑивен более длиÑелÑное вÑемÑ. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ñавен 200 миллиÑекÑндам (200ms). ÐамеÑÑÑе, ÑÑо во Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑиÑÑÐµÐ¼Ð°Ñ ÑазÑеÑение ÑаймеÑа ÑоÑÑавлÑÐµÑ 10 мÑ, поÑÑÐ¾Ð¼Ñ ÐµÑли задаÑÑ Ð²bgwriter_delayзнаÑение, не кÑаÑное 10, ÑакÑиÑеÑки бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен ÑÐ¾Ñ Ð¶Ðµ ÑезÑлÑÑаÑ, ÑÑо и Ñо ÑледÑÑÑим за ним кÑаÑнÑм 10. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.bgwriter_lru_maxpages(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло бÑÑеÑов, коÑоÑое ÑÐ¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ð¿ÑоÑеÑÑ Ñоновой запиÑи за ÑаÑнд акÑивноÑÑи. ÐÑи нÑлевом знаÑении ÑÐ¾Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð¾ÑклÑÑаеÑÑÑ. (УÑÑиÑе, ÑÑо на конÑÑолÑнÑе ÑоÑки, коÑоÑÑе ÑпÑавлÑÑÑÑÑ Ð¾ÑделÑнÑм вÑпомогаÑелÑнÑм пÑоÑеÑÑом, ÑÑо не влиÑеÑ.) Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñение ÑÑого паÑамеÑÑа â 100 бÑÑеÑов. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.bgwriter_lru_multiplier(floating point)ЧиÑло загÑÑзнÑннÑÑ Ð±ÑÑеÑов, запиÑÑваемÑÑ Ð² оÑеÑедном ÑаÑнде, завиÑÐ¸Ñ Ð¾Ñ Ñого, ÑколÑко новÑÑ Ð±ÑÑеÑов ÑÑебовалоÑÑ ÑеÑвеÑнÑм пÑоÑеÑÑам в пÑедÑдÑÑÐ¸Ñ ÑаÑÐ½Ð´Ð°Ñ . СÑеднÑÑ Ð½ÐµÐ´Ð°Ð²Ð½ÑÑ Ð¿Ð¾ÑÑебноÑÑÑ ÑмножаеÑÑÑ Ð½Ð°
bgwriter_lru_multiplierи пÑедполагаеÑÑÑ, ÑÑо именно ÑÑолÑко бÑÑеÑов поÑÑебÑеÑÑÑ Ð½Ð° ÑледÑÑÑем ÑаÑнде. ÐÑоÑеÑÑ Ñоновой запиÑи бÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑ Ð½Ð° диÑк и оÑвобождаÑÑ Ð±ÑÑеÑÑ, пока ÑиÑло ÑиÑÑÑÑ Ð±ÑÑеÑов не доÑÑÐ¸Ð³Ð½ÐµÑ Ñелевого знаÑениÑ. (ÐÑи ÑÑом ÑиÑло бÑÑеÑов, запиÑÑваемÑÑ Ð·Ð° ÑаÑнд, огÑаниÑиваеÑÑÑ ÑвеÑÑ Ñ Ð¿Ð°ÑамеÑÑомbgwriter_lru_maxpages.) Таким обÑазом, Ñо множиÑелем, ÑавнÑм 1.0, запиÑÑваеÑÑÑ Ñовно ÑÑолÑко бÑÑеÑов, ÑколÑко ÑÑебÑеÑÑÑ Ð¿Ð¾ пÑÐµÐ´Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ («ÑоÑно по планÑ»). УвелиÑение ÑÑого множиÑÐµÐ»Ñ Ð´Ð°ÑÑ Ð½ÐµÐºÐ¾ÑоÑÑÑ ÑÑÑÐ°Ñ Ð¾Ð²ÐºÑ Ð¾Ñ ÑÐµÐ·ÐºÐ¸Ñ ÑкаÑков поÑÑебноÑÑей, Ñогда как ÑменÑÑение оÑÑÐ°Ð¶Ð°ÐµÑ Ð½Ð°Ð¼ÐµÑение оÑÑавиÑÑ Ð½ÐµÐºÐ¾ÑоÑÑй обÑÑм запиÑи Ð´Ð»Ñ ÑеÑвеÑнÑÑ Ð¿ÑоÑеÑÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ Ñавен 2.0. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑÑановиÑÑ ÑолÑко в Ñайлеpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.bgwriter_flush_after(integer)Ðогда пÑоÑеÑÑом Ñоновой запиÑи запиÑÑваеÑÑÑ Ð±Ð¾Ð»ÑÑе заданного обÑÑма даннÑÑ , ÑеÑÐ²ÐµÑ Ð´Ð°ÑÑ Ñказание ÐС пÑоизвеÑÑи запиÑÑ ÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² нижележаÑее Ñ ÑанилиÑе. ÐÑо огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±ÑÑм «гÑÑзнÑÑ Â» даннÑÑ Ð² ÑÑÑаниÑном кеÑе ÑдÑа и ÑменÑÑÐ°ÐµÑ Ð²ÐµÑоÑÑноÑÑÑ Ð·Ð°ÑоÑÐ¼Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ñи вÑполнении
fsyncв конÑе конÑÑолÑной ÑоÑки или когда ÐС ÑбÑаÑÑÐ²Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе на диÑк болÑÑими поÑÑиÑми в Ñоне. ЧаÑÑо ÑÑо знаÑиÑелÑно ÑменÑÑÐ°ÐµÑ Ð·Ð°Ð´ÐµÑжки ÑÑанзакÑий, но бÑваÑÑ ÑиÑÑаÑии (оÑобенно когда обÑÑм ÑабоÑей нагÑÑзки болÑÑе shared_buffers, но менÑÑе ÑÑÑаниÑного кеÑа ÐС), когда пÑоизводиÑелÑноÑÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑпаÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´ÐµÐ¹ÑÑвÑÐµÑ Ð½Ðµ на вÑÐµÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ . ÐÑли знаÑение паÑамеÑÑа задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). Ðн Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°Ñение оÑ0(пÑи ÑÑом ÑпÑавление оÑложенной запиÑÑÑ Ð¾ÑклÑÑаеÑÑÑ) до 2 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (2MB). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â512kBв Linux и0в дÑÑÐ³Ð¸Ñ ÐС. (ÐÑлиBLCKSZоÑлиÑен Ð¾Ñ 8 ÐÐ, знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ макÑимÑм коÑÑекÑиÑÑÑÑÑÑ Ð¿ÑопоÑÑионалÑно.) ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.
С маленÑкими знаÑениÑми bgwriter_lru_maxpages и bgwriter_lru_multiplier ÑменÑÑаеÑÑÑ Ð°ÐºÑивноÑÑÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода Ñо ÑÑоÑÐ¾Ð½Ñ Ð¿ÑоÑеÑÑа Ñоновой запиÑи, но ÑвелиÑиваеÑÑÑ Ð²ÐµÑоÑÑноÑÑÑ Ñого, ÑÑо запиÑÑ Ð¿ÑидÑÑÑÑ Ð¿ÑоизводиÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно ÑеÑвеÑнÑм пÑоÑеÑÑам, ÑÑо Ð·Ð°Ð¼ÐµÐ´Ð»Ð¸Ñ Ð²Ñполнение запÑоÑов.
18.4.6. ÐÑÐ¸Ð½Ñ Ñонное поведение
effective_io_concurrency(integer)ÐадаÑÑ Ð´Ð¾Ð¿ÑÑÑимое ÑиÑло паÑаллелÑнÑÑ Ð¾Ð¿ÐµÑаÑий ввода-вÑвода, коÑоÑое говоÑÐ¸Ñ Postgres Pro о Ñом, ÑколÑко опеÑаÑий ввода-вÑвода могÑÑ Ð±ÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ñ Ð¾Ð´Ð½Ð¾Ð²Ñеменно. Чем болÑÑе ÑÑо ÑиÑло, Ñем болÑÑе опеÑаÑий ввода-вÑвода бÑÐ´ÐµÑ Ð¿ÑÑаÑÑÑÑ Ð²ÑполниÑÑ Ð¿Ð°ÑаллелÑно Postgres Pro в оÑделÑном ÑеанÑе. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð»ÐµÐ¶Ð°Ñ Ð² инÑеÑвале Ð¾Ñ 1 до 1000, а нÑлевое знаÑение оÑклÑÑÐ°ÐµÑ Ð°ÑÐ¸Ð½Ñ ÑоннÑе запÑоÑÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²Ð»Ð¸ÑÐµÑ ÑолÑко на ÑканиÑование по биÑовой каÑÑе.
ÐÐ»Ñ Ð¼Ð°Ð³Ð½Ð¸ÑнÑÑ Ð½Ð¾ÑиÑелей Ñ Ð¾ÑоÑим наÑалÑнÑм знаÑением ÑÑого паÑамеÑÑа бÑÐ´ÐµÑ ÑиÑло оÑделÑнÑÑ Ð´Ð¸Ñков, ÑоÑÑавлÑÑÑÐ¸Ñ Ð¼Ð°ÑÑив RAID 0 или RAID 1, в коÑоÑом ÑазмеÑена база даннÑÑ . (ÐÐ»Ñ RAID 5 ÑледÑÐµÑ Ð¸ÑклÑÑиÑÑ Ð¾Ð´Ð¸Ð½ диÑк (как диÑк Ñ ÑÑÑноÑÑÑÑ).) Ðднако еÑли база даннÑÑ ÑаÑÑо обÑабаÑÑÐ²Ð°ÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво запÑоÑов в ÑазлиÑнÑÑ ÑеанÑÐ°Ñ , и пÑи неболÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ Ð´Ð¸ÑковÑй маÑÑив Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð·Ð°Ð³ÑÑжен. ÐÑли пÑодолжаÑÑ ÑвелиÑиваÑÑ ÑÑо знаÑение пÑи полной загÑÑзке диÑков, ÑÑо пÑиведÑÑ ÑолÑко к ÑвелиÑÐµÐ½Ð¸Ñ Ð½Ð°Ð³ÑÑзки на пÑоÑеÑÑоÑ. ÐиÑки SSD и дÑÑгие Ð²Ð¸Ð´Ñ Ñ ÑанилиÑа в памÑÑи ÑаÑÑо могÑÑ Ð¾Ð±ÑабаÑÑваÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво паÑаллелÑнÑÑ Ð·Ð°Ð¿ÑоÑов, Ñак ÑÑо опÑималÑнÑм ÑиÑлом Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑколÑко ÑоÑен.
ÐÑÐ¸Ð½Ñ ÑоннÑй ввод-вÑвод завиÑÐ¸Ñ Ð¾Ñ ÑÑÑекÑивноÑÑи ÑÑнкÑии
posix_fadvise, коÑоÑÐ°Ñ Ð¾ÑÑÑÑÑÑвÑÐµÑ Ð² некоÑоÑÑÑ Ð¾Ð¿ÐµÑаÑионнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ . Ð ÑлÑÑае ÐµÑ Ð¾ÑÑÑÑÑÑÐ²Ð¸Ñ Ð¿Ð¾Ð¿ÑÑка задаÑÑ Ð´Ð»Ñ ÑÑого паÑамеÑÑа лÑбое ненÑлевое знаÑение пÑиведÑÑ Ðº оÑибке. РнекоÑоÑÑÑ ÑиÑÑÐµÐ¼Ð°Ñ (напÑимеÑ, в Solaris), ÑÑа ÑÑнкÑÐ¸Ñ Ð¿ÑиÑÑÑÑÑвÑеÑ, но на Ñамом деле ниÑего не делаеÑ.ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 1 в ÑиÑÑÐµÐ¼Ð°Ñ , где ÑÑо поддеÑживаеÑÑÑ, и 0 в оÑÑалÑнÑÑ . ÐÑо знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð² опÑеделÑнном ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑÑановив одноимÑннÑй паÑамеÑÑ ÑаблиÑного пÑоÑÑÑанÑÑва (Ñм. ALTER TABLESPACE).
maintenance_io_concurrency(integer)ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð´Ð¾Ð±ÐµÐ½
effective_io_concurrency, но иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑий обÑлÑживаниÑ, коÑоÑÑе вÑполнÑÑÑÑÑ Ð² ÑазлиÑнÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑÐºÐ¸Ñ ÑеанÑÐ°Ñ .ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 10 в ÑиÑÑÐµÐ¼Ð°Ñ , где ÑÑо поддеÑживаеÑÑÑ, и 0 в оÑÑалÑнÑÑ . ÐÑо знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð² опÑеделÑнном ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑÑановив одноимÑннÑй паÑамеÑÑ ÑаблиÑного пÑоÑÑÑанÑÑва (Ñм. ALTER TABLESPACE).
max_worker_processes(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑоновÑÑ Ð¿ÑоÑеÑÑов, коÑоÑое можно запÑÑÑиÑÑ Ð² ÑекÑÑей ÑиÑÑеме. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 8.
ÐÐ»Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð³Ð¾ ÑеÑвеÑа знаÑение ÑÑого паÑамеÑÑа должно бÑÑÑ Ð±Ð¾Ð»ÑÑе или Ñавно знаÑÐµÐ½Ð¸Ñ Ð½Ð° ведÑÑем. РпÑоÑивном ÑлÑÑае на ведомом ÑеÑвеÑе не бÑдÑÑ ÑазÑеÑÐµÐ½Ñ Ð·Ð°Ð¿ÑоÑÑ.
ÐдновÑеменно Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼ ÑÑого знаÑÐµÐ½Ð¸Ñ Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ измениÑÑ max_parallel_workers, max_parallel_maintenance_workers и max_parallel_workers_per_gather.
max_parallel_workers_per_gather(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, коÑоÑÑе могÑÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ Ñзлом
GatherилиGather Merge. ÐаÑаллелÑнÑе ÑабоÑие пÑоÑеÑÑÑ Ð±ÐµÑÑÑÑÑ Ð¸Ð· пÑла пÑоÑеÑÑов, конÑÑолиÑÑемого паÑамеÑÑом max_worker_processes, в колиÑеÑÑве, огÑаниÑиваемом знаÑением max_parallel_workers. УÑÑиÑе, ÑÑо запÑоÑенное колиÑеÑÑво ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпно во вÑÐµÐ¼Ñ Ð²ÑполнениÑ. Ð ÑÑом ÑлÑÑае план бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ñ Ð¼ÐµÐ½ÑÑим ÑиÑлом пÑоÑеÑÑов, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑÑÑекÑивно. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 2. ÐнаÑение 0 оÑклÑÑÐ°ÐµÑ Ð¿Ð°ÑаллелÑное вÑполнение запÑоÑов.УÑÑиÑе, ÑÑо паÑаллелÑнÑе запÑоÑÑ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÑÑеблÑÑÑ Ð·Ð½Ð°ÑиÑелÑно болÑÑе ÑеÑÑÑÑов, Ñем не паÑаллелÑнÑе, Ñак как каждÑй ÑабоÑий пÑоÑеÑÑ ÑвлÑеÑÑÑ Ð¾ÑделÑнÑм пÑоÑеÑÑом и оказÑÐ²Ð°ÐµÑ Ð½Ð° ÑиÑÑÐµÐ¼Ñ Ð¿ÑимеÑно Ñакое же влиÑние, как дополниÑелÑнÑй полÑзоваÑелÑÑкий ÑеанÑ. ÐÑо ÑледÑÐµÑ ÑÑиÑÑваÑÑ, вÑбиÑÐ°Ñ Ð·Ð½Ð°Ñение ÑÑого паÑамеÑÑа, а Ñакже наÑÑÑÐ°Ð¸Ð²Ð°Ñ Ð´ÑÑгие паÑамеÑÑÑ, ÑпÑавлÑÑÑие иÑполÑзованием ÑеÑÑÑÑов, напÑÐ¸Ð¼ÐµÑ work_mem. ÐгÑаниÑÐµÐ½Ð¸Ñ ÑеÑÑÑÑов, Ñакие как
work_mem, пÑименÑÑÑÑÑ Ðº ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑабоÑÐµÐ¼Ñ Ð¿ÑоÑеÑÑÑ Ð¾ÑделÑно, ÑÑо ознаÑаеÑ, ÑÑо обÑÐ°Ñ Ð½Ð°Ð³ÑÑзка Ð´Ð»Ñ Ð²ÑÐµÑ Ð¿ÑоÑеÑÑов Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð³Ð¾Ñаздо болÑÑе, Ñем пÑи обÑÑном иÑполÑзовании одного пÑоÑеÑÑа. ÐапÑимеÑ, паÑаллелÑнÑй запÑоÑ, задейÑÑвÑÑÑий 4 ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑа, Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ Ð² 5 Ñаз болÑÑе вÑемени пÑоÑеÑÑоÑа, обÑÑма памÑÑи, ввода-вÑвода и Ñ. д., по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð·Ð°Ð¿ÑоÑом, не задейÑÑвÑÑÑим ÑабоÑие пÑоÑеÑÑÑ Ð²Ð¾Ð²Ñе.Ðа дополниÑелÑнÑми ÑведениÑми о паÑаллелÑнÑÑ Ð·Ð°Ð¿ÑоÑÐ°Ñ Ð¾Ð±ÑаÑиÑеÑÑ Ðº Ðлаве 15.
max_parallel_maintenance_workers(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, коÑоÑÑе могÑÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑлÑжебной командой. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð°ÑаллелÑнÑе пÑоÑеÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ ÑолÑко
CREATE INDEXпÑи поÑÑÑоении индекÑа-B-деÑева иVACUUMбез ÑказаниÑFULL. ÐаÑаллелÑнÑе ÑабоÑие пÑоÑеÑÑÑ Ð±ÐµÑÑÑÑÑ Ð¸Ð· пÑла пÑоÑеÑÑов, конÑÑолиÑÑемого паÑамеÑÑом max_worker_processes, в колиÑеÑÑве, огÑаниÑиваемом знаÑением max_parallel_workers. УÑÑиÑе, ÑÑо запÑоÑенное колиÑеÑÑво ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпно во вÑÐµÐ¼Ñ Ð²ÑполнениÑ. Ð ÑÑом ÑлÑÑае ÑлÑÐ¶ÐµÐ±Ð½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ñ Ð¼ÐµÐ½ÑÑим ÑиÑлом пÑоÑеÑÑов, Ñем ожидалоÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 2. ÐнаÑение 0 оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование паÑаллелÑнÑÑ Ð¸ÑполниÑелей ÑлÑжебнÑми командами.ÐамеÑÑÑе, ÑÑо паÑаллелÑно вÑполнÑемÑе ÑлÑжебнÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾ÑÑеблÑÑÑ Ð·Ð½Ð°ÑиÑелÑно болÑÑе памÑÑи, Ñем ÑавнознаÑнÑе непаÑаллелÑнÑе опеÑаÑии. ÐÑо оÑлиÑÐ°ÐµÑ Ð¸Ñ Ð¾Ñ Ð¿Ð°ÑаллелÑнÑÑ Ð·Ð°Ð¿ÑоÑов, пÑи вÑполнении коÑоÑÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑеÑÑÑÑов дейÑÑвÑÑÑ Ð½Ð° оÑделÑнÑе ÑабоÑие пÑоÑеÑÑÑ. ÐÐ»Ñ Ð¿Ð°ÑаллелÑнÑÑ ÑлÑжебнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ огÑаниÑение ÑеÑÑÑÑов
maintenance_work_memÑÑиÑаеÑÑÑ Ð´ÐµÐ¹ÑÑвÑÑÑим на ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² Ñелом, вне завиÑимоÑÑи Ð¾Ñ ÑиÑла паÑаллелÑнÑÑ ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов. Тем не менее паÑаллелÑнÑе ÑлÑжебнÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð³ÑÑ Ð³Ð¾Ñаздо болÑÑе нагÑÑжаÑÑ Ð¿ÑоÑеÑÑÐ¾Ñ Ð¸ ÐºÐ°Ð½Ð°Ð»Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода.max_parallel_workers(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, коÑоÑое ÑиÑÑема ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ Ð´Ð»Ñ Ð¿Ð°ÑаллелÑнÑÑ Ð¾Ð¿ÐµÑаÑий. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 8. ÐÑи ÑвелиÑении или ÑменÑÑÐµÐ½Ð¸Ñ ÑÑого знаÑÐµÐ½Ð¸Ñ Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ ÑмÑÑл ÑкоÑÑекÑиÑоваÑÑ max_parallel_maintenance_workers и max_parallel_workers_per_gather. ÐамеÑÑÑе, ÑÑо знаÑение данного паÑамеÑÑа, пÑевÑÑаÑÑее max_worker_processes, не бÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ, Ñак как паÑаллелÑнÑе ÑабоÑие пÑоÑеÑÑÑ Ð±ÐµÑÑÑÑÑ Ð¸Ð· пÑла ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, огÑаниÑиваемого ÑÑим паÑамеÑÑом.
backend_flush_after(integer)Ðогда одним обÑлÑживаÑÑим пÑоÑеÑÑом запиÑÑваеÑÑÑ Ð±Ð¾Ð»ÑÑе заданного обÑÑма даннÑÑ , ÑеÑÐ²ÐµÑ Ð´Ð°ÑÑ Ñказание ÐС пÑоизвеÑÑи запиÑÑ ÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² нижележаÑее Ñ ÑанилиÑе. ÐÑо огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±ÑÑм «гÑÑзнÑÑ Â» даннÑÑ Ð² ÑÑÑаниÑном кеÑе ÑдÑа и ÑменÑÑÐ°ÐµÑ Ð²ÐµÑоÑÑноÑÑÑ Ð·Ð°ÑоÑÐ¼Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ñи вÑполнении
fsyncв конÑе конÑÑолÑной ÑоÑки или когда ÐС ÑбÑаÑÑÐ²Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе на диÑк болÑÑими поÑÑиÑми в Ñоне. ЧаÑÑо ÑÑо знаÑиÑелÑно ÑокÑаÑÐ°ÐµÑ Ð·Ð°Ð´ÐµÑжки ÑÑанзакÑий, но бÑваÑÑ ÑиÑÑаÑии (оÑобенно когда обÑÑм ÑабоÑей нагÑÑзки болÑÑе shared_buffers, но менÑÑе ÑÑÑаниÑного кеÑа ÐС), когда пÑоизводиÑелÑноÑÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑпаÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´ÐµÐ¹ÑÑвÑÐµÑ Ð½Ðµ на вÑÐµÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ . ÐÑли знаÑение паÑамеÑÑа задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). Ðн Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°Ñение оÑ0(пÑи ÑÑом ÑпÑавление оÑложенной запиÑÑÑ Ð¾ÑклÑÑаеÑÑÑ) до 2 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (2MB). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение0, Ñо еÑÑÑ ÑÑо поведение оÑклÑÑено. (ÐÑлиBLCKSZоÑлиÑен Ð¾Ñ 8 ÐÐ, макÑималÑное знаÑение коÑÑекÑиÑÑеÑÑÑ Ð¿ÑопоÑÑионалÑно.)old_snapshot_threshold(integer)ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное вÑемÑ, в ÑеÑение коÑоÑого можно полÑзоваÑÑÑÑ Ñнимком ÑоÑÑоÑÐ½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑа без ÑиÑка полÑÑиÑÑ Ð¾ÑибкÑ
Ñнимок ÑлиÑком ÑÑаÑ. ÐаннÑе, поÑеÑÑвÑие акÑÑалÑноÑÑÑ Ð¸ пÑебÑваÑÑие в ÑÑом ÑоÑÑоÑнии долÑÑе заданного вÑемени, могÑÑ Ð±ÑÑÑ Ð²ÑÑиÑенÑ. ÐÑо пÑедоÑвÑаÑÐ°ÐµÑ ÑаздÑвание из-за Ñнимков, коÑоÑÑе оÑÑаÑÑÑÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвованнÑми долгое вÑемÑ. Ðо избежание полÑÑÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾ÑÑекÑнÑÑ ÑезÑлÑÑаÑов из-за оÑиÑÑки даннÑÑ , коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±Ñли Ð±Ñ Ð½Ð°Ð±Ð»ÑдаÑÑÑÑ Ð² Ñаком Ñнимке, клиенÑÑ Ð±ÑÐ´ÐµÑ Ð²Ñдана оÑибка, еÑли возÑаÑÑ Ñнимка пÑевÑÑÐ¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñй пÑедел и из ÑÑого Ñнимка бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑоÑена ÑÑÑаниÑа, изменÑÐ½Ð½Ð°Ñ Ñо вÑемени его ÑозданиÑ.ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в минÑÑÐ°Ñ . ÐнаÑение
-1(по ÑмолÑаниÑ) оÑклÑÑÐ°ÐµÑ ÑÑо поведение, ÑакÑиÑеÑки Ð´ÐµÐ»Ð°Ñ Ð¿ÑеделÑнÑй ÑÑок Ñнимков беÑконеÑнÑм. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.ÐолезнÑе Ð´Ð»Ñ Ð¿ÑоизводÑÑвенной ÑÑÐµÐ´Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð»ÐµÐ¶Ð°ÑÑ Ð² инÑеÑвале Ð¾Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑаÑов до неÑколÑÐºÐ¸Ñ Ð´Ð½ÐµÐ¹. ÐинималÑнÑе знаÑÐµÐ½Ð¸Ñ (напÑимеÑ,
0или1min) допÑÑкаÑÑÑÑ ÑолÑко поÑомÑ, ÑÑо они могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð¿Ñи ÑеÑÑиÑовании. ХоÑÑ Ð´Ð¾Ð¿ÑÑÑимÑм бÑÐ´ÐµÑ Ð¸ знаÑение60d(60 дней), ÑÑÑиÑе, ÑÑо пÑи Ð¼Ð½Ð¾Ð³Ð¸Ñ Ð²Ð¸Ð´Ð°Ñ Ð½Ð°Ð³ÑÑзки кÑиÑиÑное ÑаздÑвание Ð±Ð°Ð·Ñ Ð¸Ð»Ð¸ заÑикливание иденÑиÑикаÑоÑов ÑÑанзакÑий Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸ÑÑ Ð² намного менÑÑÐ¸Ñ Ð²ÑеменнÑÑ Ð¾ÑÑÐµÐ·ÐºÐ°Ñ .Ðогда ÑÑо огÑаниÑение дейÑÑвÑеÑ, оÑвобождÑнное пÑоÑÑÑанÑÑво в конÑе оÑноÑÐµÐ½Ð¸Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ñдано опеÑаÑионной ÑиÑÑеме, Ñак как пÑи ÑÑом бÑÐ´ÐµÑ Ñдалена инÑоÑмаÑиÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð°Ñ Ð´Ð»Ñ Ð²ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑÑÐ»Ð¾Ð²Ð¸Ñ Â«Ñнимок ÑлиÑком ÑÑаÑ». ÐÑÑ Ð¿ÑоÑÑÑанÑÑво, вÑделенное оÑноÑениÑ, оÑÑанеÑÑÑ ÑвÑзаннÑм Ñ Ð½Ð¸Ð¼ до ÑÐµÑ Ð¿Ð¾Ñ, пока не бÑÐ´ÐµÑ Ð¾Ñвобождено Ñвно (напÑимеÑ, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
VACUUM FULL).УÑÑановка ÑÑого паÑамеÑÑа не гаÑанÑиÑÑеÑ, ÑÑо обознаÑÐµÐ½Ð½Ð°Ñ Ð¾Ñибка бÑÐ´ÐµÑ Ð²ÑдаваÑÑÑÑ Ð¿Ñи вÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½ÑÑ Ð¾Ð±ÑÑоÑÑелÑÑÑÐ²Ð°Ñ . Ðа Ñамом деле, еÑли можно полÑÑиÑÑ ÐºÐ¾ÑÑекÑнÑе ÑезÑлÑÑаÑÑ, напÑимеÑ, из кÑÑÑоÑа, маÑеÑиализовавÑего ÑезÑлÑÑиÑÑÑÑий набоÑ, оÑибка не бÑÐ´ÐµÑ Ð²Ñдана, даже еÑли нижележаÑие ÑÑÑоки в Ñелевой ÑаблиÑе бÑли ликвидиÑÐ¾Ð²Ð°Ð½Ñ Ð¿Ñи оÑиÑÑке. ÐекоÑоÑÑе ÑаблиÑÑ, напÑÐ¸Ð¼ÐµÑ ÑиÑÑемнÑе каÑалоги, не могÑÑ Ð±ÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñно оÑиÑÐµÐ½Ñ Ð² ÑжаÑÑе ÑÑоки, Ñак ÑÑо на Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ ÑаÑпÑоÑÑÑанÑеÑÑÑ. ÐÐ»Ñ ÑÐ°ÐºÐ¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ ÑокÑаÑÐ°ÐµÑ ÑаздÑвание, но и не ÑÑÐµÐ²Ð°Ñ Ð¾Ñибкой «Ñнимок ÑлиÑком ÑÑаÑ» пÑи ÑканиÑовании.