18.7. ÐланиÑование запÑоÑов
18.7.1. ÐонÑигÑÑаÑÐ¸Ñ Ð¼ÐµÑодов планиÑовÑика
ÐÑи паÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии даÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð³ÑÑбо влиÑÑÑ Ð½Ð° планÑ, вÑбиÑаемÑе опÑимизаÑоÑом запÑоÑов. ÐÑли авÑомаÑиÑеÑки вÑбÑаннÑй опÑимизаÑоÑом план конкÑеÑного запÑоÑа оказалÑÑ Ð½ÐµÐ¾Ð¿ÑималÑнÑм, в каÑеÑÑве вÑеменного ÑеÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ воÑполÑзоваÑÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из ÑÑиÑ
паÑамеÑÑов и вÑнÑдиÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик вÑбÑаÑÑ Ð´ÑÑгой план. УлÑÑÑиÑÑ ÐºÐ°ÑеÑÑво планов, вÑбиÑаемÑÑ
планиÑовÑиком, можно и более подÑ
одÑÑими ÑпоÑобами, в ÑаÑÑноÑÑи, ÑкоÑÑекÑиÑоваÑÑ ÐºÐ¾Ð½ÑÑанÑÑ ÑÑоимоÑÑи (Ñм. ÐодÑаздел 18.7.2), вÑполниÑÑ ANALYZE вÑÑÑнÑÑ, измениÑÑ Ð·Ð½Ð°Ñение паÑамеÑÑа конÑигÑÑаÑии default_statistics_target и ÑвелиÑиÑÑ Ð¾Ð±ÑÑм ÑÑаÑиÑÑики, ÑобиÑаемой Ð´Ð»Ñ Ð¾ÑделÑнÑÑ
ÑÑолбÑов, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER TABLE SET STATISTICS.
enable_bitmapscan(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ биÑовой каÑÑе. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_hashagg(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов агÑегиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_hashjoin(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_indexscan(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ индекÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_indexonlyscan(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко индекÑа (Ñм. Раздел 11.11). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_material(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование маÑеÑиализаÑии пÑи планиÑовании запÑоÑов. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ Ð¼Ð°ÑеÑиализаÑÐ¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð²ÑÑавлÑÑÑ ÑÐ·Ð»Ñ Ð¼Ð°ÑеÑиализаÑии, за иÑклÑÑением ÑлÑÑаев, где они ÑÑебÑÑÑÑÑ Ð´Ð»Ñ Ð¿ÑавилÑноÑÑи. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_mergejoin(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑлиÑнием. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_nestloop(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñми Ñиклами. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñе ÑÐ¸ÐºÐ»Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй меÑод, еÑли можно пÑимениÑÑ Ð´ÑÑгие. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on.enable_seqscan(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком планов поÑледоваÑелÑного ÑканиÑованиÑ. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ Ð¿Ð¾ÑледоваÑелÑное ÑканиÑование невозможно, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй меÑод, еÑли можно пÑимениÑÑ Ð´ÑÑгие. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on.enable_sort(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком Ñагов Ñ Ñвной ÑоÑÑиÑовкой. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ ÑвнÑÑ ÑоÑÑиÑÐ¾Ð²ÐºÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй меÑод, еÑли можно пÑимениÑÑ Ð´ÑÑгие. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on.enable_tidscan(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ TID. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).
18.7.2. ÐонÑÑанÑÑ ÑÑоимоÑÑи Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика
ÐеÑеменнÑе ÑÑоимоÑÑи, опиÑаннÑе в данном Ñазделе, задаÑÑÑÑ Ð¿Ð¾ пÑоизволÑной Ñкале. ÐнаÑение имеÑÑ ÑолÑко иÑ
оÑноÑениÑ, поÑÑÐ¾Ð¼Ñ Ñмножение или деление вÑеÑ
пеÑеменнÑÑ
на один коÑÑÑиÑÐ¸ÐµÐ½Ñ Ð½Ð¸ÐºÐ°Ðº не повлиÑÐµÑ Ð½Ð° вÑÐ±Ð¾Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑи пеÑеменнÑе опÑеделÑÑÑÑÑ Ð¾ÑноÑиÑелÑно ÑÑоимоÑÑи ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑной ÑÑÑаниÑÑ: Ñо еÑÑÑ, пеÑеменнÑÑ seq_page_cost Ñдобно задаÑÑ Ñавной 1.0, а вÑе дÑÑгие пеÑеменнÑе ÑÑоимоÑÑи опÑеделиÑÑ Ð¾ÑноÑиÑелÑно неÑ. Ðо пÑи желании можно иÑполÑзоваÑÑ Ð¸ дÑÑгÑÑ ÑкалÑ, напÑимеÑ, вÑÑазиÑÑ Ð² миллиÑекÑндаÑ
ÑакÑиÑеÑкое вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑоÑов на конкÑеÑной маÑине.
ÐÑимеÑание
Ð ÑожалениÑ, какого-либо ÑÑÑко опÑеделÑнного ÑпоÑоба опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¸Ð´ÐµÐ°Ð»ÑнÑÑ Ð·Ð½Ð°Ñений ÑÑоимоÑÑи не ÑÑÑеÑÑвÑеÑ. ÐÑÑÑе вÑего вÑбиÑаÑÑ Ð¸Ñ ÐºÐ°Ðº ÑÑедние показаÑели пÑи вÑполнении Ñелого ÑÑда ÑазнообÑазнÑÑ Ð·Ð°Ð¿ÑоÑов, коÑоÑÑе бÑÐ´ÐµÑ Ð¾Ð±ÑабаÑÑваÑÑ ÐºÐ¾Ð½ÐºÑеÑÐ½Ð°Ñ Ð¡Ð£ÐÐ. ÐÑо знаÑиÑ, ÑÑо менÑÑÑ Ð¸Ñ Ð¿Ð¾ ÑезÑлÑÑаÑам вÑего неÑколÑÐºÐ¸Ñ ÑкÑпеÑименÑов оÑÐµÐ½Ñ ÑиÑкованно.
seq_page_cost(floating point)ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ ÑÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑÑаниÑÑ Ñ Ð´Ð¸Ñка, коÑоÑое вÑполнÑеÑÑÑ Ð² ÑеÑии поÑледоваÑелÑнÑÑ ÑÑений. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 1.0. ÐÑо знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ индекÑов в опÑеделÑнном ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑÑановив одноимÑннÑй паÑамеÑÑ ÑаблиÑного пÑоÑÑÑанÑÑва (Ñм. ALTER TABLESPACE).
random_page_cost(floating point)ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ ÑÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ пÑоизволÑной ÑÑÑаниÑÑ Ñ Ð´Ð¸Ñка. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 4.0. ÐÑо знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ индекÑов в опÑеделÑнном ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑÑановив одноимÑннÑй паÑамеÑÑ ÑаблиÑного пÑоÑÑÑанÑÑва (Ñм. ALTER TABLESPACE).
ÐÑи ÑменÑÑении ÑÑого знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ðº
seq_page_costÑиÑÑема наÑÐ¸Ð½Ð°ÐµÑ Ð¿ÑедпоÑиÑаÑÑ ÑканиÑование по индекÑÑ; пÑи ÑвелиÑении Ñакое ÑканиÑование ÑÑановиÑÑÑ Ð±Ð¾Ð»ÐµÐµ доÑогоÑÑоÑÑим. Ðба ÑÑи знаÑÐµÐ½Ð¸Ñ Ñакже можно ÑвелиÑиÑÑ Ð¸Ð»Ð¸ ÑменÑÑиÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑÑоимоÑÑÑ Ð¾Ð¿ÐµÑаÑий ввода/вÑвода по оÑноÑÐµÐ½Ð¸Ñ Ðº ÑÑоимоÑÑи пÑоÑеÑÑоÑнÑÑ Ð¾Ð¿ÐµÑаÑий, коÑоÑÐ°Ñ Ð¾Ð¿ÑеделÑеÑÑÑ ÑледÑÑÑими паÑамеÑÑами.ÐÑоизволÑнÑй доÑÑÑп к Ð¼ÐµÑ Ð°Ð½Ð¸ÑеÑÐºÐ¾Ð¼Ñ Ð´Ð¸ÑÐºÐ¾Ð²Ð¾Ð¼Ñ Ñ ÑанилиÑÑ Ð¾Ð±ÑÑно гоÑаздо доÑоже поÑледоваÑелÑного доÑÑÑпа, более Ñем в ÑеÑÑÑе Ñаза. Ðднако по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбÑан неболÑÑой коÑÑÑиÑÐ¸ÐµÐ½Ñ (4.0), в пÑедположении, ÑÑо болÑÑой обÑÑм даннÑÑ Ð¿Ñи пÑоизволÑном доÑÑÑпе, напÑимеÑ, пÑи ÑÑении индекÑа, окажеÑÑÑ Ð² кеÑе. Таким обÑазом, можно ÑÑиÑаÑÑ, ÑÑо знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸ÑÑÐµÑ ÑиÑÑаÑиÑ, когда пÑоизволÑнÑй доÑÑÑп в 40 Ñаз медленнее поÑледоваÑелÑного, но 90% опеÑаÑий пÑоизволÑного ÑÑÐµÐ½Ð¸Ñ ÑдовлеÑвоÑÑÑÑÑÑ Ð¸Ð· кеÑа.
ÐÑли Ð²Ñ ÑÑиÑаеÑе, ÑÑо Ð´Ð»Ñ Ð²Ð°Ñей ÑабоÑей нагÑÑзки пÑоÑÐµÐ½Ñ Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ð¹ не доÑÑÐ¸Ð³Ð°ÐµÑ 90%, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑвелиÑиÑÑ Ð¿Ð°ÑамеÑÑ random_page_cost, ÑÑÐ¾Ð±Ñ Ð¾Ð½ болÑÑе ÑооÑвеÑÑÑвовал ÑеалÑной ÑÑоимоÑÑи пÑоизволÑного ÑÑениÑ. РнапÑоÑив, еÑли ваÑи даннÑе могÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¿Ð¾Ð¼ÐµÑÑиÑÑÑÑ Ð² кеÑе, напÑимеÑ, когда ÑÐ°Ð·Ð¼ÐµÑ Ð±Ð°Ð·Ñ Ð¼ÐµÐ½ÑÑе обÑего обÑÑма памÑÑи ÑеÑвеÑа, Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ ÑмÑÑл ÑменÑÑиÑÑ random_page_cost. С Ñ ÑанилиÑем, Ñ ÐºÐ¾ÑоÑого ÑÑоимоÑÑÑ Ð¿ÑоизволÑного ÑÑÐµÐ½Ð¸Ñ Ð½Ðµ намного вÑÑе поÑледоваÑелÑного, как напÑимеÑ, Ñ ÑвеÑдоÑелÑнÑÑ Ð½Ð°ÐºÐ¾Ð¿Ð¸Ñелей, Ñак же лÑÑÑе вÑбÑаÑÑ Ð¼ÐµÐ½ÑÑее знаÑение random_page_cost, напÑимеÑ
1.1.ÐодÑказка
ХоÑÑ ÑиÑÑема позволÑÐµÑ ÑделаÑÑ
random_page_costменÑÑе, Ñемseq_page_cost, ÑÑо лиÑено ÑизиÑеÑкого ÑмÑÑла. Ðднако ÑделаÑÑ Ð¸Ñ ÑавнÑми Ð¸Ð¼ÐµÐµÑ ÑмÑÑл, еÑли база даннÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ ÐºÐµÑиÑÑеÑÑÑ Ð² ÐÐУ, Ñак как в ÑÑом ÑлÑÑае Ñ Ð¾Ð±ÑаÑением к ÑÑÑаниÑам в пÑоизволÑном поÑÑдке не ÑвÑÐ·Ð°Ð½Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ дополниÑелÑнÑе издеÑжки. ÐÑоме Ñого, Ð´Ð»Ñ ÑилÑно загÑÑженной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð±Ð° ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑа ÑледÑÐµÑ Ð¿Ð¾Ð½Ð¸Ð·Ð¸ÑÑ Ð¿Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ðº ÑÑоимоÑÑи пÑоÑеÑÑоÑнÑÑ Ð¾Ð¿ÐµÑаÑий, Ñак как ÑÑоимоÑÑÑ Ð²ÑбоÑки ÑÑÑаниÑÑ, Ñже Ð½Ð°Ñ Ð¾Ð´ÑÑейÑÑ Ð² ÐÐУ, оказÑваеÑÑÑ Ð½Ð°Ð¼Ð½Ð¾Ð³Ð¾ менÑÑе, Ñем обÑÑно.cpu_tuple_cost(floating point)ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ Ð¾Ð±ÑабоÑки каждой ÑÑÑоки пÑи вÑполнении запÑоÑа. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.01.
cpu_index_tuple_cost(floating point)ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ Ð¾Ð±ÑабоÑки каждой запиÑи индекÑа пÑи ÑканиÑовании индекÑа. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.005.
cpu_operator_cost(floating point)ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ Ð¾Ð±ÑабоÑки опеÑаÑоÑа или ÑÑнкÑии пÑи вÑполнении запÑоÑа. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.0025.
parallel_setup_cost(floating point)ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ Ð·Ð°Ð¿ÑÑка паÑаллелÑнÑÑ ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 1000.
parallel_tuple_cost(floating point)ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ Ð¿ÐµÑедаÑи одного коÑÑежа Ð¾Ñ Ð¿Ð°ÑаллелÑного ÑабоÑего пÑоÑеÑÑа дÑÑÐ³Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.1.
min_parallel_relation_size(integer)ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑй ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÑноÑениÑ, пÑи коÑоÑом возможно ÑаÑпаÑаллеливание ÑканиÑованиÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 8 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (
8MB).effective_cache_size(integer)ÐпÑеделÑÐµÑ Ð¿ÑедÑÑавление планиÑовÑика об ÑÑÑекÑивном ÑазмеÑе диÑкового кеÑа, доÑÑÑпном Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ запÑоÑа. ÐÑо пÑедÑÑавление влиÑÐµÑ Ð½Ð° оÑÐµÐ½ÐºÑ ÑÑоимоÑÑи иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа; Ñем вÑÑе ÑÑо знаÑение, Ñем болÑÑе веÑоÑÑноÑÑÑ, ÑÑо бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ ÑканиÑование по индекÑÑ, Ñем ниже, Ñем более веÑоÑÑно, ÑÑо бÑÐ´ÐµÑ Ð²ÑбÑано поÑледоваÑелÑное ÑканиÑование. ÐÑи ÑÑÑановке ÑÑого паÑамеÑÑа ÑледÑÐµÑ ÑÑиÑÑваÑÑ Ð¸ обÑÑм ÑазделÑемÑÑ Ð±ÑÑеÑов Postgres Pro, и пÑоÑÐµÐ½Ñ Ð´Ð¸Ñкового кеÑа ÑдÑа, коÑоÑÑй бÑдÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ Postgres Pro, Ñ Ð¾ÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе даннÑе могÑÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð¸ Ñам, и Ñам. ÐÑоме Ñого, ÑледÑÐµÑ Ð¿ÑинÑÑÑ Ð²Ð¾ внимание ожидаемое ÑиÑло паÑаллелÑнÑÑ Ð·Ð°Ð¿ÑоÑов к ÑазнÑм ÑаблиÑам, Ñак как обÑий ÑÐ°Ð·Ð¼ÐµÑ Ð±ÑÐ´ÐµÑ ÑазделÑÑÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ влиÑÐµÑ Ð½Ð° ÑÐ°Ð·Ð¼ÐµÑ ÑазделÑемой памÑÑи, вÑделÑемой Postgres Pro, и не задаÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑезеÑвиÑÑемого в ÑдÑе диÑкового кеÑа; он иÑполÑзÑеÑÑÑ ÑолÑко в каÑеÑÑве оÑиенÑиÑовоÑной оÑенки. ÐÑи ÑÑом ÑиÑÑема не ÑÑиÑÑваеÑ, ÑÑо даннÑе могÑÑ Ð¾ÑÑаваÑÑÑÑ Ð² диÑковом кеÑе Ð¾Ñ Ð·Ð°Ð¿ÑоÑа к запÑоÑÑ. ÐнаÑение ÑÑого паÑамеÑÑа по ÑмолÑÐ°Ð½Ð¸Ñ â 4 гигабайÑа (
4GB).
18.7.3. ÐенеÑиÑеÑкий опÑимизаÑÐ¾Ñ Ð·Ð°Ð¿ÑоÑов
ÐенеÑиÑеÑкий опÑимизаÑÐ¾Ñ Ð·Ð°Ð¿ÑоÑов (GEnetic Query Optimizer, GEQO) оÑÑÑеÑÑвлÑÐµÑ Ð¿Ð»Ð°Ð½Ð¸Ñование запÑоÑов, пÑименÑÑ ÑвÑиÑÑиÑеÑкий поиÑк. ÐÑо позволÑÐµÑ ÑокÑаÑиÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑложнÑÑ Ð·Ð°Ð¿ÑоÑов (в коÑоÑÑÑ ÑоединÑÑÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво оÑноÑений), Ñеной Ñого, ÑÑо иногда полÑÑеннÑе Ð¿Ð»Ð°Ð½Ñ ÑÑÑÑпаÑÑ Ð¿Ð¾ каÑеÑÑÐ²Ñ Ð¿Ð»Ð°Ð½Ð°Ð¼, вÑбиÑаемÑм пÑи полном пеÑебоÑе. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº Ðлаве 54.
geqo(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð³ÐµÐ½ÐµÑиÑеÑкÑÑ Ð¾Ð¿ÑимизаÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½Ð° вклÑÑена. РпÑоизводÑÑвенной ÑÑеде ÐµÑ Ð»ÑÑÑе не оÑклÑÑаÑÑ; более гибко ÑпÑавлÑÑÑ GEQO можно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÐµÑеменной
geqo_threshold.geqo_threshold(integer)ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное ÑиÑло ÑлеменÑов во
FROM, пÑи коÑоÑом Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑоÑа бÑÐ´ÐµÑ Ð¿ÑивлеÑÑн генеÑиÑеÑкий опÑимизаÑоÑ. (ÐамеÑÑÑе, ÑÑо конÑÑÑÑкÑиÑFULL OUTER JOINÑÑиÑаеÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ ÑлеменÑом ÑпиÑкаFROM.) ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 12. ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ пÑоÑÑÑÑ Ð·Ð°Ð¿ÑоÑов ÑаÑÑо лÑÑÑе иÑполÑзоваÑÑ Ð¾Ð±ÑÑнÑй планиÑовÑик, пÑоизводÑÑий полнÑй пеÑебоÑ, но Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑов Ñо множеÑÑвом ÑÐ°Ð±Ð»Ð¸Ñ Ð¿Ð¾Ð»Ð½Ñй пеÑÐµÐ±Ð¾Ñ Ð·Ð°Ð¹Ð¼ÑÑ ÑлиÑком много вÑемени, ÑаÑе гоÑаздо болÑÑе, Ñем бÑÐ´ÐµÑ Ð¿Ð¾ÑеÑÑно из-за вÑбоÑа не Ñамого ÑÑÑекÑивного плана. Таким обÑазом, огÑаниÑение по ÑазмеÑÑ Ð·Ð°Ð¿ÑоÑа даÑÑ ÑдобнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑпÑавлÑÑÑ GEQO.geqo_effort(integer)УпÑавлÑÐµÑ Ð²ÑбоÑом Ð¼ÐµÐ¶Ð´Ñ ÑокÑаÑением вÑеменем планиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ повÑÑением каÑеÑÑва плана запÑоÑа в GEQO. ÐÑо знаÑение должна задаваÑÑÑÑ ÑелÑм ÑиÑлом Ð¾Ñ 1 до 10. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно пÑÑи. Чем болÑÑе знаÑение ÑÑого паÑамеÑÑа, Ñем болÑÑе вÑемени бÑÐ´ÐµÑ Ð¿Ð¾ÑÑаÑено на планиÑование запÑоÑа, но и Ñем болÑÑе веÑоÑÑноÑÑÑ, ÑÑо бÑÐ´ÐµÑ Ð²ÑбÑан ÑÑÑекÑивнÑй план.
ÐаÑамеÑÑ
geqo_effortÑам по Ñебе ниÑего не делаеÑ, он иÑполÑзÑеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ð¿ÐµÑеменнÑÑ , влиÑÑÑÐ¸Ñ Ð½Ð° поведение GEQO (они опиÑÐ°Ð½Ñ Ð½Ð¸Ð¶Ðµ). ÐÑи желании ÑÑи пеÑеменнÑе можно пÑоÑÑо ÑÑÑановиÑÑ Ð²ÑÑÑнÑÑ.geqo_pool_size(integer)ÐадаÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ñла Ð´Ð»Ñ Ð°Ð»Ð³Ð¾ÑиÑма GEQO, Ñо еÑÑÑ ÑиÑло оÑобей в генеÑиÑеÑкой попÑлÑÑии. ÐÑо ÑиÑло должно бÑÑÑ Ð½Ðµ менÑÑе двÑÑ , но полезнÑе знаÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑно Ð»ÐµÐ¶Ð°Ñ Ð² инÑеÑвале Ð¾Ñ 100 до 1000. ÐÑли оно Ñавно нÑÐ»Ñ (ÑÑо знаÑение по ÑмолÑаниÑ), Ñо Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее ÑиÑло вÑбиÑаеÑÑÑ, иÑÑ Ð¾Ð´Ñ Ð¸Ð· знаÑениÑ
geqo_effortи ÑиÑла ÑÐ°Ð±Ð»Ð¸Ñ Ð² запÑоÑе.geqo_generations(integer)ÐадаÑÑ ÑиÑло поколений Ð´Ð»Ñ GEQO, Ñо еÑÑÑ ÑиÑло иÑеÑаÑий ÑÑого алгоÑиÑма. Ðно должно бÑÑÑ Ð½Ðµ менÑÑе единиÑÑ, но полезнÑе знаÑÐµÐ½Ð¸Ñ Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð² Ñом же диапазоне, ÑÑо и ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ñла. ÐÑли оно Ñавно нÑÐ»Ñ (ÑÑо знаÑение по ÑмолÑаниÑ), Ñо Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее ÑиÑло вÑбиÑаеÑÑÑ, иÑÑ Ð¾Ð´Ñ Ð¸Ð·
geqo_pool_size.geqo_selection_bias(floating point)ÐадаÑÑ Ð¸Ð½ÑенÑивноÑÑÑ ÑелекÑии Ð´Ð»Ñ GEQO, Ñо еÑÑÑ ÑелекÑивное давление в попÑлÑÑии. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð»ÐµÐ¶Ð°Ñ Ð² диапазоне Ð¾Ñ 1.50 до 2.00 (ÑÑо знаÑение по ÑмолÑаниÑ).
geqo_seed(floating point)ÐадаÑÑ Ð½Ð°ÑалÑное знаÑение Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑаÑоÑа ÑлÑÑайнÑÑ ÑиÑел, коÑоÑÑй пÑименÑеÑÑÑ Ð² GEQO Ð´Ð»Ñ Ð²ÑбоÑа ÑлÑÑайнÑÑ Ð¿ÑÑей в пÑоÑÑÑанÑÑве поиÑка поÑÑдка Ñоединений. ÐÐ¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð·Ð½Ð°Ñение Ð¾Ñ Ð½ÑÐ»Ñ (по ÑмолÑаниÑ) до одного. ÐÑи изменении ÑÑого знаÑÐµÐ½Ð¸Ñ Ð¼ÐµÐ½ÑеÑÑÑ Ð½Ð°Ð±Ð¾Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸ÑÑемÑÑ Ð¿ÑÑей, в ÑезÑлÑÑаÑе Ñего Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½ как более, Ñак и менее опÑималÑнÑй пÑÑÑ.
18.7.4. ÐÑÑгие паÑамеÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика
default_statistics_target(integer)УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение оÑиенÑиÑа ÑÑаÑиÑÑики по ÑмолÑаниÑ, ÑаÑпÑоÑÑÑанÑÑÑееÑÑ Ð½Ð° ÑÑолбÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹
ALTER TABLE SET STATISTICSне Ð·Ð°Ð´Ð°Ð½Ñ Ð¾ÑделÑнÑе огÑаниÑениÑ. Чем болÑÑе ÑÑÑановленное знаÑение, Ñем болÑÑе вÑемени ÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð²ÑполнениÑANALYZE, но Ñем вÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÐºÐ°ÑеÑÑво оÑенок планиÑовÑика. ÐнаÑение ÑÑого паÑамеÑÑа по ÑмолÑÐ°Ð½Ð¸Ñ â 100. Ðа дополниÑелÑнÑми ÑведениÑми об иÑполÑзовании ÑÑаÑиÑÑики планиÑовÑиком запÑоÑов Postgres Pro обÑаÑиÑеÑÑ Ðº РазделÑ 14.2.constraint_exclusion(enum)УпÑавлÑÐµÑ Ð¸ÑполÑзованием огÑаниÑений ÑÐ°Ð±Ð»Ð¸Ñ Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑии запÑоÑов. ÐопÑÑÑимÑе знаÑениÑ
constraint_exclusion:on(задейÑÑвоваÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²ÑÐµÑ ÑаблиÑ),off(никогда не задейÑÑвоваÑÑ Ð¾Ð³ÑаниÑениÑ) иpartition(задейÑÑвоваÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑолÑко Ð´Ð»Ñ Ð´Ð¾ÑеÑÐ½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ подзапÑоÑовUNION ALL). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ âpartition. Ðно ÑаÑÑо Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ ÑвелиÑиÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ, когда пÑименÑÑÑÑÑ ÑекÑиониÑованнÑе ÑаблиÑÑ Ð¸ наÑледование.Ðогда даннÑй паÑамеÑÑ ÑазÑеÑÐ°ÐµÑ ÑÑо Ð´Ð»Ñ ÑаблиÑÑ, планиÑовÑик ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð·Ð°Ð¿ÑоÑа Ñ Ð¾Ð³ÑаниÑениÑми
CHECKданной ÑаблиÑÑ Ð¸ не ÑканиÑÑÐµÑ ÐµÑ, еÑли они оказÑваÑÑÑÑ Ð½ÐµÑовмеÑÑимÑми. ÐапÑимеÑ:CREATE TABLE parent(key integer, ...); CREATE TABLE child1000(check (key between 1000 and 1999)) INHERITS(parent); CREATE TABLE child2000(check (key between 2000 and 2999)) INHERITS(parent); ... SELECT * FROM parent WHERE key = 2400;
ÐÑли вклÑÑено иÑклÑÑение по огÑаниÑениÑ, команда
SELECTне бÑÐ´ÐµÑ ÑканиÑоваÑÑ ÑаблиÑÑchild1000, в ÑезÑлÑÑаÑе Ñего запÑÐ¾Ñ Ð²ÑполниÑÑÑ Ð±ÑÑÑÑее.РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¸ÑклÑÑение по огÑаниÑÐµÐ½Ð¸Ñ ÑазÑеÑено по ÑмолÑÐ°Ð½Ð¸Ñ ÑолÑко в ÑÑловиÑÑ , возникаÑÑÐ¸Ñ Ð¿Ñи ÑеализаÑии ÑекÑиониÑованнÑÑ ÑаблиÑ. ÐклÑÑение ÑÑой возможноÑÑи Ð´Ð»Ñ Ð²ÑÐµÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð²Ð»ÐµÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе издеÑжки на планиÑование, доволÑно замеÑнÑе Ð´Ð»Ñ Ð¿ÑоÑÑÑÑ Ð·Ð°Ð¿ÑоÑов, но никакого вÑигÑÑÑа ÑÑо не пÑиноÑиÑ. ÐÑли Ð²Ñ Ð½Ðµ пÑименÑеÑе ÑекÑиониÑованнÑе ÑаблиÑÑ, лÑÑÑе вÑего полноÑÑÑÑ Ð¾ÑклÑÑиÑÑ ÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ.
Ðа дополниÑелÑнÑми ÑведениÑми об иÑклÑÑении по огÑаниÑÐµÐ½Ð¸Ñ Ð¸ ÑекÑиониÑовании ÑÐ°Ð±Ð»Ð¸Ñ Ð¾Ð±ÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 5.10.4.
cursor_tuple_fraction(floating point)ÐадаÑÑ Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика оÑÐµÐ½ÐºÑ Ð¿ÑоÑенÑа ÑÑÑок, коÑоÑÑе бÑдÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ ÑеÑез кÑÑÑоÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.1 (10%). ÐÑи менÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик бÑÐ´ÐµÑ Ñклонен иÑполÑзоваÑÑ Ð´Ð»Ñ ÐºÑÑÑоÑов Ð¿Ð»Ð°Ð½Ñ Ñ Â«Ð±ÑÑÑÑÑм ÑÑаÑÑом», позволÑÑÑие полÑÑаÑÑ Ð¿ÐµÑвÑе неÑколÑко ÑÑÑок оÑÐµÐ½Ñ Ð±ÑÑÑÑо, Ñ Ð¾ÑÑ Ð´Ð»Ñ Ð²ÑбоÑки вÑÐµÑ ÑÑÑок Ð¼Ð¾Ð¶ÐµÑ ÑйÑи болÑÑе вÑемени. ÐÑи болÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик ÑÑÑемиÑÑÑ Ð¾Ð¿ÑимизиÑоваÑÑ Ð¾Ð±Ñее вÑÐµÐ¼Ñ Ð·Ð°Ð¿ÑоÑа. ÐÑи макÑималÑном знаÑении, Ñавном 1.0, ÑабоÑа Ñ ÐºÑÑÑоÑами планиÑÑеÑÑÑ Ñак же, как и обÑÑнÑе запÑоÑÑ â минимизиÑÑеÑÑÑ ÑолÑко обÑее вÑемÑ, а не вÑÐµÐ¼Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿ÐµÑвÑÑ ÑÑÑок.
from_collapse_limit(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑлеменÑов в ÑпиÑке
FROM, до коÑоÑого планиÑовÑик бÑÐ´ÐµÑ Ð¾Ð±ÑединÑÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñе запÑоÑÑ Ñ Ð²Ð½ÐµÑним запÑоÑом. ÐÑи менÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ ÑокÑаÑаеÑÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑованиÑ, но план запÑоÑа Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ Ð¼ÐµÐ½ÐµÐµ ÑÑÑекÑивнÑм. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо знаÑение Ñавно воÑÑми. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº РазделÑ 14.3.ÐÑли ÑÑо знаÑение ÑделаÑÑ ÑавнÑм geqo_threshold или болÑÑе, пÑи Ñаком обÑединении запÑоÑов Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑиÑÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик GEQO и в ÑезÑлÑÑаÑе бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен неопÑималÑнÑй план. См. ÐодÑаздел 18.7.3.
join_collapse_limit(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво ÑлеменÑов в ÑпиÑке
FROM, до доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑого планиÑовÑик бÑÐ´ÐµÑ ÑноÑиÑÑ Ð² него ÑвнÑе конÑÑÑÑкÑииJOIN(за иÑклÑÑениемFULL JOIN). ÐÑи менÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ ÑокÑаÑаеÑÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑованиÑ, но план запÑоÑа Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ Ð¼ÐµÐ½ÐµÐµ ÑÑÑекÑивнÑм.Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑа пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð¼ÐµÐµÑ Ñо же знаÑение, ÑÑо и
from_collapse_limit, и ÑÑо пÑиемлемо в болÑÑинÑÑве ÑлÑÑаев. ÐÑи знаÑении, Ñавном 1, пÑедложениÑJOINпеÑеÑÑавлÑÑÑÑÑ Ð½Ðµ бÑдÑÑ, Ñак ÑÑо Ñвно заданнÑй в запÑоÑе поÑÑдок Ñоединений опÑÐµÐ´ÐµÐ»Ð¸Ñ ÑакÑиÑеÑкий поÑÑдок, в коÑоÑом бÑдÑÑ ÑоединÑÑÑÑÑ Ð¾ÑноÑениÑ. Так как планиÑовÑик не вÑегда вÑбиÑÐ°ÐµÑ Ð¾Ð¿ÑималÑнÑй поÑÑдок Ñоединений, опÑÑнÑе полÑзоваÑели могÑÑ Ð²Ñеменно задаÑÑ Ð´Ð»Ñ ÑÑой пеÑеменной знаÑение 1, а заÑем Ñвно опÑеделиÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ñй поÑÑдок. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº РазделÑ 14.3.ÐÑли ÑÑо знаÑение ÑделаÑÑ ÑавнÑм geqo_threshold или болÑÑе, пÑи Ñаком обÑединении запÑоÑов Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑиÑÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик GEQO и в ÑезÑлÑÑаÑе бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен неопÑималÑнÑй план. См. ÐодÑаздел 18.7.3.
force_parallel_mode(enum)ÐозволÑÐµÑ ÑаÑпаÑаллеливаÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð² ÑелÑÑ ÑеÑÑиÑованиÑ, даже когда Ð¾Ñ ÑÑого не ожидаеÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ вÑигÑÑÑа в ÑкоÑоÑÑи. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа
force_parallel_modeâoff(иÑполÑзоваÑÑ Ð¿Ð°ÑаллелÑнÑй Ñежим ÑолÑко когда ожидаеÑÑÑ ÑвелиÑение пÑоизводиÑелÑноÑÑи),on(пÑинÑдиÑелÑно ÑаÑпаÑаллеливаÑÑ Ð²Ñе запÑоÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ ÑÑо безопаÑно) иregress(какon, но Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑми изменениÑми поведениÑ, опиÑаннÑми ниже).ÐовоÑÑ ÑоÑнее, Ñо знаÑением
onÑзелGatherдобавлÑеÑÑÑ Ð² веÑÑÐ¸Ð½Ñ Ð»Ñбого плана запÑоÑа, Ð´Ð»Ñ ÐºÐ¾ÑоÑого допÑÑкаеÑÑÑ ÑаÑпаÑаллеливание, Ñак ÑÑо запÑÐ¾Ñ Ð²ÑполнÑеÑÑÑ Ð²Ð½ÑÑÑи паÑаллелÑного иÑполниÑелÑ. Ðаже когда паÑаллелÑнÑй иÑполниÑÐµÐ»Ñ Ð½ÐµÐ´Ð¾ÑÑÑпен или не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован, Ñакие опеÑаÑии, как запÑÑк подÑÑанзакÑии, коÑоÑÑе не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑполнÑÑÑÑÑ Ð² конÑекÑÑе паÑаллелÑного запÑоÑа, не бÑдÑÑ Ð²ÑполнÑÑÑÑÑ Ð² ÑÑом Ñежиме, еÑли ÑолÑко планиÑовÑик не ÑеÑиÑ, ÑÑо ÑÑо пÑиведÑÑ Ðº оÑибке запÑоÑа. ÐÑли пÑи вклÑÑении ÑÑого паÑамеÑÑа возникаÑÑ Ð¾Ñибки или вÑдаÑÑÑÑ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñе ÑезÑлÑÑаÑÑ, веÑоÑÑно, некоÑоÑÑе ÑÑнкÑии, задейÑÑвованнÑе в ÑÑом запÑоÑе, нÑжно помеÑиÑÑ ÐºÐ°ÐºPARALLEL UNSAFE(или, возможно,PARALLEL RESTRICTED).ÐнаÑение
regressдейÑÑвÑÐµÑ Ñак же, как и знаÑениеon, Ñ Ð½ÐµÐºÐ¾ÑоÑÑми дополниÑелÑнÑми оÑобенноÑÑÑми, пÑедназнаÑеннÑми Ð´Ð»Ñ Ð¾Ð±Ð»ÐµÐ³ÑÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑкого ÑегÑеÑÑионного ÑеÑÑиÑованиÑ. ÐбÑÑно ÑообÑÐµÐ½Ð¸Ñ Ð¾Ñ Ð¿Ð°ÑаллелÑнÑÑ Ð¸ÑполниÑелей вклÑÑаÑÑ ÑÑÑÐ¾ÐºÑ ÐºÐ¾Ð½ÑекÑÑа, оÑмеÑаÑÑÑÑ ÑÑо, но знаÑениеregressподавлÑÐµÑ ÑÑÑ ÑÑÑокÑ, Ñак ÑÑо вÑвод не оÑлиÑаеÑÑÑ Ð¾Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð² не паÑаллелÑном Ñежиме. ÐÑоме Ñого, ÑзлÑGather, добавлÑемÑе в Ð¿Ð»Ð°Ð½Ñ Ñ ÑÑим знаÑением паÑамеÑÑа, ÑкÑÑваÑÑÑÑ Ð² вÑводеEXPLAIN, ÑÑÐ¾Ð±Ñ Ð²Ñвод ÑооÑвеÑÑÑвовал ÑомÑ, ÑÑо бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен пÑи оÑклÑÑении ÑÑого паÑамеÑÑа (Ñо знаÑениемoff).