67.7. ÐоÑÑежи ÑолÑко в кÑÑе (Heap-Only Tuples, HOT)
ÐÐ»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ Ð²ÑÑокой ÑÑепени паÑаллелÑноÑÑи PostgreSQL ÑÐ¾Ñ ÑанÑÐµÑ ÑÑÑоки, ÑеализÑÑ Ð¼Ð½Ð¾Ð³Ð¾Ð²ÐµÑÑионное ÑпÑавление конкÑÑенÑнÑм доÑÑÑпом (MVCC). Ðднако Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ MVCC ÑабоÑÐ°ÐµÑ Ð½Ðµ оÑÐµÐ½Ñ ÑÑÑекÑивно, когда пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ даннÑÑ . Ð ÑаÑÑноÑÑи, пÑи изменении ÑÑÑок в ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ð¸Ñ Ð½Ð¾Ð²Ñе веÑÑии. ÐÑоме Ñого, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ изменÑнной ÑÑÑоки в индекÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ð½Ð¾Ð²Ñе ÑлеменÑÑ, а Ñдаление ÑÑаÑÑÑ Ð²ÐµÑÑий ÑÑÑок и ÑлеменÑов индекÑа Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð²Ð»ÐµÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе издеÑжки.
ÐÐ»Ñ ÑÐ½Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð·Ð´ÐµÑжек, ÑвÑзаннÑÑ Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñми даннÑÑ , в PostgreSQL Ñеализована опÑимизаÑиÑ, назÑÐ²Ð°ÐµÐ¼Ð°Ñ Â«ÐºÐ¾ÑÑежи ÑолÑко в кÑÑе» (HOT). ÐÑ Ð¿Ñименение возможно в ÑледÑÑÑÐ¸Ñ ÑÑловиÑÑ :
ÐÑи изменении не заÑÑагиваÑÑÑÑ ÑÑолбÑÑ, задейÑÑвованнÑе в индекÑÐ°Ñ ÑаблиÑÑ (в Ñом ÑиÑле, в индекÑÐ°Ñ Ð¿Ð¾ вÑÑажениÑм и ÑаÑÑиÑнÑÑ Ð¸Ð½Ð´ÐµÐºÑÐ°Ñ ).
Ðа ÑÑÑаниÑе, ÑодеÑжаÑей ÑÑаÑÑÑ Ð²ÐµÑÑÐ¸Ñ ÑÑÑоки, доÑÑаÑоÑно Ñвободного меÑÑа Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹.
ÐÑи вÑполнении ÑÑÐ¸Ñ ÑÑловий опÑимизаÑÐ¸Ñ HOT даÑÑ Ð´Ð²Ð° пÑеимÑÑеÑÑва:
ÐÐ»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÑннÑÑ ÑÑÑок не нÑÐ¶Ð½Ñ Ð½Ð¾Ð²Ñе ÑлеменÑÑ Ð¸Ð½Ð´ÐµÐºÑа.
СÑаÑÑе веÑÑии изменÑннÑÑ ÑÑÑок могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð² Ñ Ð¾Ð´Ðµ обÑÑной ÑабоÑÑ, даже во вÑемÑ
SELECT, Ð´Ð»Ñ ÑÑого не нÑжно пеÑиодиÑеÑки вÑполнÑÑÑ Ð¾Ð¿ÐµÑаÑии оÑиÑÑки. (ÐÑо возможно, поÑколÑÐºÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð½Ðµ ÑÑÑлаÑÑÑÑ Ð½Ð° иденÑиÑикаÑоÑÑ ÑлеменÑов ÑÑÑаниÑ.)
Таким обÑазом, изменение коÑÑежей ÑолÑко в кÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑÑÑ, ÑолÑко еÑли не изменÑÑÑÑÑ ÑÑолбÑÑ, задейÑÑвованнÑе в индекÑаÑ
. ЧÑÐ¾Ð±Ñ Ð½Ð° ÑÑÑаниÑаÑ
бÑло доÑÑаÑоÑно меÑÑа Ð´Ð»Ñ HOT-коÑÑежей, можно ÑменÑÑиÑÑ ÑакÑÐ¾Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑаблиÑÑ. Ðаже еÑли ÑÑо не делаÑÑ, меÑ
анизм HOT вÑÑ Ñавно бÑÐ´ÐµÑ ÑабоÑаÑÑ, поÑколÑÐºÑ Ð½Ð¾Ð²Ñе ÑÑÑоки бÑдÑÑ ÐµÑÑеÑÑвеннÑм обÑазом пеÑеноÑиÑÑÑÑ Ð½Ð° новÑе ÑÑÑаниÑÑ Ð¸ ÑÑÑеÑÑвÑÑÑие ÑÑÑаниÑÑ, где доÑÑаÑоÑно Ñвободного меÑÑа Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ
веÑÑий ÑÑÑок. Ðа изменениÑми в Ñежиме HOT и в обÑÑном Ñежиме позволÑÐµÑ Ð½Ð°Ð±Ð»ÑдаÑÑ ÑиÑÑемное пÑедÑÑавление pg_stat_all_tables.