60.3. РаÑÑиÑÑемоÑÑÑ
ÐнÑеÑÑÐµÐ¹Ñ BRIN Ñ Ð°ÑакÑеÑизÑеÑÑÑ Ð²ÑÑоким ÑÑовнем абÑÑÑакÑии и Ñаким обÑазом ÑÑебÑÐµÑ Ð¾Ñ ÑазÑабоÑÑика меÑода доÑÑÑпа ÑеализоваÑÑ ÑолÑко ÑмÑÑловое наполнение обÑабаÑÑваемого Ñипа даннÑÑ . УÑÐ¾Ð²ÐµÐ½Ñ BRIN беÑÑÑ Ð½Ð° ÑÐµÐ±Ñ Ð·Ð°Ð±Ð¾ÑÑ Ð¾ паÑаллелÑном доÑÑÑпе, поддеÑжке жÑÑнала и поиÑке в ÑÑÑÑкÑÑÑе индекÑа.
ÐÑÑ, ÑÑо нÑжно, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ ÑабоÑаÑÑий меÑод доÑÑÑпа BRIN â ÑÑо ÑеализоваÑÑ Ð½ÐµÑколÑко полÑзоваÑелÑÑÐºÐ¸Ñ Ð¼ÐµÑодов, опÑеделÑÑÑÐ¸Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑводнÑÑ Ð·Ð½Ð°Ñений, Ñ ÑанÑÑÐ¸Ñ ÑÑ Ð² индекÑе, и Ð¸Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð¾ÑноÑÐµÐ½Ð¸Ñ Ñ ÐºÐ»ÑÑами ÑканиÑованиÑ. Словом, BRIN ÑоÑеÑÐ°ÐµÑ ÑаÑÑиÑÑемоÑÑÑ Ñ ÑнивеÑÑалÑноÑÑÑÑ, повÑоÑнÑм иÑполÑзованием кода и аккÑÑаÑнÑм инÑеÑÑейÑом.
ÐлаÑÑ Ð¾Ð¿ÐµÑаÑоÑов Ð´Ð»Ñ BRIN должен пÑедоÑÑавлÑÑÑ ÑеÑÑÑе меÑода:
BrinOpcInfo *opcInfo(Oid type_oid)ÐозвÑаÑÐ°ÐµÑ Ð²Ð½ÑÑÑеннÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑводнÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð½Ð´ÐµÐºÑиÑованнÑÑ ÑÑолбÑов. ÐозвÑаÑаемое знаÑение должно ÑказÑваÑÑ Ð½Ð°
BrinOpcInfo(в памÑÑи palloc) Ñо ÑледÑÑÑим опÑеделением:typedef struct BrinOpcInfo { /* ЧиÑло полей, Ñ ÑанÑÑÐ¸Ñ ÑÑ Ð² ÑÑолбÑе индекÑа ÑÑого клаÑÑа опеÑаÑоÑов */ uint16 oi_nstored; /* ÐепÑозÑаÑнÑй ÑказаÑÐµÐ»Ñ Ð´Ð»Ñ Ð²Ð½ÑÑÑеннего иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»Ð°ÑÑом опеÑаÑоÑов */ void *oi_opaque; /* ÐлеменÑÑ ÐºÐµÑа Ñипов Ð´Ð»Ñ ÑÐ¾Ñ ÑанÑннÑÑ ÑÑолбÑов */ TypeCacheEntry *oi_typcache[FLEXIBLE_ARRAY_MEMBER]; } BrinOpcInfo;Ðоле
BrinOpcInfo.oi_opaqueмогÑÑ Ð¸ÑполÑзоваÑÑ Ð¿Ð¾Ð´Ð¿ÑогÑÐ°Ð¼Ð¼Ñ ÐºÐ»Ð°ÑÑа опеÑаÑоÑов Ð´Ð»Ñ Ð¿ÐµÑедаÑи инÑоÑмаÑии опоÑнÑм пÑоÑедÑÑам пÑи ÑканиÑовании индекÑа.bool consistent(BrinDesc *bdesc, BrinValues *column, ScanKey key)ÐоказÑваеÑ, ÑооÑвеÑÑÑвÑÐµÑ Ð»Ð¸ знаÑение ScanKey заданнÑм индекÑиÑованнÑм знаÑениÑм некоÑоÑой зонÑ. ÐÐ¾Ð¼ÐµÑ Ñелевого аÑÑибÑÑа пеÑедаÑÑÑÑ Ð² ÑоÑÑаве клÑÑа ÑканиÑованиÑ.
bool addValue(BrinDesc *bdesc, BrinValues *column, Datum newval, bool isnull)ÐÐ»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ коÑÑежа индекÑа и индекÑиÑÑемого знаÑÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÐµÑ Ð²ÑбÑаннÑй аÑÑибÑÑ ÐºÐ¾ÑÑежа, ÑÑÐ¾Ð±Ñ Ð¾Ð½ дополниÑелÑно Ð¾Ñ Ð²Ð°ÑÑвал новое знаÑение. ÐÑли в коÑÑеж вноÑÑÑÑÑ ÐºÐ°ÐºÐ¸Ðµ-либо изменениÑ, возвÑаÑаеÑÑÑ
true.bool unionTuples(BrinDesc *bdesc, BrinValues *a, BrinValues *b)ÐонÑолидиÑÑÐµÑ Ð´Ð²Ð° коÑÑежа индекÑа. ÐолÑÑÐ°Ñ Ð´Ð²Ð° коÑÑежа, изменÑÐµÑ Ð²ÑбÑаннÑй аÑÑибÑÑ Ð¿ÐµÑвого из Ð½Ð¸Ñ , ÑÑо он Ð¾Ñ Ð²Ð°ÑÑвал оба коÑÑежа. ÐÑоÑой коÑÑеж не изменÑеÑÑÑ.
ÐÑновной диÑÑÑибÑÑив вклÑÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð´Ð²ÑÑ Ñипов клаÑÑов опеÑаÑоÑов: minmax и inclusion. ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑов опеÑаÑоÑов, иÑполÑзÑÑÑие Ð¸Ñ , пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð´Ð»Ñ Ð²ÑÑÑоеннÑÑ Ñипов даннÑÑ , наÑколÑко ÑÑо ÑмеÑÑно. ÐолÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÑеделиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе клаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ñипов даннÑÑ , пÑименÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑнÑе опÑеделениÑ, и обойÑиÑÑ Ñаким обÑазом без напиÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð°; доÑÑаÑоÑно бÑÐ´ÐµÑ Ð¾Ð±ÑÑвиÑÑ Ð½ÑжнÑе запиÑи в каÑалоге. ÐамеÑÑÑе, ÑÑо пÑÐµÐ´Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾ ÑеманÑике ÑÑÑаÑегий опеÑаÑоÑов заÑиÑÑ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ð¼ коде опоÑнÑÑ Ð¿ÑоÑедÑÑ.
Также возможно ÑоздаÑÑ ÐºÐ»Ð°ÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов, воплоÑаÑÑие полноÑÑÑÑ Ð´ÑÑгÑÑ ÑеманÑикÑ, ÑазÑабоÑав ÑеализаÑии ÑеÑÑÑÑÑ Ð¾ÑновнÑÑ Ð¾Ð¿Ð¾ÑнÑÑ Ð¿ÑоÑедÑÑ, опиÑаннÑÑ Ð²ÑÑе. ÐамеÑÑÑе, ÑÑо обÑаÑÐ½Ð°Ñ ÑовмеÑÑимоÑÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑазнÑми оÑновнÑми веÑÑиÑми не гаÑанÑиÑÑеÑÑÑ: к пÑимеÑÑ, в ÑледÑÑÑÐ¸Ñ Ð²ÑпÑÑÐºÐ°Ñ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе опоÑнÑе пÑоÑедÑÑÑ.
ÐÑи напиÑании клаÑÑа опеÑаÑоÑов Ð´Ð»Ñ Ñипа даннÑÑ , пÑедÑÑавлÑÑÑего полноÑÑÑÑ ÑпоÑÑдоÑенное множеÑÑво, можно иÑполÑзоваÑÑ Ð¾Ð¿Ð¾ÑнÑе пÑоÑедÑÑÑ minmax вмеÑÑе Ñ ÑооÑвеÑÑÑвÑÑÑими опеÑаÑоÑами, как показано в ТаблиÑе 60.2. ÐÑе ÑÐ»ÐµÐ½Ñ ÐºÐ»Ð°ÑÑа опеÑаÑоÑов (пÑоÑедÑÑÑ Ð¸ опеÑаÑоÑÑ) ÑвлÑÑÑÑÑ Ð¾Ð±ÑзаÑелÑнÑми.
ТаблиÑа 60.2. ÐомеÑа ÑÑÑаÑегий и опоÑнÑÑ Ð¿ÑоÑедÑÑ Ð´Ð»Ñ ÐºÐ»Ð°ÑÑов опеÑаÑоÑов minmax
| Член клаÑÑа опеÑаÑоÑов | ÐбÑÐµÐºÑ |
|---|---|
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 1 | внÑÑÑеннÑÑ ÑÑнкÑÐ¸Ñ brin_minmax_opcinfo() |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 2 | внÑÑÑеннÑÑ ÑÑнкÑÐ¸Ñ brin_minmax_add_value() |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 3 | внÑÑÑеннÑÑ ÑÑнкÑÐ¸Ñ brin_minmax_consistent() |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 4 | внÑÑÑеннÑÑ ÑÑнкÑÐ¸Ñ brin_minmax_union() |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 1 | опеÑаÑÐ¾Ñ Ð¼ÐµÐ½ÑÑе |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 2 | опеÑаÑÐ¾Ñ Ð¼ÐµÐ½ÑÑе-или-Ñавно |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 3 | опеÑаÑÐ¾Ñ Ñавно |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 4 | опеÑаÑÐ¾Ñ Ð±Ð¾Ð»ÑÑе-или-Ñавно |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 5 | опеÑаÑÐ¾Ñ Ð±Ð¾Ð»ÑÑе |
ÐÑи напиÑании клаÑÑа опеÑаÑоÑов Ð´Ð»Ñ Ñложного Ñипа даннÑÑ , знаÑÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑого вклÑÑаÑÑÑÑ Ð² дÑÑгой Ñип, можно иÑполÑзоваÑÑ Ð¾Ð¿Ð¾ÑнÑе пÑоÑедÑÑÑ inclusion вмеÑÑе Ñ ÑооÑвеÑÑÑвÑÑÑими опеÑаÑоÑами, как показано в ТаблиÑе 60.3. ÐÐ»Ñ ÑÑого ÑÑебÑеÑÑÑ Ð¾Ð´Ð½Ð° дополниÑелÑÐ½Ð°Ñ ÑÑнкÑиÑ, коÑоÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ напиÑаÑÑ Ð½Ð° лÑбом ÑзÑке. ÐÐ»Ñ ÑаÑÑиÑенной ÑÑнкÑионалÑноÑÑи можно опÑеделиÑÑ Ð´ÑÑгие ÑÑнкÑии. ÐÑе опеÑаÑоÑÑ ÑвлÑÑÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑми. ÐекоÑоÑÑе из Ð½Ð¸Ñ ÑÑебÑÐµÑ Ð½Ð°Ð»Ð¸ÑÐ¸Ñ Ð´ÑÑÐ³Ð¸Ñ , ÑÑо показано в ÑаблиÑе как завиÑимоÑÑи.
ТаблиÑа 60.3. ÐомеÑа ÑÑÑаÑегий и опоÑнÑÑ Ð¿ÑоÑедÑÑ Ð´Ð»Ñ ÐºÐ»Ð°ÑÑов опеÑаÑоÑов inclusion
| Член клаÑÑа опеÑаÑоÑов | ÐбÑÐµÐºÑ | ÐавиÑимоÑÑÑ |
|---|---|---|
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 1 | внÑÑÑеннÑÑ ÑÑнкÑÐ¸Ñ brin_inclusion_opcinfo() |  |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 2 | внÑÑÑеннÑÑ ÑÑнкÑÐ¸Ñ brin_inclusion_add_value() |  |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 3 | внÑÑÑеннÑÑ ÑÑнкÑÐ¸Ñ brin_inclusion_consistent() |  |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 4 | внÑÑÑеннÑÑ ÑÑнкÑÐ¸Ñ brin_inclusion_union() |  |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 11 | ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ ÑлиÑÐ½Ð¸Ñ Ð´Ð²ÑÑ ÑлеменÑов |  |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 12 | необÑзаÑелÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¿ÑовеÑки возможноÑÑи ÑлиÑÐ½Ð¸Ñ Ð´Ð²ÑÑ ÑлеменÑов |  |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 13 | необÑзаÑелÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¿ÑовеÑки, ÑодеÑжиÑÑÑ Ð»Ð¸ один ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² дÑÑгом |  |
| ÐпоÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа 14 | необÑзаÑелÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¿ÑовеÑки, ÑвлÑеÑÑÑ Ð»Ð¸ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿ÑÑÑÑм |  |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 1 | опеÑаÑÐ¾Ñ Ð»ÐµÐ²ÐµÐµ | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 4 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 2 | опеÑаÑÐ¾Ñ Ð½Ðµ-пÑоÑÑиÑаеÑÑÑ-пÑавее | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 5 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 3 | опеÑаÑÐ¾Ñ Ð¿ÐµÑекÑÑваеÑÑÑ |  |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 4 | опеÑаÑÐ¾Ñ Ð½Ðµ-пÑоÑÑиÑаеÑÑÑ-левее | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 1 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 5 | опеÑаÑÐ¾Ñ Ð¿Ñавее | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 2 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 6, 18 | опеÑаÑÐ¾Ñ Ñо-же-или-Ñавно | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 7 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 7, 13, 16, 24, 25 | опеÑаÑÐ¾Ñ ÑодеÑжиÑ-или-Ñавно |  |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 8, 14, 26, 27 | опеÑаÑÐ¾Ñ ÑодеÑжиÑÑÑ-в-или-Ñавно | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 3 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 9 | опеÑаÑÐ¾Ñ Ð½Ðµ-пÑоÑÑиÑаеÑÑÑ-вÑÑе | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 11 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 10 | опеÑаÑÐ¾Ñ Ð½Ð¸Ð¶Ðµ | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 12 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 11 | опеÑаÑÐ¾Ñ Ð²ÑÑе | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 9 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 12 | опеÑаÑÐ¾Ñ Ð½Ðµ-пÑоÑÑиÑаеÑÑÑ-ниже | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 10 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 20 | опеÑаÑÐ¾Ñ Ð¼ÐµÐ½ÑÑе | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 5 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 21 | опеÑаÑÐ¾Ñ Ð¼ÐµÐ½ÑÑе-или-Ñавно | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 5 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 22 | опеÑаÑÐ¾Ñ Ð±Ð¾Ð»ÑÑе | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 1 |
| СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 23 | опеÑаÑÐ¾Ñ Ð±Ð¾Ð»ÑÑе-или-Ñавно | СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа 1 |
ÐомеÑа опоÑнÑÑ
пÑоÑедÑÑ 1-10 заÑезеÑвиÑÐ¾Ð²Ð°Ð½Ñ Ð´Ð»Ñ Ð²Ð½ÑÑÑенниÑ
ÑÑнкÑий BRIN, Ñак ÑÑо ÑÑнкÑии ÑÑÐ¾Ð²Ð½Ñ SQL наÑинаÑÑÑÑ Ñ Ð½Ð¾Ð¼ÐµÑа 11. ÐпоÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð½Ð¾Ð¼ÐµÑ 11 ÑвлÑеÑÑÑ Ð¾Ñновной, необÑ
одимой Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа. Ðна должна пÑинимаÑÑ Ð´Ð²Ð° аÑгÑменÑа Ñого же Ñипа даннÑÑ
, ÑÑо и Ñелевой Ñип клаÑÑа, и возвÑаÑаÑÑ Ð¸Ñ
обÑединение. ÐлаÑÑ Ð¾Ð¿ÐµÑаÑоÑов inclusion Ð¼Ð¾Ð¶ÐµÑ ÑоÑ
ÑанÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² ÑазлиÑнÑÑ
ÑипаÑ
даннÑÑ
, в завиÑимоÑÑи Ð¾Ñ Ð¿Ð°ÑамеÑÑа STORAGE. ÐозвÑаÑаемое ÑÑнкÑией обÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñение должно ÑооÑвеÑÑÑвоваÑÑ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
STORAGE.
ÐпоÑнÑе пÑоÑедÑÑÑ Ð¿Ð¾Ð´ номеÑами 12 и 14 пÑедоÑÑавлÑÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки неÑегÑлÑÑноÑÑей вÑÑÑоеннÑÑ Ñипов даннÑÑ . ÐÑоÑедÑÑа Ð½Ð¾Ð¼ÐµÑ 12 пÑименÑеÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки ÑабоÑÑ Ñ ÑеÑевÑми адÑеÑами из ÑазлиÑнÑÑ ÑемейÑÑв, коÑоÑÑе нелÑÐ·Ñ Ð¾Ð±ÑединÑÑÑ. ÐÑоÑедÑÑа Ð½Ð¾Ð¼ÐµÑ 14 пÑименÑеÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки зон Ñ Ð¿ÑÑÑÑми знаÑениÑми. ÐÑоÑедÑÑа Ð½Ð¾Ð¼ÐµÑ 13 ÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑной, но ÑекомендÑемой; она пÑовеÑÑÐµÑ Ð½Ð¾Ð²Ð¾Ðµ знаÑение, пÑежде Ñем оно бÑÐ´ÐµÑ Ð¿ÐµÑедано ÑÑнкÑии обÑединениÑ. Так как инÑÑаÑÑÑÑкÑÑÑа BRIN Ð¼Ð¾Ð¶ÐµÑ ÑопÑимизиÑоваÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе опеÑаÑии, когда обÑединение не менÑеÑÑÑ, Ñо пÑименÑÑ ÑÑÑ ÑÑнкÑиÑ, можно ÑвелиÑиÑÑ Ð±ÑÑÑÑодейÑÑвие индекÑа.
ÐлаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов minmax и inclusion поддеÑживаÑÑ Ð¾Ð¿ÐµÑаÑоÑÑ Ñ ÑазнÑми Ñипами, Ñ
оÑÑ Ñ Ð½Ð¸Ð¼Ð¸ завиÑимоÑÑи ÑÑановÑÑÑÑ Ð±Ð¾Ð»ÐµÐµ ÑложнÑми. ÐлаÑÑ minmax ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ Ð´Ð»Ñ Ð´Ð²ÑÑ
аÑгÑменÑов одного Ñипа опÑеделÑлÑÑ Ð¿Ð¾Ð»Ð½Ñй Ð½Ð°Ð±Ð¾Ñ Ð¾Ð¿ÐµÑаÑоÑов. ÐÑо позволÑÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
, опÑеделÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе набоÑÑ Ð¾Ð¿ÐµÑаÑоÑов. СÑÑаÑегии опеÑаÑоÑов клаÑÑа inclusion могÑÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ð´ÑÑгиÑ
ÑÑÑаÑегий, как показано в ТаблиÑе 60.3, или Ð¾Ñ ÑвоиÑ
ÑобÑÑвеннÑÑ
ÑÑÑаÑегий. ÐÐ»Ñ Ð½Ð¸Ñ
ÑÑебÑеÑÑÑ, ÑÑÐ¾Ð±Ñ Ð±Ñл опÑеделÑн необÑ
одимÑй опеÑаÑÐ¾Ñ Ñ Ñипом даннÑÑ
STORAGE Ð´Ð»Ñ Ð»ÐµÐ²Ð¾Ð³Ð¾ аÑгÑменÑа и дÑÑгим поддеÑживаемÑм Ñипом Ð´Ð»Ñ Ð¿Ñавого аÑгÑменÑа ÑеализÑемого опеÑаÑоÑа. См. опÑеделение float4_minmax_ops в каÑеÑÑве пÑимеÑа Ð´Ð»Ñ minmax и box_inclusion_ops в каÑеÑÑве пÑимеÑа Ð´Ð»Ñ inclusion.