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болÑÑие ÑÑÑаниÑÑ Ð½Ðµ бÑдÑÑ Ð·Ð°Ð¿ÑаÑиваÑÑÑÑ. ФакÑиÑеÑкое ÑоÑÑоÑние огÑомнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑÑÑ ÑеÑвеÑной пеÑеменной huge_pages_status.РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо поддеÑживаеÑÑÑ Ð² 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).huge_page_size(integer) #ÐадаÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ð³ÑомнÑÑ ÑÑÑаниÑ, еÑли Ð¸Ñ Ð¸ÑполÑзование вклÑÑено паÑамеÑÑом huge_pages. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â Ð½Ð¾Ð»Ñ (
0). ÐÑи Ñаком знаÑении бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ð³ÑомнÑÑ ÑÑÑаниÑ, заданнÑй в ÑиÑÑеме по ÑмолÑаниÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑÑановиÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.Ðа ÑовÑеменнÑÑ 64-биÑнÑÑ ÑеÑвеÑнÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ Ð´Ð¾ÑÑÑпнÑ, в ÑаÑÑноÑÑи, ÑледÑÑÑие ÑазмеÑÑ ÑÑÑаниÑ:
2MBи1GB(Intel и AMD),16MBи16GB(IBM POWER), и64kB,2MB,32MBи1GB(ARM). ÐодÑобнее иÑполÑзование и админиÑÑÑиÑование огÑомнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð¾ÑвеÑаеÑÑÑ Ð² ÐодÑазделе 17.4.5.ÐÑлиÑнÑе Ð¾Ñ Ð½ÑÐ»Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ ÑолÑко в Linux.
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. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 2.0, Ñо еÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑий Ñ Ñ ÐµÑиÑованием Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¾Ð±ÑÑм, вдвое пÑевÑÑаÑÑий базовое знаÑениеwork_mem.ÐнаÑение
hash_mem_multiplierÐ¸Ð¼ÐµÐµÑ ÑмÑÑл ÑвелиÑиÑÑ, когда поÑÑоÑнно наблÑдаеÑÑÑ Ð²ÑÑеÑнение даннÑÑ Ð½Ð° диÑк пÑи вÑполнении запÑоÑов, а пÑÑмолинейное ÑвелиÑениеwork_memпÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº деÑиÑиÑÑ Ð¿Ð°Ð¼ÑÑи (обÑÑно пÑоÑвлÑÑÑемÑÑÑ Ð² оÑÐ¸Ð±ÐºÐ°Ñ Â«Ð½ÐµÑ Ð²Ð°Ñка памÑÑи»). Ð ÑÑÐ¸Ñ ÑлÑÑаÑÑ Ð´ÐµÐ¹ÑÑвÑÑÑее по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñение 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.
autovacuum_work_mem(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй обÑÑм памÑÑи, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ ÐºÐ°Ð¶Ð´Ñй ÑабоÑий пÑоÑеÑÑ Ð°Ð²ÑооÑиÑÑки. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐÑи дейÑÑвÑÑÑем по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñении
-1ÑÑÐ¾Ñ Ð¾Ð±ÑÑм опÑеделÑеÑÑÑ Ð·Ð½Ð°Ñением maintenance_work_mem. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ влиÑÐµÑ Ð½Ð° поведение командÑVACUUM, вÑполнÑемой в дÑÑÐ³Ð¸Ñ ÐºÐ¾Ð½ÑекÑÑÐ°Ñ . ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.vacuum_buffer_usage_limit(integer) #УказÑÐ²Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÑÑÑаÑегии доÑÑÑпа к бÑÑеÑам, иÑполÑзÑемой командами
VACUUMиANALYZE. ÐнаÑение0Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð¾Ð¿ÐµÑаÑии иÑполÑзоваÑÑ Ð»Ñбое колиÑеÑÑвоshared_buffers. РпÑоÑивном ÑлÑÑае допÑÑÑимÑе ÑазмеÑÑ Ð²Ð°ÑÑиÑÑÑÑÑÑ Ð¾Ñ128 kBдо16 GB. ÐÑли ÑказаннÑй ÑÐ°Ð·Ð¼ÐµÑ Ð¿ÑевÑÑÐ°ÐµÑ 1/8 ÑазмеÑаshared_buffers, он авÑомаÑиÑеÑки огÑаниÑиваеÑÑÑ ÑÑим знаÑением. ÐнаÑение по ÑмолÑаниÑ:2 MB. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð² лÑбой моменÑ. Ðго Ñакже можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ VACUUM и ANALYZE пÑи пеÑедаÑе паÑамеÑÑаBUFFER_USAGE_LIMIT. С болÑÑим знаÑением паÑамеÑÑа командÑVACUUMиANALYZEмогÑÑ Ð²ÑполнÑÑÑÑÑ Ð±ÑÑÑÑее, но пÑи ÑлиÑком болÑÑом знаÑении многие полезнÑе ÑÑÑаниÑÑ Ð¼Ð¾Ð³ÑÑ Ð²ÑÑеÑнÑÑÑÑÑ Ð¸Ð· обÑÐ¸Ñ Ð±ÑÑеÑов.logical_decoding_work_mem(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй обÑÑм памÑÑи, иÑполÑзÑемой Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого декодиÑованиÑ, поÑле пÑевÑÑÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑого некоÑоÑÑе декодиÑованнÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð²ÑмеÑаÑÑÑÑ Ð½Ð° локалÑнÑй диÑк. Тем ÑамÑм огÑаниÑиваеÑÑÑ Ð¾Ð±ÑÑм памÑÑи, иÑполÑзÑемой подклÑÑениÑми поÑоковой логиÑеÑкой ÑепликаÑии. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÐµÐ³Ð¾ знаÑение â 64 мегабайÑа (
64MB). Так как каждое подклÑÑение ÑепликаÑии иÑполÑзÑÐµÑ Ð¾Ð´Ð¸Ð½ бÑÑÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑазмеÑа, а колиÑеÑÑво ÑÐ°ÐºÐ¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑений к Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑеÑвеÑÑ Ð¾Ð±ÑÑно невелико (оно огÑаниÑиваеÑÑÑ Ð·Ð½Ð°Ñениемmax_wal_senders), знаÑение данного паÑамеÑÑа вполне можно ÑделаÑÑ Ð´Ð¾ÑÑаÑоÑно болÑÑим, намного пÑевÑÑаÑÑимwork_mem, ÑÑÐ¾Ð±Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð¸Ð·Ð¸ÑоваÑÑ Ð¾Ð±ÑÑм вÑмеÑаемÑÑ Ð½Ð° диÑк декодиÑÑемÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹.commit_timestamp_buffers(integer) #ÐадаÑÑ Ð¾Ð±ÑÑм памÑÑи, иÑполÑзÑемÑй Ð´Ð»Ñ ÐºÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑодеÑжимого
pg_commit_ts(Ñм. ТаблиÑÑ 64.1). ÐÑли знаÑение Ñказано без ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â0, коÑоÑое ознаÑаеÑ, ÑÑо бÑÐ´ÐµÑ Ð¸ÑполÑзованоshared_buffers/512 блоков, но не более 1024 и не менее 16 блоков. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.multixact_member_buffers(integer) #ÐадаÑÑ Ð¾Ð±ÑÑм обÑей памÑÑи, иÑполÑзÑемÑй Ð´Ð»Ñ ÐºÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑодеÑжимого
pg_multixact/members(Ñм. ТаблиÑÑ 64.1). ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â32. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.multixact_offset_buffers(integer) #ÐадаÑÑ Ð¾Ð±ÑÑм обÑей памÑÑи, иÑполÑзÑемÑй Ð´Ð»Ñ ÐºÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑодеÑжимого
pg_multixact/offsets(Ñм. ТаблиÑÑ 64.1). ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â16. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.notify_buffers(integer) #ÐадаÑÑ Ð¾Ð±ÑÑм обÑей памÑÑи, иÑполÑзÑемÑй Ð´Ð»Ñ ÐºÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑодеÑжимого
pg_notify(Ñм. ТаблиÑÑ 64.1). ÐÑли знаÑение Ñказано без ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â16. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.serializable_buffers(integer) #ÐадаÑÑ Ð¾Ð±ÑÑм обÑей памÑÑи, иÑполÑзÑемÑй Ð´Ð»Ñ ÐºÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑодеÑжимого
pg_serial(Ñм. ТаблиÑÑ 64.1). ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â32. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.subtransaction_buffers(integer) #ÐадаÑÑ Ð¾Ð±ÑÑм памÑÑи, иÑполÑзÑемÑй Ð´Ð»Ñ ÐºÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑодеÑжимого
pg_subtrans(Ñм. ТаблиÑÑ 64.1). ÐÑли знаÑение Ñказано без ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â0, коÑоÑое ознаÑаеÑ, ÑÑо бÑÐ´ÐµÑ Ð¸ÑполÑзованоshared_buffers/512 блоков, но не более 1024 и не менее 16 блоков. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.transaction_buffers(integer) #ÐадаÑÑ Ð¾Ð±ÑÑм памÑÑи, иÑполÑзÑемÑй Ð´Ð»Ñ ÐºÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑодеÑжимого
pg_xact(Ñм. ТаблиÑÑ 64.1). ÐÑли знаÑение Ñказано без ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â0, коÑоÑое ознаÑаеÑ, ÑÑо бÑÐ´ÐµÑ Ð¸ÑполÑзованоshared_buffers/512 блоков, но не более 1024 и не менее 16 блоков. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.max_stack_depth(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑÑ Ð³Ð»ÑÐ±Ð¸Ð½Ñ ÑÑека Ð´Ð»Ñ Ð¸ÑполниÑелÑ. Ридеале ÑÑо знаÑение должно ÑавнÑÑÑÑÑ Ð¿ÑеделÑÐ½Ð¾Ð¼Ñ ÑазмеÑÑ ÑÑека, огÑаниÑÐµÐ½Ð½Ð¾Ð¼Ñ ÑдÑом (коÑоÑÑй ÑÑÑанавливаеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹
ulimit -sили аналогиÑной), за вÑÑеÑом запаÑа пÑимеÑно в мегабайÑ. ÐÑÐ¾Ñ Ð·Ð°Ð¿Ð°Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼, поÑÐ¾Ð¼Ñ ÑÑо ÑеÑÐ²ÐµÑ Ð¿ÑовеÑÑÐµÑ Ð³Ð»ÑÐ±Ð¸Ð½Ñ ÑÑека не в каждой пÑоÑедÑÑе, а ÑолÑко в поÑенÑиалÑно ÑекÑÑÑивнÑÑ Ð¿ÑоÑедÑÑÐ°Ñ , напÑимеÑ, пÑи вÑÑиÑлении вÑÑажений. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â два мегабайÑа (2MB) â вÑбÑано Ñ Ð±Ð¾Ð»ÑÑим запаÑом, Ñак ÑÑо ÑиÑк пеÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑека минимален. Ðо Ñ Ð´ÑÑгой ÑÑоÑонÑ, его Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾ÑÑаÑоÑно Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑложнÑÑ ÑÑнкÑий. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавомSET.ÐÑли
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-диÑке или когда дÑÑгие Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ñ ÑазделÑемой памÑÑи недоÑÑÑпнÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.min_dynamic_shared_memory(integer) #ÐадаÑÑ Ð¾Ð±ÑÑм памÑÑи, коÑоÑÑй должен бÑÑÑ Ð²Ñделен пÑи запÑÑке ÑеÑвеÑа Ð´Ð»Ñ Ð¿Ð°ÑаллелÑнÑÑ Ð·Ð°Ð¿ÑоÑов. ÐÑли вÑделен недоÑÑаÑоÑнÑй обÑÑм памÑÑи или она Ñже занÑÑа одновÑеменно вÑполнÑÑÑимиÑÑ Ð·Ð°Ð¿ÑоÑами, новÑе паÑаллелÑнÑе запÑоÑÑ Ð²Ñеменно запÑаÑиваÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑÑ ÑазделÑемÑÑ Ð¿Ð°Ð¼ÑÑÑ Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ ÑоглаÑно знаÑениÑ
dynamic_shared_memory_type(ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑиводиÑÑ Ðº Ð·Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð¸Ñ Ð²ÑледÑÑвие накладнÑÑ ÑаÑÑ Ð¾Ð´Ð¾Ð² на ÑпÑавление памÑÑÑÑ). Ðа вÑделение памÑÑи в ÑооÑвеÑÑÑвии Ñ Ñказаниемmin_dynamic_shared_memoryвлиÑÐµÑ Ð¿Ð°ÑамеÑÑhuge_pagesв ÑÐµÑ Ð¾Ð¿ÐµÑаÑионнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ , где он поддеÑживаеÑÑÑ; в ÑиÑÑеме, поддеÑживаÑÑей авÑомаÑиÑеÑкое ÑпÑавление болÑÑими ÑÑÑаниÑами, Ð¸Ñ Ð¸ÑполÑзование веÑоÑÑнее вÑего даÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑй ÑÑÑекÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â0(памÑÑÑ Ð½Ðµ вÑделÑеÑÑÑ). ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑÑановиÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
18.4.2. ÐиÑк #
temp_file_limit(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй обÑÑм диÑкового пÑоÑÑÑанÑÑва, коÑоÑÑй ÑÐ¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ Ð¾Ð´Ð¸Ð½ пÑоÑеÑÑ Ð´Ð»Ñ Ð²ÑеменнÑÑ Ñайлов, напÑимеÑ, пÑи ÑоÑÑиÑовке и Ñ ÐµÑиÑовании, или Ð´Ð»Ñ ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑдеÑживаемого кÑÑÑоÑа. ТÑанзакÑиÑ, коÑоÑÐ°Ñ Ð¿Ð¾Ð¿ÑÑаеÑÑÑ Ð¿ÑевÑÑиÑÑ ÑÑÐ¾Ñ Ð¿Ñедел, бÑÐ´ÐµÑ Ð¾Ñменена. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐнаÑение
-1(по ÑмолÑаниÑ) ознаÑаеÑ, ÑÑо пÑедел оÑÑÑÑÑÑвÑеÑ. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавомSET.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð³ÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±Ñий обÑÑм, коÑоÑÑй могÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени вÑе вÑеменнÑе ÑайлÑ, задейÑÑвованнÑе в данном пÑоÑеÑÑе Postgres Pro. СледÑÐµÑ Ð¾ÑмеÑиÑÑ, ÑÑо ÑÑо не каÑаеÑÑÑ Ñайлов Ñвно ÑоздаваемÑÑ Ð²ÑеменнÑÑ ÑаблиÑ; огÑаниÑиваеÑÑÑ ÑолÑко обÑÑм вÑеменнÑÑ Ñайлов, коÑоÑÑе ÑоздаÑÑÑÑ Ð½ÐµÑвно пÑи вÑполнении запÑоÑов.
file_copy_method(enum) #ÐадаÑÑ Ð¼ÐµÑод копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов. ÐозможнÑе знаÑениÑ:
COPY(по ÑмолÑаниÑ) иCLONE(еÑли поддеÑживаеÑÑÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемой).ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²Ð»Ð¸ÑÐµÑ Ð½Ð° ÑледÑÑÑие командÑ:
CREATE DATABASE ... STRATEGY=FILE_COPYALTER DATABASE ... SET TABLESPACE ...
ÐÑли ÑÑÑановлено знаÑение
CLONE, иÑполÑзÑÑÑÑÑ ÑиÑÑемнÑе вÑзовÑcopy_file_range()(Linux, FreeBSD) илиcopyfile(macOS), благодаÑÑ ÐºÐ¾ÑоÑÑм ÑдÑо Ð¼Ð¾Ð¶ÐµÑ ÑовмеÑÑно иÑполÑзоваÑÑ Ð´Ð¸ÑковÑе блоки или пеÑедаваÑÑ Ð¾Ð¿ÐµÑаÑии копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° более низкие Ñлои в некоÑоÑÑÑ ÑайловÑÑ ÑиÑÑÐµÐ¼Ð°Ñ .max_notify_queue_pages(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво вÑделеннÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¾ÑеÑеди NOTIFY / LISTEN. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 1048576. ÐÐ»Ñ ÑÑÑÐ°Ð½Ð¸Ñ ÑазмеÑом 8 ÐРпозволÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð¾ 8 ÐРдиÑкового пÑоÑÑÑанÑÑва. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
18.4.3. ÐÑполÑзование ÑеÑÑÑÑов ÑдÑа #
max_files_per_process(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло Ñайлов, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно оÑкÑÑÑÑ ÐºÐ°Ð¶Ð´Ñм ÑеÑвеÑнÑм подпÑоÑеÑÑом. Ð ÑÑом знаÑении не ÑÑиÑÑваÑÑÑÑ ÑайлÑ, Ñже оÑкÑÑÑÑе в пÑоÑеÑÑе postmaster. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
1000.ÐÑли ÑдÑо ÑеализÑÐµÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñное огÑаниÑение по пÑоÑеÑÑам, об ÑÑом паÑамеÑÑе можно не беÑпокоиÑÑÑÑ. Ðо на некоÑоÑÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ (а именно, в болÑÑинÑÑве ÑиÑÑем BSD) ÑдÑо позволÑÐµÑ Ð¾ÑделÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ð¾ÑкÑÑÑÑ Ð±Ð¾Ð»ÑÑе Ñайлов, Ñем могÑÑ Ð¾ÑкÑÑÑÑ Ð½ÐµÑколÑко пÑоÑеÑÑов одновÑеменно. ÐÑли Ð²Ñ ÑÑолкнÑÑеÑÑ Ñ Ð¾Ñибками «Too many open files» (СлиÑком много оÑкÑÑÑÑÑ Ñайлов), попÑобÑйÑе ÑменÑÑиÑÑ ÑÑо ÑиÑло. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
18.4.4. Ð¤Ð¾Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ #
Ð ÑиÑле ÑпеÑиалÑнÑÑ Ð¿ÑоÑеÑÑов ÑеÑвеÑа еÑÑÑ Ð¿ÑоÑеÑÑ Ñоновой запиÑи, задаÑа коÑоÑого â оÑÑÑеÑÑвлÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Â«Ð³ÑÑзнÑÑ Â» (новÑÑ Ð¸Ð»Ð¸ изменÑннÑÑ ) обÑÐ¸Ñ Ð±ÑÑеÑов на диÑк. Ðогда колиÑеÑÑво ÑиÑÑÑÑ Ð¾Ð±ÑÐ¸Ñ Ð±ÑÑеÑов ÑÑиÑаеÑÑÑ Ð½ÐµÐ´Ð¾ÑÑаÑоÑнÑм, даннÑй пÑоÑеÑÑ Ð·Ð°Ð¿Ð¸ÑÑÐ²Ð°ÐµÑ Ð³ÑÑзнÑе бÑÑеÑÑ Ð² ÑайловÑÑ ÑиÑÑÐµÐ¼Ñ Ð¸ помеÑÐ°ÐµÑ Ð¸Ñ ÐºÐ°Ðº ÑиÑÑÑе. ÐÑо ÑÐ½Ð¸Ð¶Ð°ÐµÑ Ð²ÐµÑоÑÑноÑÑÑ Ñого, ÑÑо ÑеÑвеÑнÑе пÑоÑеÑÑÑ, вÑполнÑÑÑие запÑоÑÑ Ð¿Ð¾Ð»ÑзоваÑелей, не ÑмогÑÑ Ð½Ð°Ð¹Ñи ÑиÑÑÑе бÑÑеÑÑ Ð¸ им пÑидÑÑÑÑ ÑбÑаÑÑваÑÑ Ð³ÑÑзнÑе бÑÑеÑÑ ÑамоÑÑоÑÑелÑно. Ðднако пÑоÑеÑÑ Ñоновой запиÑи ÑвелиÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±ÑÑÑ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð½Ð° подÑиÑÑÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода, Ñак как он Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑ Ð½ÐµÐ¾Ð´Ð½Ð¾ÐºÑаÑно изменÑемÑÑ ÑÑÑаниÑÑ Ð½ÐµÑколÑко Ñаз, Ñогда как ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ бÑло Ð±Ñ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ð²Ñего один Ñаз в конÑÑолÑной ÑоÑке. ÐаÑамеÑÑÑ, ÑаÑÑмаÑÑиваемÑе в данном подÑазделе, позволÑÑÑ Ð½Ð°ÑÑÑоиÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ Ñоновой запиÑи Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑнÑÑ Ð½Ñжд.
bgwriter_delay(integer) #ÐадаÑÑ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¼ÐµÐ¶Ð´Ñ ÑаÑндами акÑивноÑÑи пÑоÑеÑÑа Ñоновой запиÑи. Ðо вÑÐµÐ¼Ñ ÑаÑнда ÑÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð¾ÑÑÑеÑÑвлÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð½ÐµÐºÐ¾ÑоÑого колиÑеÑÑва загÑÑзнÑннÑÑ Ð±ÑÑеÑов (ÑÑо наÑÑÑаиваеÑÑÑ ÑледÑÑÑими паÑамеÑÑами). ÐаÑем он заÑÑÐ¿Ð°ÐµÑ Ð½Ð° вÑемÑ
bgwriter_delay, и вÑÑ Ð¿Ð¾Ð²ÑоÑÑеÑÑÑ Ñнова. Ðднако еÑли в пÑле не оÑÑаÑÑÑÑ Ð·Ð°Ð³ÑÑзнÑннÑÑ Ð±ÑÑеÑов, он Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ°ÐºÑивен более длиÑелÑное вÑемÑ, не завиÑÑÑее оÑ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.5. Ðвод-вÑвод #
backend_flush_after(integer) #Ðогда одним обÑлÑживаÑÑим пÑоÑеÑÑом запиÑÑваеÑÑÑ Ð±Ð¾Ð»ÑÑе заданного обÑÑма даннÑÑ , ÑеÑÐ²ÐµÑ Ð´Ð°ÑÑ Ñказание ÐС пÑоизвеÑÑи запиÑÑ ÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² нижележаÑее Ñ ÑанилиÑе. ÐÑо огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±ÑÑм «гÑÑзнÑÑ Â» даннÑÑ Ð² ÑÑÑаниÑном кеÑе ÑдÑа и ÑменÑÑÐ°ÐµÑ Ð²ÐµÑоÑÑноÑÑÑ Ð·Ð°ÑоÑÐ¼Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ñи вÑполнении
fsyncв конÑе конÑÑолÑной ÑоÑки или когда ÐС ÑбÑаÑÑÐ²Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе на диÑк болÑÑими поÑÑиÑми в Ñоне. ЧаÑÑо ÑÑо знаÑиÑелÑно ÑокÑаÑÐ°ÐµÑ Ð·Ð°Ð´ÐµÑжки ÑÑанзакÑий, но бÑваÑÑ ÑиÑÑаÑии (оÑобенно когда обÑÑм ÑабоÑей нагÑÑзки болÑÑе shared_buffers, но менÑÑе ÑÑÑаниÑного кеÑа ÐС), когда пÑоизводиÑелÑноÑÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑпаÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´ÐµÐ¹ÑÑвÑÐµÑ Ð½Ðµ на вÑÐµÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ . ÐÑли знаÑение паÑамеÑÑа задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). Ðн Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°Ñение оÑ0(пÑи ÑÑом ÑпÑавление оÑложенной запиÑÑÑ Ð¾ÑклÑÑаеÑÑÑ) до 2 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (2MB). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение0, Ñо еÑÑÑ ÑÑо поведение оÑклÑÑено. (ÐÑлиBLCKSZоÑлиÑен Ð¾Ñ 8 ÐÐ, макÑималÑное знаÑение коÑÑекÑиÑÑеÑÑÑ Ð¿ÑопоÑÑионалÑно.)effective_io_concurrency(integer) #ÐадаÑÑ Ð´Ð¾Ð¿ÑÑÑимое ÑиÑло паÑаллелÑнÑÑ Ð¾Ð¿ÐµÑаÑий ввода-вÑвода из Ñ ÑанилиÑа, коÑоÑое говоÑÐ¸Ñ Postgres Pro о Ñом, ÑколÑко опеÑаÑий ввода-вÑвода могÑÑ Ð±ÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ñ Ð¾Ð´Ð½Ð¾Ð²Ñеменно. Чем болÑÑе ÑÑо ÑиÑло, Ñем болÑÑе опеÑаÑий ввода-вÑвода бÑÐ´ÐµÑ Ð¿ÑÑаÑÑÑÑ Ð²ÑполниÑÑ Ð¿Ð°ÑаллелÑно Postgres Pro в оÑделÑном ÑеанÑе. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð»ÐµÐ¶Ð°Ñ Ð² инÑеÑвале оÑ
1до1000, а знаÑение0оÑклÑÑÐ°ÐµÑ Ð°ÑÐ¸Ð½Ñ ÑоннÑе запÑоÑÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â16.ÐÑли задаÑÑ Ð±Ð¾Ð»ÐµÐµ вÑÑокое знаÑение, ÑÑо наиболÑÑим обÑазом ÑкажеÑÑÑ Ð½Ð° Ñ ÑанилиÑÐ°Ñ Ñ Ð²ÑÑокой задеÑжкой, в коÑоÑÑÑ Ð¾Ð¿ÐµÑаÑии ввода-вÑвода в пÑоÑивном ÑлÑÑае ÑÑÑеÑÑвенно заÑоÑмаживаÑÑÑÑ, и на ÑÑÑÑойÑÑÐ²Ð°Ñ Ñ Ð²ÑÑокими показаÑелÑми ввода-вÑвода в ÑекÑндÑ. ÐзлиÑне вÑÑокое знаÑение паÑамеÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к задеÑжке ввода-вÑвода вÑÐµÑ Ð·Ð°Ð¿ÑоÑов ÑиÑÑемÑ.
Ð ÑиÑÑÐµÐ¼Ð°Ñ Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой подÑказок пÑедвÑбоÑки паÑамеÑÑ
effective_io_concurrencyÑакже ÑпÑавлÑÐµÑ ÑаÑÑÑоÑнием пÑедвÑбоÑки.ÐÑо знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð² опÑеделÑнном ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑÑановив одноимÑннÑй паÑамеÑÑ ÑаблиÑного пÑоÑÑÑанÑÑва (Ñм. ALTER TABLESPACE).
maintenance_io_concurrency(integer) #ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð´Ð¾Ð±ÐµÐ½
effective_io_concurrency, но иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑий обÑлÑживаниÑ, коÑоÑÑе вÑполнÑÑÑÑÑ Ð² ÑазлиÑнÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑÐºÐ¸Ñ ÑеанÑÐ°Ñ .ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
16. ÐÑо знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð² опÑеделÑнном ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑÑановив одноимÑннÑй паÑамеÑÑ ÑаблиÑного пÑоÑÑÑанÑÑва (Ñм. ALTER TABLESPACE).io_max_combine_limit(integer) #ÐадаÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑий ÑÐ°Ð·Ð¼ÐµÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода в опеÑаÑиÑÑ , обÑединÑÑÑÐ¸Ñ Ð²Ð²Ð¾Ð´-вÑвод, и без вÑвода пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑÐ¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение задаваемого полÑзоваÑелем паÑамеÑÑа
io_combine_limit. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐакÑималÑное возможное знаÑение завиÑÐ¸Ñ Ð¾Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¸ ÑазмеÑа блока, но обÑÑно ÑоÑÑавлÑÐµÑ 1 ÐРв Unix и 128 ÐРв Windows. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 128 ÐÐ.io_combine_limit(integer) #ÐадаÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑий ÑÐ°Ð·Ð¼ÐµÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода в опеÑаÑиÑÑ , обÑединÑÑÑÐ¸Ñ Ð²Ð²Ð¾Ð´-вÑвод. ÐÑли заданное знаÑение пÑевÑÑÐ°ÐµÑ Ð·Ð½Ð°Ñение паÑамеÑÑа
io_max_combine_limit, без вÑвода пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑполÑзовано более низкое знаÑение. Ðо ÑÑой пÑиÑине Ð´Ð»Ñ ÑвелиÑÐµÐ½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ ÑвелиÑиÑÑ Ð·Ð½Ð°Ñение Ð¾Ð±Ð¾Ð¸Ñ Ð¿Ð°ÑамеÑÑов. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐакÑималÑное возможное знаÑение завиÑÐ¸Ñ Ð¾Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¸ ÑазмеÑа блока, но обÑÑно ÑоÑÑавлÑÐµÑ 1 ÐРв Unix и 128 ÐРв Windows. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 128 ÐÐ.io_max_concurrency(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво опеÑаÑий ввода-вÑвода, коÑоÑÑе один пÑоÑеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно.
ÐÑли ÑÑÑановлено знаÑение по ÑмолÑаниÑ
-1, знаÑение ÑаÑÑÑиÑÑваеÑÑÑ Ð½Ð° оÑнове shared_buffers и макÑималÑного ÑиÑла пÑоÑеÑÑов (max_connections, autovacuum_worker_slots, max_worker_processes и max_wal_senders), но не пÑевÑÑаеÑ64.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
io_method(enum) #ÐадаÑÑ Ð¼ÐµÑод вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð°ÑÐ¸Ð½Ñ Ñонного ввода-вÑвода. ÐозможнÑе знаÑениÑ:
worker(вÑполнÑÑÑ Ð°ÑÐ¸Ð½Ñ ÑоннÑй ввод-вÑвод, иÑполÑзÑÑ ÑабоÑие пÑоÑеÑÑÑ)io_uring(вÑполнÑÑÑ Ð°ÑÐ¸Ð½Ñ ÑоннÑй ввод-вÑвод, иÑполÑзÑÑ io_uring; ÑÑебÑеÑÑÑ ÑбоÑка Ñ--with-liburingили-Dliburing)sync(вÑполнÑÑÑ ÑÐ¸Ð½Ñ Ñонно опеÑаÑии ввода-вÑвода, коÑоÑÑе могÑÑ Ð²ÑполнÑÑÑÑÑ Ð°ÑÐ¸Ð½Ñ Ñонно)
ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
worker.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
io_workers(integer) #ÐадаÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов ввода-вÑвода. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
3. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑабоÑаеÑ, ÑолÑко еÑли Ð´Ð»Ñ io_method задано знаÑение
worker.
18.4.6. РабоÑие пÑоÑеÑÑÑ #
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-деÑева, GIN или BRIN и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, не бÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ, Ñак как паÑаллелÑнÑе ÑабоÑие пÑоÑеÑÑÑ Ð±ÐµÑÑÑÑÑ Ð¸Ð· пÑла ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, огÑаниÑиваемого ÑÑим паÑамеÑÑом.
parallel_leader_participation(boolean) #ÐозволÑÐµÑ Ð²ÐµÐ´ÑÑÐµÐ¼Ñ Ð¿ÑоÑеÑÑÑ Ð²ÑполнÑÑÑ Ð¿Ð»Ð°Ð½ запÑоÑа ниже Ñзлов
GatherиGather Merge, не Ð¾Ð¶Ð¸Ð´Ð°Ñ ÑабоÑие пÑоÑеÑÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн (on). ÐнаÑениеoffÑÐ½Ð¸Ð¶Ð°ÐµÑ Ð²ÐµÑоÑÑноÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов в ÑлÑÑае, еÑли ведÑÑий пÑоÑеÑÑ Ð±ÑÐ´ÐµÑ ÑиÑаÑÑ ÐºÐ¾ÑÑежи недоÑÑаÑоÑно бÑÑÑÑо, но Ñогда ведÑÑÐµÐ¼Ñ Ð¿ÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑÑ Ð´Ð¾Ð¶Ð¸Ð´Ð°ÑÑÑÑ Ð·Ð°Ð¿ÑÑка ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, и ÑолÑко заÑем вÑдаваÑÑ Ð¿ÐµÑвÑе коÑÑежи. СÑÐµÐ¿ÐµÐ½Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑного или оÑÑиÑаÑелÑного влиÑÐ½Ð¸Ñ Ð²ÐµÐ´ÑÑего завиÑÐ¸Ñ Ð¾Ñ Ñипа плана, ÑиÑла ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов и длиÑелÑноÑÑи запÑоÑа.