18.4. ÐоÑÑебление ÑеÑÑÑÑов
18.4.1. ÐамÑÑÑ
ÐадаÑÑ Ð¾Ð±ÑÑм памÑÑи, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ Ð´Ð»Ñ Ð±ÑÑеÑов в ÑазделÑемой памÑÑи. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо обÑÑно 128 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (
128MB), но Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ менÑÑе, еÑли конÑигÑÑаÑÐ¸Ñ Ð²Ð°Ñего ÑдÑа накладÑÐ²Ð°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе огÑаниÑÐµÐ½Ð¸Ñ (ÑÑо опÑеделÑеÑÑÑ Ð² пÑоÑеÑÑе initdb). ÐÑо знаÑение не должно бÑÑÑ Ð¼ÐµÐ½ÑÑе 128 килобайÑ. (ÐÑÐ¾Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ñм завиÑÐ¸Ñ Ð¾Ñ Ð²ÐµÐ»Ð¸ÑинÑBLCKSZ.) Ðднако Ð´Ð»Ñ Ñ Ð¾ÑоÑей пÑоизводиÑелÑноÑÑи обÑÑно ÑÑебÑÑÑÑÑ Ð³Ð¾Ñаздо болÑÑие знаÑениÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе вÑделеннÑй ÑеÑÐ²ÐµÑ Ñ Ð¾Ð±ÑÑмом ÐÐУ 1 ÐРи более, ÑазÑмнÑм наÑалÑнÑм знаÑением
shared_buffersбÑÐ´ÐµÑ 25% Ð¾Ñ Ð¾Ð±ÑÑма памÑÑи. СÑÑеÑÑвÑÑÑ Ð²Ð°ÑианÑÑ Ð½Ð°Ð³ÑÑзки, пÑи коÑоÑÑÑ ÑÑÑекÑÐ¸Ð²Ð½Ñ Ð±ÑдÑÑ Ð¸ еÑÑ Ð±Ð¾Ð»ÑÑие знаÑениÑshared_buffers, но Ñак как Postgres Pro иÑполÑзÑÐµÑ Ð¸ ÐºÐµÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ, вÑделÑÑÑ Ð´Ð»Ñshared_buffersболее 40% ÐÐУ вÑÑд ли бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾. ÐÑи ÑвелиÑенииshared_buffersобÑÑно ÑÑебÑеÑÑÑ ÑооÑвеÑÑÑвенно ÑвелиÑиÑÑmax_wal_size, ÑÑÐ¾Ð±Ñ ÑаÑÑÑнÑÑÑ Ð¿ÑоÑеÑÑ Ð·Ð°Ð¿Ð¸Ñи болÑÑого обÑÑма новÑÑ Ð¸Ð»Ð¸ изменÑннÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° более пÑодолжиÑелÑное вÑемÑ.Ð ÑеÑвеÑÐ°Ñ Ñ Ð¾Ð±ÑÑмом ÐÐУ менÑÑе 1ÐÐ ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð¼ÐµÐ½ÑÑий пÑоÑÐµÐ½Ñ ÐÐУ, ÑÑÐ¾Ð±Ñ Ð¾ÑÑавиÑÑ Ð´Ð¾ÑÑаÑоÑно памÑÑи Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ. ÐÑоме Ñого, болÑÑие знаÑениÑ
shared_buffersне Ñак ÑÑÑекÑÐ¸Ð²Ð½Ñ Ð² Windows. Ðозможно, Ð²Ñ Ð¿Ð¾Ð»ÑÑиÑе лÑÑÑие ÑезÑлÑÑаÑÑ, еÑли оÑÑавиÑе ÑÑо знаÑение оÑноÑиÑелÑно неболÑÑим и бÑдеÑе болÑÑе полагаÑÑÑÑ Ð½Ð° ÐºÐµÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ. ÐпÑималÑнÑе знаÑениÑshared_buffersÐ´Ð»Ñ Windows обÑÑно Ð»ÐµÐ¶Ð°Ñ Ð² инÑеÑвале Ð¾Ñ 64 до 512 мегабайÑ.huge_pages(enum)ÐклÑÑаеÑ/оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование огÑомнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð¿Ð°Ð¼ÑÑи. ÐопÑÑÑимÑе знаÑениÑ:
try(попÑÑаÑÑÑÑ, по ÑмолÑаниÑ),on(вкл.) иoff(вÑкл.).РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо поддеÑживаеÑÑÑ ÑолÑко в Linux. РдÑÑÐ³Ð¸Ñ ÑиÑÑÐµÐ¼Ð°Ñ Ð·Ð½Ð°Ñение
tryпÑоÑÑо игноÑиÑÑеÑÑÑ.Ð ÑезÑлÑÑаÑе иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð³ÑомнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ ÑменÑÑаÑÑÑÑ ÑаблиÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð¸ ÑокÑаÑаеÑÑÑ Ð²ÑемÑ, коÑоÑое ÑÑаÑÐ¸Ñ Ð¿ÑоÑеÑÑÐ¾Ñ Ð½Ð° ÑпÑавление памÑÑÑÑ. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 17.4.5.
Ðогда
huge_pagesÐ¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеtry, ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð¿ÑÑаеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¾Ð³ÑомнÑе ÑÑÑаниÑÑ, но Ð¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑеклÑÑиÑÑÑÑ Ð½Ð° обÑÑнÑе, еÑли ÑÑо не ÑдаÑÑÑÑ. Со знаÑениемon, еÑли иÑполÑзоваÑÑ Ð¾Ð³ÑомнÑе ÑÑÑаниÑÑ Ð½Ðµ полÑÑиÑÑÑ, ÑеÑÐ²ÐµÑ Ð½Ðµ бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑен. Со знаÑениемoffогÑомнÑе ÑÑÑаниÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð½Ðµ бÑдÑÑ.temp_buffers(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло вÑеменнÑÑ Ð±ÑÑеÑов Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑеанÑа, Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð±ÑÑм вÑеменнÑÑ Ð±ÑÑеÑов ÑоÑÑавлÑÐµÑ Ð²Ð¾ÑÐµÐ¼Ñ Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (1024 бÑÑеÑа). ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ измениÑÑ Ð² оÑделÑном ÑеанÑе, но ÑолÑко до пеÑвого обÑаÑÐµÐ½Ð¸Ñ Ðº вÑеменнÑм ÑаблиÑам; поÑле ÑÑого измениÑÑ ÐµÐ³Ð¾ знаÑение Ð´Ð»Ñ ÑекÑÑего ÑеанÑа не ÑдаÑÑÑÑ.
Ð¡ÐµÐ°Ð½Ñ Ð²ÑделÑÐµÑ Ð²ÑеменнÑе бÑÑеÑÑ Ð¿Ð¾ меÑе Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи до доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñедела, заданного паÑамеÑÑом
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Ñ Ð¿Ñименением Ñ ÐµÑа.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, вÑполнÑемой в дÑÑÐ³Ð¸Ñ ÐºÐ¾Ð½ÑекÑÑÐ°Ñ .max_stack_depth(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑÑ Ð³Ð»ÑÐ±Ð¸Ð½Ñ ÑÑека Ð´Ð»Ñ Ð¸ÑполниÑелÑ. Ридеале ÑÑо знаÑение должно ÑавнÑÑÑÑÑ Ð¿ÑеделÑÐ½Ð¾Ð¼Ñ ÑазмеÑÑ ÑÑека, огÑаниÑÐµÐ½Ð½Ð¾Ð¼Ñ ÑдÑом (коÑоÑÑй ÑÑÑанавливаеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹
ulimit -sили аналогиÑной), за вÑÑеÑом запаÑа пÑимеÑно в мегабайÑ. ÐÑÐ¾Ñ Ð·Ð°Ð¿Ð°Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼, поÑÐ¾Ð¼Ñ ÑÑо ÑеÑÐ²ÐµÑ Ð¿ÑовеÑÑÐµÑ Ð³Ð»ÑÐ±Ð¸Ð½Ñ ÑÑека не в каждой пÑоÑедÑÑе, а ÑолÑко в поÑенÑиалÑно ÑекÑÑÑивнÑÑ Ð¿ÑоÑедÑÑÐ°Ñ , напÑимеÑ, пÑи вÑÑиÑлении вÑÑажений. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â два мегабайÑа (2MB) â вÑбÑано Ñ Ð±Ð¾Ð»ÑÑим запаÑом, Ñак ÑÑо ÑиÑк пеÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑека минимален. Ðо Ñ Ð´ÑÑгой ÑÑоÑонÑ, его Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾ÑÑаÑоÑно Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑложнÑÑ ÑÑнкÑий. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.ÐÑли
max_stack_depthбÑÐ´ÐµÑ Ð¿ÑевÑÑаÑÑ ÑакÑиÑеÑкий пÑедел ÑдÑа, Ñо ÑÑнкÑÐ¸Ñ Ñ Ð½ÐµÐ¾Ð³ÑаниÑенной ÑекÑÑÑией ÑÐ¼Ð¾Ð¶ÐµÑ Ð²ÑзваÑÑ ÐºÑÐ°Ñ Ð¾ÑделÑного пÑоÑеÑÑа ÑеÑвеÑа. Ð ÑиÑÑÐµÐ¼Ð°Ñ , где Postgres Pro Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÑеделиÑÑ Ð¿Ñедел, ÑÑÑановленнÑй ÑдÑом, он не Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ ÑÑÑановиÑÑ Ð´Ð»Ñ ÑÑого паÑамеÑÑа небезопаÑное знаÑение. Ðднако ÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð²ÑдаÑÑ Ð½Ðµ вÑе ÑиÑÑемÑ, поÑÑÐ¾Ð¼Ñ Ð²ÑбиÑаÑÑ ÑÑо знаÑение ÑледÑÐµÑ Ñ Ð¾ÑÑоÑожноÑÑÑÑ.ÐÑбиÑÐ°ÐµÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ динамиÑеÑкой ÑазделÑемой памÑÑи, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÑеÑвеÑом. ÐопÑÑÑимÑе ваÑианÑÑ:
posix(Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑазделÑемой памÑÑи POSIX ÑÑнкÑиейshm_open),sysv(Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑазделÑемой памÑÑи System V ÑÑнкÑиейshmget),windows(Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑазделÑемой памÑÑи в Windows),mmap(Ð´Ð»Ñ ÑмÑлÑÑии ÑазделÑемой памÑÑи ÑеÑез оÑобÑажение в памÑÑÑ Ñайлов, Ñ ÑанÑÑÐ¸Ñ ÑÑ Ð² каÑалоге даннÑÑ ) иnone(Ð´Ð»Ñ Ð¾ÑклÑÑÐµÐ½Ð¸Ñ ÑÑой ÑÑнкÑионалÑноÑÑи). Ðе вÑе ваÑианÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð½Ð° ÑазнÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ ; пеÑвÑй из поддеÑживаемÑÑ Ð´Ð°Ð½Ð½Ð¾Ð¹ плаÑÑоÑмой ваÑианÑов ÑÑановиÑÑÑ Ð´Ð»Ñ Ð½ÐµÑ Ð²Ð°ÑианÑом по ÑмолÑаниÑ. ÐÑименÑÑÑ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(integer)ÐÑодолжиÑелÑноÑÑÑ Ð²Ñемени, в миллиÑекÑÐ½Ð´Ð°Ñ , в ÑеÑение коÑоÑого бÑÐ´ÐµÑ Ð¿ÑоÑÑаиваÑÑ Ð¿ÑоÑеÑÑ, пÑевÑÑивÑий пÑедел ÑÑоимоÑÑи. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÐµÐ³Ð¾ знаÑение Ñавно нÑлÑ, Ñо еÑÑÑ Ð·Ð°Ð´ÐµÑжка оÑиÑÑки оÑÑÑÑÑÑвÑеÑ. ÐÑи положиÑелÑнÑÑ Ð·Ð½Ð°ÑениÑÑ Ð¸Ð½ÑенÑивноÑÑÑ Ð¾ÑиÑÑки бÑÐ´ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ ÑÑоимоÑÑи. ÐамеÑÑÑе, ÑÑо во Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑиÑÑÐµÐ¼Ð°Ñ ÑазÑеÑение ÑаймеÑа ÑоÑÑавлÑÐµÑ 10 мÑ, поÑÑÐ¾Ð¼Ñ ÐµÑли задаÑÑ Ð²
vacuum_cost_delayзнаÑение, не кÑаÑное 10, ÑакÑиÑеÑки бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен ÑÐ¾Ñ Ð¶Ðµ ÑезÑлÑÑаÑ, ÑÑо и Ñо ÑледÑÑÑим за ним кÑаÑнÑм 10.ÐÑи наÑÑÑойке инÑенÑивноÑÑи оÑиÑÑки длÑ
vacuum_cost_delayобÑÑно вÑбиÑаÑÑÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно неболÑÑие знаÑениÑ, напÑÐ¸Ð¼ÐµÑ 10 или 20 миллиÑекÑнд. ЧÑÐ¾Ð±Ñ ÑоÑнее огÑаниÑиÑÑ Ð¿Ð¾ÑÑебление ÑеÑÑÑÑов пÑи оÑиÑÑке, лÑÑÑе вÑего изменÑÑÑ Ð´ÑÑгие паÑамеÑÑÑ ÑÑоимоÑÑи оÑиÑÑки.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_lru_maxpages и bgwriter_lru_multiplier ÑменÑÑаеÑÑÑ Ð°ÐºÑивноÑÑÑ Ð²Ð²Ð¾Ð´Ð°/вÑвода Ñо ÑÑоÑÐ¾Ð½Ñ Ð¿ÑоÑеÑÑа Ñоновой запиÑи, но ÑвелиÑиваеÑÑÑ Ð²ÐµÑоÑÑноÑÑÑ Ñого, ÑÑо запиÑÑ Ð¿ÑидÑÑÑÑ Ð¿ÑоизводиÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно ÑеÑвеÑнÑм пÑоÑеÑÑам, ÑÑо Ð·Ð°Ð¼ÐµÐ´Ð»Ð¸Ñ Ð²Ñполнение запÑоÑов.
18.4.6. ÐÑÐ¸Ð½Ñ Ñонное поведение
effective_io_concurrency(integer)ÐадаÑÑ Ð´Ð¾Ð¿ÑÑÑимое ÑиÑло паÑаллелÑнÑÑ Ð¾Ð¿ÐµÑаÑий ввода/вÑвода, коÑоÑое говоÑÐ¸Ñ Postgres Pro о Ñом, ÑколÑко опеÑаÑий ввода/вÑвода могÑÑ Ð±ÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ñ Ð¾Ð´Ð½Ð¾Ð²Ñеменно. Чем болÑÑе ÑÑо ÑиÑло, Ñем болÑÑе опеÑаÑий ввода/вÑвода бÑÐ´ÐµÑ Ð¿ÑÑаÑÑÑÑ Ð²ÑполниÑÑ Ð¿Ð°ÑаллелÑно Postgres Pro в оÑделÑном ÑеанÑе. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð»ÐµÐ¶Ð°Ñ Ð² инÑеÑвале Ð¾Ñ 1 до 1000, а нÑлевое знаÑение оÑклÑÑÐ°ÐµÑ Ð°ÑÐ¸Ð½Ñ ÑоннÑе запÑоÑÑ Ð²Ð²Ð¾Ð´Ð°/вÑвода. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²Ð»Ð¸ÑÐµÑ ÑолÑко на ÑканиÑование по биÑовой каÑÑе.
ХоÑоÑим наÑалÑнÑм знаÑением ÑÑого паÑамеÑÑа бÑÐ´ÐµÑ ÑиÑло оÑделÑнÑÑ Ð´Ð¸Ñков, ÑоÑÑавлÑÑÑÐ¸Ñ Ð¼Ð°ÑÑив RAID 0 или RAID 1, еÑли база даннÑÑ ÑазмеÑена в нÑм. (ÐÐ»Ñ RAID 5 ÑледÑÐµÑ Ð¸ÑклÑÑиÑÑ Ð¾Ð´Ð¸Ð½ диÑк (как диÑк Ñ ÑÑÑноÑÑÑÑ).) Ðднако, еÑли база даннÑÑ ÑаÑÑо обÑабаÑÑÐ²Ð°ÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво запÑоÑов в ÑазлиÑнÑÑ ÑеанÑÐ°Ñ , и пÑи неболÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ Ð´Ð¸ÑковÑй маÑÑив Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð·Ð°Ð³ÑÑжен. ÐÑли пÑодолжаÑÑ ÑвелиÑиваÑÑ ÑÑо знаÑение пÑи полной загÑÑзке диÑков, ÑÑо пÑиведÑÑ ÑолÑко к ÑвелиÑÐµÐ½Ð¸Ñ Ð½Ð°Ð³ÑÑзки на пÑоÑеÑÑоÑ.
ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ ÑкзоÑиÑеÑÐºÐ¸Ñ ÑиÑÑем, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº Ñ ÑанилиÑе в памÑÑи или внеÑний RAID-маÑÑив, где огÑаниÑение накладÑÐ²Ð°ÐµÑ Ð¿ÑопÑÑÐºÐ½Ð°Ñ ÑпоÑобноÑÑÑ ÑинÑ, опÑималÑнÑм знаÑением Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑиÑло доÑÑÑпнÑÑ ÐºÐ°Ð½Ð°Ð»Ð¾Ð² ввода/вÑвода. ÐÐ»Ñ Ð²ÑбоÑа лÑÑÑего знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑкÑпеÑименÑÑ.
ÐÑÐ¸Ð½Ñ ÑоннÑй ввод/вÑвод завиÑÐ¸Ñ Ð¾Ñ ÑÑÑекÑивноÑÑи ÑÑнкÑии
posix_fadvise, коÑоÑÐ°Ñ Ð¾ÑÑÑÑÑÑвÑÐµÑ Ð² некоÑоÑÑÑ Ð¾Ð¿ÐµÑаÑионнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ . Ð ÑлÑÑае ÐµÑ Ð¾ÑÑÑÑÑÑÐ²Ð¸Ñ Ð¿Ð¾Ð¿ÑÑка задаÑÑ Ð´Ð»Ñ ÑÑого паÑамеÑÑа лÑбое ненÑлевое знаÑение пÑиведÑÑ Ðº оÑибке. РнекоÑоÑÑÑ ÑиÑÑÐµÐ¼Ð°Ñ (напÑимеÑ, в Solaris), ÑÑа ÑÑнкÑÐ¸Ñ Ð¿ÑиÑÑÑÑÑвÑеÑ, но на Ñамом деле ниÑего не делаеÑ.Ðо ÑмолÑÐ°Ð½Ð¸Ñ 1, еÑли ÑиÑÑема ÑÑо поддеÑживаеÑ, а инаÑе â 0.
max_worker_processes(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑоновÑÑ Ð¿ÑоÑеÑÑов, коÑоÑое можно запÑÑÑиÑÑ Ð² ÑекÑÑей опеÑаÑионной ÑиÑÑеме. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
ÐÐ»Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð³Ð¾ ÑеÑвеÑа знаÑение ÑÑого паÑамеÑÑа должно бÑÑÑ Ð±Ð¾Ð»ÑÑе или Ñавно знаÑÐµÐ½Ð¸Ñ Ð½Ð° ведÑÑем. РпÑоÑивном ÑлÑÑае на ведомом ÑеÑвеÑе не бÑдÑÑ ÑазÑеÑÐµÐ½Ñ Ð·Ð°Ð¿ÑоÑÑ.