60.1. Ðведение
BRIN ÑаÑÑиÑÑовÑваеÑÑÑ ÐºÐ°Ðº «Block Range Index» (ÐÐ½Ð´ÐµÐºÑ Ð·Ð¾Ð½ блоков). BRIN пÑедназнаÑаеÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки оÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ ÑаблиÑ, в коÑоÑÑÑ Ð¾Ð¿ÑеделÑннÑе ÑÑолбÑÑ Ð½ÐµÐºÐ¾ÑоÑÑм еÑÑеÑÑвеннÑм обÑазом коÑÑелиÑÑÑÑ Ñ Ð¸Ñ ÑизиÑеÑким ÑаÑположением в ÑаблиÑе. Ðоной блоков назÑваеÑÑÑ Ð³ÑÑппа ÑÑÑаниÑ, ÑизиÑеÑки ÑаÑположеннÑÑ Ð² ÑаблиÑе ÑÑдом; Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ð·Ð¾Ð½Ñ Ð² индекÑе ÑÐ¾Ñ ÑанÑеÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÐ°Ñ ÑÐ²Ð¾Ð´Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ. ÐапÑимеÑ, в ÑаблиÑе заказов магазина Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑÑÑ Ð¿Ð¾Ð»Ðµ Ñ Ð´Ð°Ñой Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°ÐºÐ°Ð·Ð°, и пÑакÑиÑеÑки вÑегда запиÑи более ÑÐ°Ð½Ð½Ð¸Ñ Ð·Ð°ÐºÐ°Ð·Ð¾Ð² и в ÑаблиÑе бÑдÑÑ ÑазмеÑÐµÐ½Ñ Ð±Ð»Ð¸Ð¶Ðµ к наÑалÑ; в ÑаблиÑе, ÑодеÑжаÑей ÑÑÐ¾Ð»Ð±ÐµÑ Ñ Ð¿Ð¾ÑÑовÑм индекÑом, Ñакже еÑÑеÑÑвеннÑм обÑазом могÑÑ Ð³ÑÑппиÑоваÑÑÑÑ Ð·Ð°Ð¿Ð¸Ñи по гоÑодам.
ÐндекÑÑ BRIN могÑÑ ÑдовлеÑвоÑÑÑÑ Ð·Ð°Ð¿ÑоÑÑ, вÑполнÑÑ Ð¾Ð±ÑÑное ÑканиÑование по биÑовой каÑÑе, и бÑдÑÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð²Ñе коÑÑежи во вÑÐµÑ ÑÑÑаниÑÐ°Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ зонÑ, еÑли ÑводнÑе даннÑе, ÑÐ¾Ñ ÑанÑннÑе в индекÑе, ÑооÑвеÑÑÑвÑÑÑ ÑÑловиÑм запÑоÑа. ÐÑполниÑÐµÐ»Ñ Ð·Ð°Ð¿ÑоÑа должен пеÑепÑовеÑиÑÑ ÑÑи коÑÑежи и оÑбÑоÑиÑÑ Ñе, ÑÑо не ÑооÑвеÑÑÑвÑÑÑ ÑÑловиÑм запÑоÑа â дÑÑгими Ñловами, ÑÑи индекÑÑ Ð½ÐµÑоÑнÑе. Так как Ð¸Ð½Ð´ÐµÐºÑ BRIN оÑÐµÐ½Ñ Ð¼Ð°Ð»ÐµÐ½Ñкий, ÑканиÑование индекÑа влеÑÑÑ Ð¼Ð¸Ð·ÐµÑнÑе издеÑжки по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾ÑледоваÑелÑнÑм ÑканиÑованием, но Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð±Ð°Ð²Ð¸ÑÑ Ð¾Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ Ð¾Ð±Ð»Ð°ÑÑей ÑаблиÑÑ, коÑоÑÑе опÑеделÑнно не ÑодеÑÐ¶Ð°Ñ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑие коÑÑежи.
ÐонкÑеÑнÑе даннÑе, коÑоÑÑе бÑдÑÑ Ñ ÑаниÑÑÑ Ð² индекÑе BRIN, а Ñакже запÑоÑÑ, коÑоÑÑе ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑжаÑÑ ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ, завиÑÑÑ Ð¾Ñ ÐºÐ»Ð°ÑÑа опеÑаÑоÑов, вÑбÑанного Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа индекÑа. ÐапÑимеÑ, ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ñ Ð»Ð¸Ð½ÐµÐ¹Ð½Ñм поÑÑдком ÑоÑÑиÑовки могÑÑ Ð¸Ð¼ÐµÑÑ ÐºÐ»Ð°ÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов, Ñ ÑанÑÑие минималÑное и макÑималÑное знаÑение Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ð·Ð¾Ð½Ñ Ð±Ð»Ð¾ÐºÐ¾Ð²; Ð´Ð»Ñ Ð³ÐµÐ¾Ð¼ÐµÑÑиÑеÑÐºÐ¸Ñ Ñипов Ð¼Ð¾Ð¶ÐµÑ Ñ ÑаниÑÑÑÑ Ð¿ÑÑмоÑголÑник, вмеÑаÑÑий вÑе обÑекÑÑ Ð² зоне блоков.
Ð Ð°Ð·Ð¼ÐµÑ Ð·Ð¾Ð½Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² опÑеделÑеÑÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа паÑамеÑÑом Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ pages_per_range. ЧиÑло запиÑей в индекÑе бÑÐ´ÐµÑ ÑавнÑÑÑÑÑ ÑазмеÑÑ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ð² ÑÑÑаниÑаÑ
, делÑÐ½Ð½Ð¾Ð¼Ñ Ð½Ð° ÑÑÑановленное знаÑение pages_per_range. Таким обÑазом, Ñем менÑÑе ÑÑо ÑиÑло, Ñем болÑÑе ÑÑановиÑÑÑ Ð¸Ð½Ð´ÐµÐºÑ (Ñак как в нÑм ÑÑебÑеÑÑÑ Ñ
ÑаниÑÑ Ð±Ð¾Ð»ÑÑе ÑлеменÑов), но в Ñо же вÑÐµÐ¼Ñ ÑводнÑе даннÑе могÑÑ Ð±ÑÑÑ Ð±Ð¾Ð»ÐµÐµ ÑоÑнÑми и болÑÑее ÑиÑло блоков даннÑÑ
Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑопÑÑено пÑи ÑканиÑовании индекÑа.
60.1.1. ÐбÑлÑживание индекÑа
Ðо вÑÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа ÑканиÑÑÑÑÑÑ Ð²Ñе ÑÑÑеÑÑвÑÑÑие ÑÑÑаниÑÑ, и в ÑезÑлÑÑаÑе в индекÑе ÑоздаÑÑÑÑ ÑводнÑй коÑÑеж Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ зонÑ, в Ñом ÑиÑле, возможно неполной Ð·Ð¾Ð½Ñ Ð² конÑе. Ðо меÑе Ñого, как даннÑми наполнÑÑÑÑÑ Ð½Ð¾Ð²Ñе ÑÑÑаниÑÑ, еÑли они оказÑваÑÑÑÑ Ð² зонаÑ
, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
Ñже еÑÑÑ ÑÐ²Ð¾Ð´Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ, она бÑÐ´ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð° Ñ ÑÑÑÑом даннÑÑ
из новÑÑ
коÑÑежей. ÐÑли же ÑоздаÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ ÑÑÑаниÑа, коÑоÑÐ°Ñ Ð½Ðµ Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð² поÑледнÑÑ Ð·Ð¾Ð½Ñ, Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ Ð·Ð¾Ð½Ñ Ð°Ð²ÑомаÑиÑеÑки не ÑаÑÑÑиÑÑваеÑÑÑ ÑÐ²Ð¾Ð´Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ; коÑÑежи на ÑакиÑ
ÑÑÑаниÑаÑ
оÑÑаÑÑÑÑ Ð½ÐµÑÑÑÑннÑми, пока позже не бÑÐ´ÐµÑ Ð¿ÑоведÑн ÑаÑÑÑÑ ÑводнÑÑ
даннÑÑ
. ÐÑа пÑоÑедÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ñзвана вÑÑÑнÑÑ, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑии brin_summarize_new_values(regclass), или авÑомаÑиÑеÑки, когда ÑаблиÑÑ Ð±ÑÐ´ÐµÑ Ð¾Ð±ÑабаÑÑваÑÑ VACUUM.