Ðлава 61. ÐпÑеделение инÑеÑÑейÑа Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑнÑÑ Ð¼ÐµÑодов доÑÑÑпа
СодеÑжание
- 61.1. ÐÐ°Ð·Ð¾Ð²Ð°Ñ ÑÑÑÑкÑÑÑа API Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑов
- 61.2. ФÑнкÑии Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑнÑÑ Ð¼ÐµÑодов доÑÑÑпа
- 61.3. СканиÑование индекÑа
- 61.4. ÐамеÑÐ°Ð½Ð¸Ñ Ð¾ блокиÑовке Ñ Ð¸Ð½Ð´ÐµÐºÑами
- 61.5. ÐÑовеÑки ÑникалÑноÑÑи в индекÑе
- 61.6. ФÑнкÑии оÑенки ÑÑоимоÑÑи индекÑа
- 61.2. ФÑнкÑии Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑнÑÑ Ð¼ÐµÑодов доÑÑÑпа
Ð ÑÑой главе опиÑÑваеÑÑÑ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ Ð¼ÐµÐ¶Ð´Ñ ÑдÑом ÑиÑÑÐµÐ¼Ñ Postgres Pro и индекÑнÑми меÑодами доÑÑÑпа, коÑоÑÑе ÑпÑавлÑÑÑ Ð¾ÑделÑнÑми Ñипами индекÑов. ЯдÑо ÑиÑÑÐµÐ¼Ñ Ð½Ðµ Ð·Ð½Ð°ÐµÑ Ð¾Ð± индекÑÐ°Ñ Ð½Ð¸Ñего, кÑоме Ñого, ÑÑо опиÑано здеÑÑ; благодаÑÑ ÑÑÐ¾Ð¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑеализовÑваÑÑ Ð°Ð±ÑолÑÑно новÑе ÑÐ¸Ð¿Ñ Ð¸Ð½Ð´ÐµÐºÑов в ÑÐ°Ð¼ÐºÐ°Ñ ÑаÑÑиÑений.
ÐÑе индекÑÑ Postgres Pro ÑвлÑÑÑÑÑ, говоÑÑ Ð½Ð° ÑеÑ
ниÑеÑком ÑÑовне, вÑоÑиÑнÑми индекÑами; Ñо еÑÑÑ, они ÑизиÑеÑки оÑÐ´ÐµÐ»ÐµÐ½Ñ Ð¾Ñ Ñайла ÑаблиÑÑ, к коÑоÑой оÑноÑÑÑÑÑ. ÐаждÑй Ð¸Ð½Ð´ÐµÐºÑ Ñ
ÑаниÑÑÑ Ð² ÑобÑÑвенном оÑделÑном ÑизиÑеÑком оÑноÑении и опиÑÑваеÑÑÑ Ð² оÑделÑной запиÑи в каÑалоге pg_class. СодеÑжимое индекÑа наÑ
одиÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¿Ð¾Ð´ конÑÑолем ÑооÑвеÑÑÑвÑÑÑего меÑода доÑÑÑпа. Ðа пÑакÑике вÑе индекÑнÑе меÑÐ¾Ð´Ñ Ð´Ð¾ÑÑÑпа делÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð½Ð° ÑÑÑаниÑÑ ÑÑандаÑÑного ÑазмеÑа, ÑÑÐ¾Ð±Ñ Ð´Ð»Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº ÑодеÑÐ¶Ð¸Ð¼Ð¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑа можно бÑло задейÑÑвоваÑÑ Ð¾Ð±ÑÑнÑй Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Ñ
ÑанилиÑа и Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Ð±ÑÑеÑов. (Ðолее Ñого, болÑÑинÑÑво ÑÑÑеÑÑвÑÑÑиÑ
меÑодов доÑÑÑпа иÑполÑзÑÑÑ Ð¾Ð´Ð½Ñ ÑÑÑÑкÑÑÑÑ ÑÑÑаниÑÑ, опиÑаннÑÑ Ð² Разделе 70.6, и одинаковÑй ÑоÑÐ¼Ð°Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð² коÑÑежей индекÑа; но ÑÑи ÑеÑÐµÐ½Ð¸Ñ Ð¼ÐµÑодам доÑÑÑпа не навÑзÑваÑÑÑÑ.)
ÐÐ½Ð´ÐµÐºÑ Ð¿Ð¾ ÑÑÑи пÑедÑÑавлÑÐµÑ Ñобой ÑопоÑÑавление некоÑоÑÑÑ Ð·Ð½Ð°Ñений клÑÑей даннÑÑ Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑами коÑÑежей, TID (Tuple Identifier), или веÑÑиÑми ÑÑÑок в оÑновной ÑаблиÑе индекÑа. TID ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· номеÑа блока и номеÑа запиÑи в ÑÑом блоке (Ñм. Раздел 70.6). ÐÑой инÑоÑмаÑии доÑÑаÑоÑно, ÑÑÐ¾Ð±Ñ Ð²ÑбÑаÑÑ Ð¾Ð¿ÑеделÑннÑÑ Ð²ÐµÑÑÐ¸Ñ ÑÑÑоки из ÑаблиÑÑ. ÐндекÑÑ Ñами по Ñебе не знаÑÑ, ÑÑо в модели MVCC Ñ Ð¾Ð´Ð½Ð¾Ð¹ логиÑеÑкой ÑÑÑоки Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑколÑко ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð²ÐµÑÑий; Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа каждÑй коÑÑеж â незавиÑимÑй обÑекÑ, коÑоÑÐ¾Ð¼Ñ Ð½Ñжна ÑÐ²Ð¾Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð² индекÑе. Таким обÑазом, пÑи изменении ÑÑÑоки Ð´Ð»Ñ Ð½ÐµÑ Ð²Ñегда заново ÑоздаÑÑÑÑ Ð½Ð¾Ð²Ñе запиÑи индекÑа, даже еÑли знаÑÐµÐ½Ð¸Ñ ÐºÐ»ÑÑа не изменилиÑÑ. (ÐоÑÑежи HOT пÑедÑÑавлÑÑÑ Ñобой иÑклÑÑение из ÑÑого ÑÑвеÑждениÑ; но индекÑÑ Ð²ÑÑ Ñавно не имеÑÑ Ñ ÑÑим дела.) ÐапиÑи индекÑов Ð´Ð»Ñ Ð¼ÑÑÑвÑÑ ÐºÐ¾ÑÑежей вÑÑвобождаÑÑÑÑ (пÑи оÑиÑÑке), когда вÑÑвобождаÑÑÑÑ Ñами мÑÑÑвÑе коÑÑежи.