18.7. ÐланиÑование запÑоÑов
18.7.1. ÐонÑигÑÑаÑÐ¸Ñ Ð¼ÐµÑодов планиÑовÑика
ÐÑи паÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии даÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð³ÑÑбо влиÑÑÑ Ð½Ð° планÑ, вÑбиÑаемÑе опÑимизаÑоÑом запÑоÑов. ÐÑли авÑомаÑиÑеÑки вÑбÑаннÑй опÑимизаÑоÑом план конкÑеÑного запÑоÑа оказалÑÑ Ð½ÐµÐ¾Ð¿ÑималÑнÑм, в каÑеÑÑве вÑеменного ÑеÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ воÑполÑзоваÑÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из ÑÑиÑ
паÑамеÑÑов и вÑнÑдиÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик вÑбÑаÑÑ Ð´ÑÑгой план. УлÑÑÑиÑÑ ÐºÐ°ÑеÑÑво планов, вÑбиÑаемÑÑ
планиÑовÑиком, можно и более подÑ
одÑÑими ÑпоÑобами, в ÑаÑÑноÑÑи, ÑкоÑÑекÑиÑоваÑÑ ÐºÐ¾Ð½ÑÑанÑÑ ÑÑоимоÑÑи (Ñм. ÐодÑаздел 18.7.2), вÑполниÑÑ ANALYZE вÑÑÑнÑÑ, измениÑÑ Ð·Ð½Ð°Ñение паÑамеÑÑа конÑигÑÑаÑии default_statistics_target и ÑвелиÑиÑÑ Ð¾Ð±ÑÑм ÑÑаÑиÑÑики, ÑобиÑаемой Ð´Ð»Ñ Ð¾ÑделÑнÑÑ
ÑÑолбÑов, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER TABLE SET STATISTICS.
enable_bitmapscan(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ биÑовой каÑÑе. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_gathermerge(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑедÑÑвом ÑбоÑа. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_hashagg(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов агÑегиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_hashjoin(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_indexscan(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ индекÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_indexonlyscan(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко индекÑа (Ñм. Раздел 11.9). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_material(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование маÑеÑиализаÑии пÑи планиÑовании запÑоÑов. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ Ð¼Ð°ÑеÑиализаÑÐ¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð²ÑÑавлÑÑÑ ÑÐ·Ð»Ñ Ð¼Ð°ÑеÑиализаÑии, за иÑклÑÑением ÑлÑÑаев, где они ÑÑебÑÑÑÑÑ Ð´Ð»Ñ Ð¿ÑавилÑноÑÑи. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_mergejoin(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑлиÑнием. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_nestloop(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñми Ñиклами. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñе ÑÐ¸ÐºÐ»Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй меÑод, еÑли можно пÑимениÑÑ Ð´ÑÑгие. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on.enable_parallel_append(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком планов Ñ ÑаÑпаÑаллеливанием Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ . Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_parallel_hash(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ Ñ ÑаÑпаÑаллеливанием Ñ ÐµÑиÑованиÑ. Ðе дейÑÑвÑеÑ, еÑли Ð¿Ð»Ð°Ð½Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ Ð¾ÑклÑÑенÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.).enable_partition_pruning(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð² планиÑовÑике возможноÑÑÑ ÑÑÑÑанÑÑÑ ÑекÑии ÑекÑиониÑованнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸Ð· планов запÑоÑа. Также влиÑÐµÑ Ð½Ð° возможноÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика генеÑиÑоваÑÑ Ð¿Ð»Ð°Ð½Ñ Ð·Ð°Ð¿ÑоÑов, позволÑÑÑие иÑполниÑÐµÐ»Ñ Ð¿ÑопÑÑкаÑÑ (игноÑиÑоваÑÑ) ÑекÑии пÑи вÑполнении запÑоÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(вкл.). Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 5.10.4.enable_partitionwise_join(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑÑÑÑом ÑекÑиониÑованиÑ, ÑÑо позволÑÐµÑ Ð²ÑполнÑÑÑ Ñоединение ÑекÑиониÑованнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð¿ÑÑÑм ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑооÑвеÑÑÑвÑÑÑÐ¸Ñ ÑекÑий. Соединение Ñ ÑÑÑÑом ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑименÑÑÑÑÑ, ÑолÑко когда ÑÑÐ»Ð¾Ð²Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð²ÐºÐ»ÑÑаÑÑ Ð²Ñе клÑÑи ÑекÑиониÑованиÑ; пÑи ÑÑом клÑÑи Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñипа даннÑÑ Ð¸ набоÑÑ Ð´Ð¾ÑеÑÐ½Ð¸Ñ ÑекÑий Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñми. Так как Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑÑÑÑом ÑекÑий Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð³Ð¾Ñаздо болÑÑе пÑоÑеÑÑоÑного вÑемени и памÑÑи, по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÑклÑÑен (
off).enable_partitionwise_aggregate(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком гÑÑппиÑовки или агÑегиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ ÑÑÑÑом ÑекÑиониÑованиÑ, ÑÑо позволÑÐµÑ Ð²ÑполнÑÑÑ Ð³ÑÑппиÑÐ¾Ð²ÐºÑ Ð¸Ð»Ð¸ агÑегиÑование в ÑекÑиониÑованнÑÑ ÑаблиÑÐ°Ñ Ð¿Ð¾ оÑделÑноÑÑи Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑекÑии. ÐÑли пÑедложение
GROUP BYне вклÑÑÐ°ÐµÑ ÐºÐ»ÑÑи ÑекÑиониÑованиÑ, на ÑÑовне ÑекÑий Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ñполнено ÑолÑко ÑаÑÑиÑное агÑегиÑование, а заÑем ÑÑебÑеÑÑÑ Ð¸ÑÐ¾Ð³Ð¾Ð²Ð°Ñ Ð¾Ð±ÑабоÑка. Так как Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð³ÑÑппиÑовки или агÑегиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð³Ð¾Ñаздо болÑÑе пÑоÑеÑÑоÑного вÑемени и памÑÑи, по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÑклÑÑен (off).enable_self_join_removal(boolean)ÐклÑÑÐ°ÐµÑ ÑÑнкÑÐ¸Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼ÐºÐ½ÑÑÑÑ Ñоединений из планов запÑоÑов. Удаление замкнÑÑÑÑ Ñоединений, обÑазованнÑÑ ÑÑловием по ÑникалÑÐ½Ð¾Ð¼Ñ ÑÑолбÑÑ, Ð¼Ð¾Ð¶ÐµÑ Ð·Ð½Ð°ÑиÑелÑно ÑÑкоÑиÑÑ Ð²Ñполнение запÑоÑов, не влиÑÑ Ð½Ð° ÑезÑлÑÑаÑÑ.
Ðо ÑмолÑаниÑ:
on(вкл.)enable_compound_index_stats(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_table_scan_size(integer)ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑй обÑÑм даннÑÑ ÑаблиÑÑ, подлежаÑий ÑканиÑованиÑ, пÑи коÑоÑом Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð¿Ð°ÑаллелÑное ÑканиÑование. ÐÐ»Ñ Ð¿Ð°ÑаллелÑного поÑледоваÑелÑного ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑÑм ÑканиÑÑемÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð²Ñегда ÑавнÑеÑÑÑ ÑазмеÑÑ ÑаблиÑÑ, но когда иÑполÑзÑÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ, ÑÑÐ¾Ñ Ð¾Ð±ÑÑм обÑÑно менÑÑе. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 8 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (
8MB).min_parallel_index_scan_size(integer)ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑй обÑÑм даннÑÑ Ð¸Ð½Ð´ÐµÐºÑа, подлежаÑий ÑканиÑованиÑ, пÑи коÑоÑом Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð¿Ð°ÑаллелÑное ÑканиÑование. ÐамеÑÑÑе, ÑÑо пÑи паÑаллелÑном ÑканиÑовании по индекÑÑ Ð¾Ð±ÑÑно не заÑÑагиваеÑÑÑ Ð²ÐµÑÑ Ð¸Ð½Ð´ÐµÐºÑ; здеÑÑ ÑÑиÑÑваеÑÑÑ ÑиÑло ÑÑÑаниÑ, коÑоÑое по Ð¼Ð½ÐµÐ½Ð¸Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика бÑÐ´ÐµÑ Ð·Ð°ÑÑонÑÑо пÑи ÑканиÑовании. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 512 ÐºÐ¸Ð»Ð¾Ð±Ð°Ð¹Ñ (
512kB).effective_cache_size(integer)ÐпÑеделÑÐµÑ Ð¿ÑедÑÑавление планиÑовÑика об ÑÑÑекÑивном ÑазмеÑе диÑкового кеÑа, доÑÑÑпном Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ запÑоÑа. ÐÑо пÑедÑÑавление влиÑÐµÑ Ð½Ð° оÑÐµÐ½ÐºÑ ÑÑоимоÑÑи иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа; Ñем вÑÑе ÑÑо знаÑение, Ñем болÑÑе веÑоÑÑноÑÑÑ, ÑÑо бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ ÑканиÑование по индекÑÑ, Ñем ниже, Ñем более веÑоÑÑно, ÑÑо бÑÐ´ÐµÑ Ð²ÑбÑано поÑледоваÑелÑное ÑканиÑование. ÐÑи ÑÑÑановке ÑÑого паÑамеÑÑа ÑледÑÐµÑ ÑÑиÑÑваÑÑ Ð¸ обÑÑм ÑазделÑемÑÑ Ð±ÑÑеÑов Postgres Pro, и пÑоÑÐµÐ½Ñ Ð´Ð¸Ñкового кеÑа ÑдÑа, коÑоÑÑй бÑдÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ Postgres Pro, Ñ Ð¾ÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе даннÑе могÑÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð¸ Ñам, и Ñам. ÐÑоме Ñого, ÑледÑÐµÑ Ð¿ÑинÑÑÑ Ð²Ð¾ внимание ожидаемое ÑиÑло паÑаллелÑнÑÑ Ð·Ð°Ð¿ÑоÑов к ÑазнÑм ÑаблиÑам, Ñак как обÑий ÑÐ°Ð·Ð¼ÐµÑ Ð±ÑÐ´ÐµÑ ÑазделÑÑÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ влиÑÐµÑ Ð½Ð° ÑÐ°Ð·Ð¼ÐµÑ ÑазделÑемой памÑÑи, вÑделÑемой Postgres Pro, и не задаÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑезеÑвиÑÑемого в ÑдÑе диÑкового кеÑа; он иÑполÑзÑеÑÑÑ ÑолÑко в каÑеÑÑве оÑиенÑиÑовоÑной оÑенки. ÐÑи ÑÑом ÑиÑÑема не ÑÑиÑÑваеÑ, ÑÑо даннÑе могÑÑ Ð¾ÑÑаваÑÑÑÑ Ð² диÑковом кеÑе Ð¾Ñ Ð·Ð°Ð¿ÑоÑа к запÑоÑÑ. ÐнаÑение ÑÑого паÑамеÑÑа по ÑмолÑÐ°Ð½Ð¸Ñ â 4 гигабайÑа (
4GB).jit_above_cost(floating point)УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿Ñедел ÑÑоимоÑÑи запÑоÑа, пÑи пÑевÑÑении коÑоÑого вклÑÑаеÑÑÑ JIT-компилÑÑиÑ, еÑли она поддеÑживаеÑÑÑ (Ñм. ÐлавÑ 31). ÐÑименение JIT Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð²ÑÐµÐ¼Ñ Ð¿Ñи планиÑовании, но Ð¼Ð¾Ð¶ÐµÑ ÑÑкоÑиÑÑ Ð²Ñполнение запÑоÑа в Ñелом. ÐнаÑение
-1оÑклÑÑÐ°ÐµÑ JIT-компилÑÑиÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â100000.jit_inline_above_cost(floating point)УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿Ñедел ÑÑоимоÑÑи, пÑи пÑевÑÑении коÑоÑого бÑÐ´ÐµÑ Ð´Ð¾Ð¿ÑÑкаÑÑÑÑ Ð²ÑÑÑаивание ÑÑнкÑий и опеÑаÑоÑов в пÑоÑеÑÑе JIT-компилÑÑии. ÐÑÑÑаивание Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð²ÑÐµÐ¼Ñ Ð¿Ñи планиÑовании, но в Ñелом Ð¼Ð¾Ð¶ÐµÑ ÑÑкоÑиÑÑ Ð²Ñполнение. ÐÑиÑваиваÑÑ ÑÑÐ¾Ð¼Ñ Ð¿Ð°ÑамеÑÑÑ Ð·Ð½Ð°Ñение, менÑÑее Ñем
jit_above_cost, не Ð¸Ð¼ÐµÐµÑ ÑмÑÑла. ÐнаÑение-1оÑклÑÑÐ°ÐµÑ Ð²ÑÑÑаивание. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â500000.jit_optimize_above_cost(floating point)УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿Ñедел ÑÑоимоÑÑи, пÑи пÑевÑÑении коÑоÑого в JIT-компилиÑованнÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ð°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð´Ð¾ÑогоÑÑоÑÑÐ°Ñ Ð¾Ð¿ÑимизаÑиÑ. Ð¢Ð°ÐºÐ°Ñ Ð¾Ð¿ÑимизаÑÐ¸Ñ ÑвелиÑÐ¸Ð²Ð°ÐµÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑованиÑ, но в Ñелом Ð¼Ð¾Ð¶ÐµÑ ÑÑкоÑиÑÑ Ð²Ñполнение. ÐÑиÑваиваÑÑ ÑÑÐ¾Ð¼Ñ Ð¿Ð°ÑамеÑÑÑ Ð·Ð½Ð°Ñение, менÑÑее Ñем
jit_above_cost, не Ð¸Ð¼ÐµÐµÑ ÑмÑÑла, а пÑи знаÑениÑÑ , пÑевÑÑаÑÑиÑjit_inline_above_cost, положиÑелÑнÑй ÑÑÑÐµÐºÑ Ð¼Ð°Ð»Ð¾Ð²ÐµÑоÑÑен. ÐнаÑение-1оÑклÑÑÐ°ÐµÑ Ð´Ð¾ÑогоÑÑоÑÑие опÑимизаÑии. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â500000.
18.7.3. ÐенеÑиÑеÑкий опÑимизаÑÐ¾Ñ Ð·Ð°Ð¿ÑоÑов
ÐенеÑиÑеÑкий опÑимизаÑÐ¾Ñ Ð·Ð°Ð¿ÑоÑов (GEnetic Query Optimizer, GEQO) оÑÑÑеÑÑвлÑÐµÑ Ð¿Ð»Ð°Ð½Ð¸Ñование запÑоÑов, пÑименÑÑ ÑвÑиÑÑиÑеÑкий поиÑк. ÐÑо позволÑÐµÑ ÑокÑаÑиÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑложнÑÑ Ð·Ð°Ð¿ÑоÑов (в коÑоÑÑÑ ÑоединÑÑÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво оÑноÑений), Ñеной Ñого, ÑÑо иногда полÑÑеннÑе Ð¿Ð»Ð°Ð½Ñ ÑÑÑÑпаÑÑ Ð¿Ð¾ каÑеÑÑÐ²Ñ Ð¿Ð»Ð°Ð½Ð°Ð¼, вÑбиÑаемÑм пÑи полном пеÑебоÑе. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº Ðлаве 56.
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, в ÑезÑлÑÑаÑе Ñего запÑÐ¾Ñ Ð²ÑполниÑÑÑ Ð±ÑÑÑÑее.РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¸ÑклÑÑение по огÑаниÑÐµÐ½Ð¸Ñ ÑазÑеÑено по ÑмолÑÐ°Ð½Ð¸Ñ ÑолÑко в ÑÑловиÑÑ , возникаÑÑÐ¸Ñ Ð¿Ñи ÑеализаÑии ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑеÑез деÑевÑÑ Ð½Ð°ÑледованиÑ. ÐклÑÑение ÑÑой возможноÑÑи Ð´Ð»Ñ Ð²ÑÐµÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð²Ð»ÐµÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе издеÑжки на планиÑование, доволÑно замеÑнÑе Ð´Ð»Ñ Ð¿ÑоÑÑÑÑ Ð·Ð°Ð¿ÑоÑов, но Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ даÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ вÑигÑÑÑа. ÐÑли Ð²Ñ Ð½Ðµ пÑименÑеÑе ÑекÑиониÑование ÑеÑез деÑевÑÑ Ð½Ð°ÑледованиÑ, Ð¸Ð¼ÐµÐµÑ ÑмÑÑл ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¾ÑклÑÑиÑÑ. (ÐамеÑÑÑе, ÑÑо Ð¿Ð¾Ñ Ð¾Ð¶Ð°Ñ ÑÑнкÑионалÑноÑÑÑ Ð´Ð»Ñ ÑекÑиониÑованнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ ÑпÑавлÑеÑÑÑ Ð¾ÑделÑнÑм паÑамеÑÑом, enable_partition_pruning.)
Ðа дополниÑелÑнÑми ÑведениÑми о пÑименении иÑклÑÑений по огÑаниÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¾Ð±ÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 5.10.5.
cursor_tuple_fraction(floating point)ÐадаÑÑ Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика оÑÐµÐ½ÐºÑ Ð¿ÑоÑенÑа ÑÑÑок, коÑоÑÑе бÑдÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ ÑеÑез кÑÑÑоÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.1 (10%). ÐÑи менÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик бÑÐ´ÐµÑ Ñклонен иÑполÑзоваÑÑ Ð´Ð»Ñ ÐºÑÑÑоÑов Ð¿Ð»Ð°Ð½Ñ Ñ Â«Ð±ÑÑÑÑÑм ÑÑаÑÑом», позволÑÑÑие полÑÑаÑÑ Ð¿ÐµÑвÑе неÑколÑко ÑÑÑок оÑÐµÐ½Ñ Ð±ÑÑÑÑо, Ñ Ð¾ÑÑ Ð´Ð»Ñ Ð²ÑбоÑки вÑÐµÑ ÑÑÑок Ð¼Ð¾Ð¶ÐµÑ ÑйÑи болÑÑе вÑемени. ÐÑи болÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик ÑÑÑемиÑÑÑ Ð¾Ð¿ÑимизиÑоваÑÑ Ð¾Ð±Ñее вÑÐµÐ¼Ñ Ð·Ð°Ð¿ÑоÑа. ÐÑи макÑималÑном знаÑении, Ñавном 1.0, ÑабоÑа Ñ ÐºÑÑÑоÑами планиÑÑеÑÑÑ Ñак же, как и обÑÑнÑе запÑоÑÑ â минимизиÑÑеÑÑÑ ÑолÑко обÑее вÑемÑ, а не вÑÐµÐ¼Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿ÐµÑвÑÑ ÑÑÑок.
from_collapse_limit(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑлеменÑов в ÑпиÑке
FROM, до коÑоÑого планиÑовÑик бÑÐ´ÐµÑ Ð¾Ð±ÑединÑÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñе запÑоÑÑ Ñ Ð²Ð½ÐµÑним запÑоÑом. ÐÑи менÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ ÑокÑаÑаеÑÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑованиÑ, но план запÑоÑа Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ Ð¼ÐµÐ½ÐµÐµ ÑÑÑекÑивнÑм. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо знаÑение Ñавно воÑÑми. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº РазделÑ 14.3.ÐÑли ÑÑо знаÑение ÑделаÑÑ ÑавнÑм geqo_threshold или болÑÑе, пÑи Ñаком обÑединении запÑоÑов Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑиÑÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик GEQO и в ÑезÑлÑÑаÑе бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен неопÑималÑнÑй план. См. ÐодÑаздел 18.7.3.
jit(boolean)ÐпÑеделÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ Postgres Pro иÑполÑзоваÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑÐ¸Ñ JIT, еÑли она поддеÑживаеÑÑÑ (Ñм. ÐлавÑ 31). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ вÑклÑÑен (
off).join_collapse_limit(integer)ÐадаÑÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво ÑлеменÑов в ÑпиÑке
FROM, до доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑого планиÑовÑик бÑÐ´ÐµÑ ÑноÑиÑÑ Ð² него ÑвнÑе конÑÑÑÑкÑииJOIN(за иÑклÑÑениемFULL JOIN). ÐÑи менÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ ÑокÑаÑаеÑÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑованиÑ, но план запÑоÑа Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ Ð¼ÐµÐ½ÐµÐµ ÑÑÑекÑивнÑм.Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑа пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð¼ÐµÐµÑ Ñо же знаÑение, ÑÑо и
from_collapse_limit, и ÑÑо пÑиемлемо в болÑÑинÑÑве ÑлÑÑаев. ÐÑи знаÑении, Ñавном 1, пÑедложениÑJOINпеÑеÑÑавлÑÑÑÑÑ Ð½Ðµ бÑдÑÑ, Ñак ÑÑо Ñвно заданнÑй в запÑоÑе поÑÑдок Ñоединений опÑÐµÐ´ÐµÐ»Ð¸Ñ ÑакÑиÑеÑкий поÑÑдок, в коÑоÑом бÑдÑÑ ÑоединÑÑÑÑÑ Ð¾ÑноÑениÑ. Так как планиÑовÑик не вÑегда вÑбиÑÐ°ÐµÑ Ð¾Ð¿ÑималÑнÑй поÑÑдок Ñоединений, опÑÑнÑе полÑзоваÑели могÑÑ Ð²Ñеменно задаÑÑ Ð´Ð»Ñ ÑÑой пеÑеменной знаÑение 1, а заÑем Ñвно опÑеделиÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ñй поÑÑдок. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº РазделÑ 14.3.ÐÑли ÑÑо знаÑение ÑделаÑÑ ÑавнÑм geqo_threshold или болÑÑе, пÑи Ñаком обÑединении запÑоÑов Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑиÑÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик GEQO и в ÑезÑлÑÑаÑе бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен неопÑималÑнÑй план. См. ÐодÑаздел 18.7.3.
parallel_leader_participation(boolean)ÐозволÑÐµÑ Ð²ÐµÐ´ÑÑÐµÐ¼Ñ Ð¿ÑоÑеÑÑÑ Ð²ÑполнÑÑÑ Ð¿Ð»Ð°Ð½ запÑоÑа ниже Ñзлов
GatherиGather Merge, не Ð¾Ð¶Ð¸Ð´Ð°Ñ ÑабоÑие пÑоÑеÑÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн (on). ÐнаÑениеoffÑÐ½Ð¸Ð¶Ð°ÐµÑ Ð²ÐµÑоÑÑноÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов в ÑлÑÑае, еÑли ведÑÑий пÑоÑеÑÑ Ð±ÑÐ´ÐµÑ ÑиÑаÑÑ ÐºÐ¾ÑÑежи недоÑÑаÑоÑно бÑÑÑÑо, но Ñогда ведÑÑÐµÐ¼Ñ Ð¿ÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑÑ Ð´Ð¾Ð¶Ð¸Ð´Ð°ÑÑÑÑ Ð·Ð°Ð¿ÑÑка ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, и ÑолÑко заÑем вÑдаваÑÑ Ð¿ÐµÑвÑе коÑÑежи. СÑÐµÐ¿ÐµÐ½Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑного или оÑÑиÑаÑелÑного влиÑÐ½Ð¸Ñ Ð²ÐµÐ´ÑÑего завиÑÐ¸Ñ Ð¾Ñ Ñипа плана, ÑиÑла ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов и длиÑелÑноÑÑи запÑоÑа.force_parallel_mode(enum)ÐозволÑÐµÑ ÑаÑпаÑаллеливаÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð² ÑелÑÑ ÑеÑÑиÑованиÑ, даже когда Ð¾Ñ ÑÑого не ожидаеÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ вÑигÑÑÑа в ÑкоÑоÑÑи. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа
force_parallel_modeâoff(иÑполÑзоваÑÑ Ð¿Ð°ÑаллелÑнÑй Ñежим ÑолÑко когда ожидаеÑÑÑ ÑвелиÑение пÑоизводиÑелÑноÑÑи),on(пÑинÑдиÑелÑно ÑаÑпаÑаллеливаÑÑ Ð²Ñе запÑоÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ ÑÑо безопаÑно) иregress(какon, но Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑми изменениÑми поведениÑ, опиÑаннÑми ниже).ÐовоÑÑ ÑоÑнее, Ñо знаÑением
onÑзелGatherдобавлÑеÑÑÑ Ð² веÑÑÐ¸Ð½Ñ Ð»Ñбого плана запÑоÑа, Ð´Ð»Ñ ÐºÐ¾ÑоÑого допÑÑкаеÑÑÑ ÑаÑпаÑаллеливание, Ñак ÑÑо запÑÐ¾Ñ Ð²ÑполнÑеÑÑÑ Ð²Ð½ÑÑÑи паÑаллелÑного иÑполниÑелÑ. Ðаже когда паÑаллелÑнÑй иÑполниÑÐµÐ»Ñ Ð½ÐµÐ´Ð¾ÑÑÑпен или не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован, Ñакие опеÑаÑии, как запÑÑк подÑÑанзакÑии, коÑоÑÑе не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑполнÑÑÑÑÑ Ð² конÑекÑÑе паÑаллелÑного запÑоÑа, не бÑдÑÑ Ð²ÑполнÑÑÑÑÑ Ð² ÑÑом Ñежиме, еÑли ÑолÑко планиÑовÑик не ÑеÑиÑ, ÑÑо ÑÑо пÑиведÑÑ Ðº оÑибке запÑоÑа. ÐÑли пÑи вклÑÑении ÑÑого паÑамеÑÑа возникаÑÑ Ð¾Ñибки или вÑдаÑÑÑÑ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñе ÑезÑлÑÑаÑÑ, веÑоÑÑно, некоÑоÑÑе ÑÑнкÑии, задейÑÑвованнÑе в ÑÑом запÑоÑе, нÑжно помеÑиÑÑ ÐºÐ°ÐºPARALLEL UNSAFE(или, возможно,PARALLEL RESTRICTED).ÐнаÑение
regressдейÑÑвÑÐµÑ Ñак же, как и знаÑениеon, Ñ Ð½ÐµÐºÐ¾ÑоÑÑми дополниÑелÑнÑми оÑобенноÑÑÑми, пÑедназнаÑеннÑми Ð´Ð»Ñ Ð¾Ð±Ð»ÐµÐ³ÑÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑкого ÑегÑеÑÑионного ÑеÑÑиÑованиÑ. ÐбÑÑно ÑообÑÐµÐ½Ð¸Ñ Ð¾Ñ Ð¿Ð°ÑаллелÑнÑÑ Ð¸ÑполниÑелей вклÑÑаÑÑ ÑÑÑÐ¾ÐºÑ ÐºÐ¾Ð½ÑекÑÑа, оÑмеÑаÑÑÑÑ ÑÑо, но знаÑениеregressподавлÑÐµÑ ÑÑÑ ÑÑÑокÑ, Ñак ÑÑо вÑвод не оÑлиÑаеÑÑÑ Ð¾Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð² не паÑаллелÑном Ñежиме. ÐÑоме Ñого, ÑзлÑGather, добавлÑемÑе в Ð¿Ð»Ð°Ð½Ñ Ñ ÑÑим знаÑением паÑамеÑÑа, ÑкÑÑваÑÑÑÑ Ð² вÑводеEXPLAIN, ÑÑÐ¾Ð±Ñ Ð²Ñвод ÑооÑвеÑÑÑвовал ÑомÑ, ÑÑо бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен пÑи оÑклÑÑении ÑÑого паÑамеÑÑа (Ñо знаÑениемoff).enable_appendorpath(boolean)ÐозволÑÐµÑ Ð¿ÑименÑÑÑ Ð¿Ð»Ð°Ð½
AppendÐ´Ð»Ñ Ð¿ÑедложенийOR. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÐµÑ ÐµÑÑ Ð¾Ð´Ð½Ñ ÑÑÑаÑÐµÐ³Ð¸Ñ Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑоÑа â пÑименение планаAppendÐ´Ð»Ñ Ð²ÑÑажений, ÑодеÑжаÑÐ¸Ñ Ð¿ÑедложениÑOR. ÐÑÐ¾Ñ Ð¿Ð»Ð°Ð½ бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑиложениÑми Ñ Ð°Ð²ÑомаÑиÑеÑки генеÑиÑÑемÑми запÑоÑами.