F.49. pg_surgery â пÑоведение опеÑаÑий низкого ÑÑÐ¾Ð²Ð½Ñ Ñ Ð´Ð°Ð½Ð½Ñми оÑноÑений #
ÐодÑÐ»Ñ pg_surgery пÑедоÑÑавлÑÐµÑ ÑазлиÑнÑе ÑÑнкÑии Ð´Ð»Ñ Ð¿ÑÐ¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑий Ñ Ð¿Ð¾Ð²ÑеждÑннÑми оÑноÑениÑми. ÐÑи ÑÑнкÑии по пÑиÑоде Ñвоей небезопаÑнÑ, и иÑ
иÑполÑзование Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð²ÑедиÑÑ Ð´Ð°Ð½Ð½Ñе (или ÑÑÑгÑбиÑÑ Ð¸Ð¼ÐµÑÑиеÑÑ Ð¿Ð¾Ð²ÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ ÐÐ). ÐапÑимеÑ, ÑÑи ÑÑнкÑии могÑÑ Ð½Ð°ÑÑÑиÑÑ ÑооÑвеÑÑÑвие индекÑов ÑаблиÑе, повÑедиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ UNIQUE или FOREIGN KEY или даже ÑделаÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñми коÑÑежи, ÑÑение коÑоÑÑÑ
пÑиведÑÑ Ðº аваÑийной оÑÑановке ÑеÑвеÑа баз даннÑÑ
. ÐÑи ÑÑнкÑии ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ñ Ð±Ð¾Ð»ÑÑой оÑÑоÑожноÑÑÑÑ Ð¸ ÑолÑко в кÑайнем ÑлÑÑае.
F.49.1. ФÑнкÑии #
-
heap_force_kill(regclass, tid[]) returns void ФÑнкÑиÑ
heap_force_killпомеÑÐ°ÐµÑ Â«Ð¸ÑполÑзованнÑе» ÑказаÑели как «мÑÑÑвÑе», не обÑаÑаÑÑÑ Ðº коÑÑежам. ÐÑа ÑÑнкÑÐ¸Ñ Ð¿ÑедназнаÑена Ð´Ð»Ñ Ð¿ÑинÑдиÑелÑного ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾ÑÑежей, к коÑоÑÑм нелÑÐ·Ñ Ð¾Ð±ÑаÑиÑÑÑÑ. ÐапÑимеÑ:test=> select * from t1 where ctid = '(0, 1)'; ERROR: could not access status of transaction 4007513275 DETAIL: Could not open file "pg_xact/0EED": No such file or directory. test=# select heap_force_kill('t1'::regclass, ARRAY['(0, 1)']::tid[]); heap_force_kill ----------------- (1 row) test=# select * from t1 where ctid = '(0, 1)'; (0 rows)-
heap_force_freeze(regclass, tid[]) returns void ФÑнкÑиÑ
heap_force_freezeпомеÑÐ°ÐµÑ ÐºÐ¾ÑÑежи как замоÑоженнÑе, не обÑаÑаÑÑÑ Ðº коÑÑежам. ÐÑа ÑÑнкÑÐ¸Ñ Ð¿ÑедназнаÑена Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа к коÑÑежам, коÑоÑÑе оказалиÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпнÑми по пÑиÑине повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о видимоÑÑи или не даÑÑ ÑÑпеÑно вÑполниÑÑ Ð¾ÑиÑÑÐºÑ ÑаблиÑÑ Ð¿Ð¾ пÑиÑине повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ ÑÑой инÑоÑмаÑии. ÐапÑимеÑ:test=> vacuum t1; ERROR: found xmin 507 from before relfrozenxid 515 CONTEXT: while scanning block 0 of relation "public.t1" test=# select ctid from t1 where xmin = 507; ctid ------- (0,3) (1 row) test=# select heap_force_freeze('t1'::regclass, ARRAY['(0, 3)']::tid[]); heap_force_freeze ------------------- (1 row) test=# select ctid from t1 where xmin = 2; ctid ------- (0,3) (1 row)
F.49.2. ÐвÑоÑÑ #
ÐÑÑÑÐ¾Ñ Ð¨Ð°Ñма (Ashutosh Sharma) <[email protected]>