59.3. ÐенеÑиÑеÑÐºÐ°Ñ Ð¾Ð¿ÑимизаÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑов (GEQO) в Postgres Pro #
ÐодÑÐ»Ñ GEQO (Genetic Query Optimization, ÐенеÑиÑеÑÐºÐ°Ñ Ð¾Ð¿ÑимизаÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑов) Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð¸Ñ Ðº пÑоблеме опÑимизаÑии запÑоÑа как к Ñ Ð¾ÑоÑо извеÑÑной задаÑе коммивоÑжÑÑа (TSP, Traveling Salesman Problem). ÐозможнÑе Ð¿Ð»Ð°Ð½Ñ Ð·Ð°Ð¿ÑоÑа кодиÑÑÑÑÑÑ ÑиÑлами в ÑÑÑоковом виде. ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока пÑедÑÑавлÑÐµÑ Ð¿Ð¾ÑÑдок ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ð¸Ð· запÑоÑа Ñо ÑледÑÑÑим. ÐапÑимеÑ, деÑево ÑоединениÑ
/\ /\ 2 /\ 3 4 1
кодиÑÑеÑÑÑ ÑÑÑокой ÑелÑÑ ÑиÑел '4-1-3-2', коÑоÑÐ°Ñ Ð¾Ð·Ð½Ð°ÑаеÑ: ÑнаÑала ÑоединиÑÑ Ð¾ÑноÑÐµÐ½Ð¸Ñ '4' и '1', поÑом добавиÑÑ '3', а заÑем '2', где 1, 2, 3, 4 â иденÑиÑикаÑоÑÑ Ð¾ÑноÑений внÑÑÑи опÑимизаÑоÑа Postgres Pro.
РеализаÑÐ¸Ñ GEQO в Postgres Pro Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑие оÑобÑе Ñ Ð°ÑакÑеÑиÑÑики:
ÐÑполÑзование ÐÐ Ñ Ð·Ð°ÑикÑиÑованнÑм ÑоÑÑоÑнием (когда заменÑÑÑÑÑ Ð½Ð°Ð¸Ð¼ÐµÐ½ÐµÐµ пÑиÑпоÑобленнÑе оÑоби попÑлÑÑии, а не вÑÑ Ð¿Ð¾ÐºÐ¾Ð»ÐµÐ½Ð¸Ðµ) ÑпоÑобÑÑвÑÐµÑ Ð±ÑÑÑÑой ÑÑ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи к ÑлÑÑÑеннÑм планам запÑоÑа. ÐÑо важно Ð´Ð»Ñ Ð¾Ð±ÑабоÑки запÑоÑа за пÑиемлемое вÑемÑ;
ÐÑполÑзование ÑкÑеÑÐ¸Ð²Ð°Ð½Ð¸Ñ Ñ Ð¾Ð±Ð¼ÐµÐ½Ð¾Ð¼ ÑÑбеÑ, коÑоÑое оÑÐµÐ½Ñ ÑдаÑно минимизиÑÑÐµÑ ÑиÑло поÑеÑÑннÑÑ ÑÑÐ±ÐµÑ Ð¿Ñи ÑеÑении задаÑи коммивоÑжÑÑа Ñ Ð¿Ñименением ÐÐ;
ÐÑÑаÑÐ¸Ñ ÐºÐ°Ðº генеÑиÑеÑкий опеÑаÑÐ¾Ñ ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑей, Ñак ÑÑо Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿ÑÑÑимÑÑ Ð¿ÑÑей TSP не ÑÑебÑÑÑÑÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ñ Ð¸ÑпÑавлениÑ.
ЧаÑÑи модÑÐ»Ñ GEQO взÑÑÑ Ð¸Ð· алгоÑиÑма Genitor, ÑазÑабоÑанного Ð. УиÑли.
Ð ÑезÑлÑÑаÑе, модÑÐ»Ñ GEQO позволÑÐµÑ Ð¾Ð¿ÑимизаÑоÑÑ Ð·Ð°Ð¿ÑоÑов Postgres Pro ÑÑÑекÑивно вÑполнÑÑÑ Ð·Ð°Ð¿ÑоÑÑ Ñо множеÑÑвом Ñоединений, Ð¾Ð±Ñ Ð¾Ð´ÑÑÑ Ð±ÐµÐ· полного пеÑебоÑа ваÑианÑов.
59.3.1. ÐоÑÑÑоение возможнÑÑ Ð¿Ð»Ð°Ð½Ð¾Ð² Ñ GEQO #
РпÑоÑедÑÑе планиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² GEQO иÑполÑзÑеÑÑÑ ÐºÐ¾Ð´ ÑÑандаÑÑного планиÑовÑика, коÑоÑÑй ÑÑÑÐ¾Ð¸Ñ Ð¿Ð»Ð°Ð½Ñ ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑделÑнÑÑ Ð¾ÑноÑений. ÐаÑем вÑÑабаÑÑваÑÑÑÑ Ð¿Ð»Ð°Ð½Ñ Ñоединений Ñ Ð¿Ñименением генеÑиÑеÑкого Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð°. Ðак бÑло Ñказано вÑÑе, каждÑй план ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿ÑедÑÑавлÑеÑÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑÑ ÑиÑел, опÑеделÑÑÑей поÑÑдок Ñоединений базовÑÑ Ð¾ÑноÑений. Ðа наÑалÑной ÑÑадии код GEQO пÑоÑÑо ÑлÑÑайнÑм обÑазом генеÑиÑÑÐµÑ Ð½ÐµÑколÑко возможнÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑей. ÐаÑем Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑаÑÑмаÑÑиваемой поÑледоваÑелÑноÑÑи вÑзÑваеÑÑÑ ÑÑнкÑÐ¸Ñ ÑÑандаÑÑного планиÑовÑика, оÑениваÑÑÐ°Ñ ÑÑоимоÑÑÑ Ð·Ð°Ð¿ÑоÑа в ÑлÑÑае вÑбоÑа ÑÑого поÑÑдка Ñоединений. (ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñага поÑледоваÑелÑноÑÑи ÑаÑÑмаÑÑиваÑÑÑÑ Ð²Ñе ÑÑи возможнÑе ÑÑÑаÑегии ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸ вÑе изнаÑалÑно вÑбÑаннÑе Ð¿Ð»Ð°Ð½Ñ ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑноÑений. РезÑлÑÑиÑÑÑÑей оÑенкой ÑÑоимоÑÑи бÑÐ´ÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑÐ½Ð°Ñ Ð¸Ð· вÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½ÑÑ .) ÐоÑледоваÑелÑноÑÑи Ñоединений Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÑÑей оÑенкой ÑÑоимоÑÑи ÑÑиÑаÑÑÑÑ Â«Ð±Ð¾Ð»ÐµÐµ пÑиÑпоÑобленнÑми», Ñем поÑледоваÑелÑноÑÑи Ñ Ð±Ð¾Ð»ÑÑей оÑенкой. ÐÑоанализиÑовав возможнÑе поÑледоваÑелÑноÑÑи, генеÑиÑеÑкий алгоÑиÑм оÑбÑаÑÑÐ²Ð°ÐµÑ Ð½Ð°Ð¸Ð¼ÐµÐ½ÐµÐµ пÑиÑпоÑобленнÑе из Ð½Ð¸Ñ . ÐаÑем генеÑиÑÑÑÑÑÑ Ð½Ð¾Ð²Ñе кандидаÑÑ Ð¿ÑÑÑм обÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð³ÐµÐ½Ð¾Ð² более пÑиÑпоÑобленнÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑей â Ð´Ð»Ñ ÑÑого вÑбиÑаÑÑÑÑ ÑлÑÑайнÑе ÑÑагменÑÑ Ð¸Ð·Ð²ÐµÑÑнÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑей Ñ Ð½Ð¸Ð·ÐºÐ¾Ð¹ ÑÑоимоÑÑÑÑ, из коÑоÑÑÑ ÑкладÑваÑÑÑÑ Ð½Ð¾Ð²Ñе поÑледоваÑелÑноÑÑи Ð´Ð»Ñ ÑаÑÑмоÑÑениÑ. ÐÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð¿Ð¾Ð²ÑоÑÑеÑÑÑ, пока не бÑÐ´ÐµÑ ÑаÑÑмоÑÑено некоÑоÑое пÑедопÑеделÑнное колиÑеÑÑво поÑледоваÑелÑноÑÑей Ñоединений; поÑле ÑÑого Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¾ÐºÐ¾Ð½ÑаÑелÑного плана вÑбиÑаеÑÑÑ Ð»ÑÑÑÐ°Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ, Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ð°Ñ Ð·Ð° вÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка.
ÐÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð¿Ð¾ пÑиÑоде Ñвоей недеÑеÑминиÑован, вÑледÑÑвие ÑлÑÑайного вÑбоÑа пÑи ÑоÑмиÑовании наÑалÑной попÑлÑÑии и поÑледÑÑÑей «мÑÑаÑии» лÑÑÑиÑ
кандидаÑов. Ðо во избежание неожиданнÑÑ
изменений вÑбÑанного плана, на каждом пÑоÑ
оде алгоÑиÑм GEQO пеÑезапÑÑÐºÐ°ÐµÑ Ñвой генеÑаÑÐ¾Ñ ÑлÑÑайнÑÑ
ÑиÑел Ñ ÑекÑÑим знаÑением паÑамеÑÑа geqo_seed. ÐоÑÑÐ¾Ð¼Ñ Ð¿Ð¾ÐºÐ° знаÑение geqo_seed и дÑÑгие паÑамеÑÑÑ GEQO оÑÑаÑÑÑÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½Ð½Ñми, Ð´Ð»Ñ Ð¾Ð¿ÑеделÑнного запÑоÑа (и дÑÑгиÑ
вÑ
однÑÑ
даннÑÑ
планиÑовÑика, в ÑаÑÑноÑÑи, ÑÑаÑиÑÑики) бÑÐ´ÐµÑ ÑÑÑоиÑÑÑÑ Ð¾Ð´Ð¸Ð½ и ÑÐ¾Ñ Ð¶Ðµ план. ÐÑли Ð²Ñ Ñ
оÑиÑе поÑкÑпеÑименÑиÑоваÑÑ Ñ ÑазнÑми пÑÑÑми Ñоединений, попÑобÑйÑе измениÑÑ geqo_seed.
59.3.2. ÐÑдÑÑее ÑазвиÑие модÑÐ»Ñ PostgreSQL GEQO #
ТÑебÑеÑÑÑ Ð¿ÑовеÑÑи дополниÑелÑнÑÑ ÑабоÑÑ Ð´Ð»Ñ Ð²ÑбоÑа опÑималÑнÑÑ Ð¿Ð°ÑамеÑÑов генеÑиÑеÑкого алгоÑиÑма. ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð½Ð°Ð¹Ñи компÑомиÑÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов, ÑдовлеÑвоÑÑÑÑие двÑм неÑовмеÑÑимÑм ÑÑебованиÑм:
ÐпÑималÑноÑÑÑ Ð¿Ð»Ð°Ð½Ð° запÑоÑа
ÐÑÐµÐ¼Ñ Ð²ÑÑиÑлениÑ
Ð ÑекÑÑей ÑеализаÑии пÑиÑпоÑобленноÑÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑаÑÑмаÑÑиваемой поÑледоваÑелÑноÑÑи Ñоединений ÑаÑÑÑиÑÑваеÑÑÑ ÑÑандаÑÑнÑм планиÑовÑиком, коÑоÑÑй каждÑй Ñаз вÑÑиÑлÑÐµÑ Ð¸Ð·Ð±Ð¸ÑаÑелÑноÑÑÑ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸ ÑÑоимоÑÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾. С ÑÑÑÑом Ñого, ÑÑо ÑазлиÑнÑе кандидаÑÑ Ð¼Ð¾Ð³ÑÑ ÑодеÑжаÑÑ Ð¾Ð±Ñие подпоÑледоваÑелÑноÑÑи Ñоединений, пÑи ÑÑом бÑÐ´ÐµÑ Ð¿Ð¾Ð²ÑоÑÑÑÑÑÑ Ð±Ð¾Ð»ÑÑой обÑÑм ÑабоÑÑ. Таким обÑазом, ÑаÑÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ знаÑиÑелÑно ÑÑкоÑиÑÑ, ÑÐ¾Ñ ÑанÑÑ Ð¾Ñенки ÑÑоимоÑÑи Ð´Ð»Ñ Ð²Ð½ÑÑÑÐµÐ½Ð½Ð¸Ñ Ñоединений, но ÑложноÑÑÑ ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑÐ¾Ð±Ñ ÑмеÑÑиÑÑ ÑÑо ÑоÑÑоÑние в ÑазÑмнÑе обÑÑÐ¼Ñ Ð¿Ð°Ð¼ÑÑи.
Ðа более обÑем ÑÑовне не вполне понÑÑно, наÑколÑко ÑмеÑÑно Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑии запÑоÑов иÑполÑзоваÑÑ ÐÐ, пÑедназнаÑеннÑй Ð´Ð»Ñ ÑеÑÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ñи коммивоÑжÑÑа. Ð ÑÑой задаÑе ÑÑоимоÑÑÑ, ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ Ð»Ñбой подÑÑÑокой (ÑаÑÑÑÑ ÑÑÑа) не завиÑÐ¸Ñ Ð¾Ñ Ð¾ÑÑалÑного маÑÑÑÑÑа, но ÑÑо опÑеделÑнно не Ñак Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑии запÑоÑов. Таким обÑазом, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð²Ð¾Ð¿ÑоÑ, наÑколÑко ÑÑÑекÑивно ÑкÑеÑивание пÑÑÑм обмена ÑÑбÑами.