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