PostgreSQL-เดจเตเดฑเต เดเดจเตเดคเดฐเดฟเด เดธเดเดตเดฟเดงเดพเดจเดเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดฐเตเดคเดฟ เดเดฟเดฒ เดธเดพเดนเดเดฐเตเดฏเดเตเดเดณเดฟเตฝ เด เดคเต เดตเดณเดฐเต เดตเตเดเดคเตเดคเดฟเดฒเดพเดเดพเดจเตเด เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฏเดฟเตฝ เด เดคเตเดฐ เดตเตเดเดคเตเดคเดฟเดฒเดพเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเดจเตเด เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเต, เดเดฐเต DBMS เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเตเด เดเดฐเต เดกเตเดตเดฒเดชเตเดชเตผ เด เดคเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดจเตเดคเตเดเตเดฏเตเดฏเตเดจเตเดจเต เดเดจเตเดจเดคเตเด เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเตเดฐเตเดฆเตเดงเตเดฏเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดเตเดฒเดพเดธเดฟเดเต เดเดฆเดพเดนเดฐเดฃเด เดจเดฎเตเดฎเตพ เดจเตเดเตเดเดพเด: เด เดชเตโเดกเตเดฑเตเดฑเต vs. MVCC เดคเดคเตเดตเดเตเดเตพ.
เดเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฐเต เดเตเดฑเดฟเดฏ เดชเตเดฒเตเดเตเดเต :
เดเดฐเต UPDATE เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดตเดฐเดฟเดฏเดฟเตฝ เดฎเดพเดฑเตเดฑเด เดตเดฐเตเดคเตเดคเตเดฎเตเดชเตเตพ, เดฐเดฃเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดจเดเดเตเดเตเดจเตเดจเต: เดเดฐเต DELETE เดเด เดเดฐเต INSERT เดเด. เดตเดฐเดฟเดฏเตเดเต เดจเดฟเดฒเดตเดฟเดฒเต เดชเดคเดฟเดชเตเดชเต เด เดชเตเดกเตเดฑเตเดฑเต เดจเดเดคเตเดคเดฟเดฏ เดเดเดชเดพเดเดฟเดจเตเดฑเต เดจเดฎเตเดชเดฑเดพเดฏเดฟ xmax เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดคเตเดเตผเดจเตเดจเต เด เดคเต เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต. เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด เดคเต เดตเดฐเดฟเดฏเดฟเตฝ เดคเดจเตเดจเต; เด เดคเดฟเดจเตเดฑเต xmin เดฎเตเดฒเตเดฏเด เดฎเตเตป เดชเดคเดฟเดชเตเดชเดฟเดจเตเดฑเต xmax เดฎเตเดฒเตเดฏเดตเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเต.
เด เดเดเดชเดพเดเต เดชเตเตผเดคเตเดคเดฟเดฏเดพเดฏเดฟ เดเตเดฑเดเตเดเต เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดถเตเดทเด, เดชเดดเดฏเดคเต เดชเตเดคเดฟเดฏเดคเต เดเดฏ เดชเดคเดฟเดชเตเดชเต, เด
เดจเตเดธเดฐเดฟเดเตเดเต COMMIT/ROOLBACK, เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดชเตเดชเตเดเตเด เดกเตเดกเต เดเตเดฏเตเดชเตเดชเดฟเตพเดธเต เดเดเดจเตเดจเตเดชเตเดเตเดฎเตเดชเตเตพ VACUUM เดฎเตเดถ เด
เดจเตเดธเดฐเดฟเดเตเดเต เดตเตเดคเตเดคเดฟเดฏเดพเดเตเดเดฟ.

เดเดจเตเดจเดพเตฝ เดเดคเต เดเดเดจเดเดฟ เดธเดเดญเดตเดฟเดเตเดเดฟเดฒเตเดฒ, เดชเดเตเดทเต "เดฎเดฐเดฟเดเตเดเดตเดฐเตเดฎเดพเดฏเตเดณเตเดณ" เดชเตเดฐเดถเตเดจเดเตเดเตพ เดตเดณเดฐเต เดตเตเดเดคเตเดคเดฟเตฝ เดจเตเดเดฟเดฏเตเดเตเดเตเดเดพเตป เดเดดเดฟเดฏเตเด - เดเดตเตผเดคเตเดคเดฟเดเตเดเตเดณเตเดณเดคเต เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดตเดฒเดฟเดฏ เดฎเตเดถเดฏเดฟเตฝ, เดเตเดฑเดเตเดเต เดเดดเดฟเดเตเดเต เดเดฐเต เดธเดพเดนเดเดฐเตเดฏเด เดจเตเดฐเดฟเดเตเดจเตเดจเต .
#1: เดเดจเดฟเดเตเดเต เด เดคเต เดจเตเดเตเดเดพเตป เดเดทเตเดเดฎเดพเดฃเต
เดจเดฟเดเตเดเดณเตเดเต เดฌเดฟเดธเดฟเดจเดธเต เดฒเตเดเดฟเดเต เดฐเตเดคเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเตเด เดเดคเต เดฑเตเดเตเดเตเตผเดกเดฟเดฒเต เดซเตเตฝเดกเต X เด เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเตเดจเตเดจเต เดชเตเดเตเดเตเดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดจเตเดจเตเดตเตเดจเตเดจเตเด เดเดฐเตเดคเตเด:
UPDATE tbl SET X = <newX> WHERE pk = $1;เดชเดฟเดจเตเดจเต, เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดชเตเดฐเตเดเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ, Y เดซเตเตฝเดกเตเด เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเตเดจเตเดจเต เด เดคเต เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเต:
UPDATE tbl SET Y = <newY> WHERE pk = $1;... เดชเดฟเดจเตเดจเต เดเดธเดกเตเด เดเดฃเตเดเต - เดเตเดฑเดฟเดฏ เดเดพเดฐเตเดฏเดเตเดเดณเดฟเตฝ เดเดจเตเดคเดฟเดจเดพเดฃเต เดตเดฟเดทเดฎเดฟเดเตเดเตเดจเตเดจเดคเต?
UPDATE tbl SET Z = <newZ> WHERE pk = $1;เด เดเตปเดเตเดฐเดฟเดฏเตเดเต เดเดคเตเดฐ เดชเดคเดฟเดชเตเดชเตเดเตพ เดเดชเตเดชเตเตพ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดเดฃเตเดเต? เด เดคเต, เดจเดพเดฒเต! เด เดตเดฏเดฟเดฒเตเดจเตเดจเต เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณเดคเดพเดฃเต, เดฎเตเดจเตเดจเตเดฃเตเดฃเด [เดเดเตเดเต] เดตเดพเดเตเดตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดตเตเดคเตเดคเดฟเดฏเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
เด เดคเต เดเตเดฏเตเดฏเดฐเตเดคเต! เด เดคเต เดเดชเดฏเตเดเดฟเดเตเดเต! เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เดเดฒเตเดฒเดพ เดซเตเตฝเดกเตเดเดณเตเด เด เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเต โ เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดเดฒเตเดฒเดพเดฏเตโเดชเตเดชเตเดดเตเด เดฐเตเดคเดฟเดฏเตเดเต เดฏเตเดเตเดคเดฟ เดเดคเตเดชเตเดฒเต เดฎเดพเดฑเตเดฑเดพเด:
UPDATE tbl SET X = <newX>, Y = <newY>, Z = <newZ> WHERE pk = $1;#2: เดเดชเดฏเตเดเด เดเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต, เดฒเตเดเตเดเต!
เด เดชเตเดชเตเตพ, เดจเดฟเดเตเดเตพ เดเดชเตเดชเตเดดเตเด เดเดเตเดฐเดนเดฟเดเตเดเต (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเตบเดตเตเตผเดเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดฎเตเดชเตเตพ). เดเดคเตเดชเตเดฒเตเดณเตเดณ เดเดจเตเดจเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดเดฑเดฟเดฏเตเดจเตเดจเต:
UPDATE tbl SET X = <newX> WHERE pk BETWEEN $1 AND $2;เด เดซเตเดฎเดฟเดจเตเดฑเต เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เดชเดฒเดชเตเดชเตเดดเตเด เดจเตเดฐเดฟเดเดพเดฑเตเดฃเตเดเต, เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดเดชเตเดชเตเดดเตเด เดเดฐเต เดชเตเดคเดฟเดฏ เดถเตเดจเตเดฏเดฎเดพเดฏ เดซเตเตฝเดกเต เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเดฐเตเดคเตเดจเตเดจเตเด, เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต เดเดฟเดฒ เดชเดฟเดถเดเตเดเตพ เดคเดฟเดฐเตเดคเตเดคเดฃเดฎเตเดจเตเดจเตเดฎเดพเดฃเต. เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเตเดเต เดเตเดคเตเดฏเดค เดเดฃเดเตเดเดฟเดฒเตเดเตเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. โ เดชเดเตเดทเต เดตเตเดฑเตเดคเต! เด เดคเดพเดฏเดคเต, เดเตปเดเตเดฐเดฟ เดฎเดพเดฑเตเดฑเดฟเดฏเตเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเดจเดฟเดเตเดเต เดตเตเดฃเตเดเดคเต เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เด เดคเดฟเตฝ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดเตเดเตเดโเดชเดเตเดทเต เดเดจเตเดคเดฟเดจเดพเดฃเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดจเตเดจเดคเต? เดจเดฎเตเดเตเดเต เด เดคเต เดถเดฐเดฟเดฏเดพเดเตเดเดพเด:
UPDATE tbl SET X = <newX> WHERE pk BETWEEN $1 AND $2 AND X IS DISTINCT FROM <newX>; เดเดคเตเดฐเดฏเตเด เด
เดคเตเดญเตเดคเดเดฐเดฎเดพเดฏ เดเดฐเต เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเตเดเต เด
เดธเตเดคเดฟเดคเตเดตเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดชเดฒเตผเดเตเดเตเด เด
เดฑเดฟเดฏเดฟเดฒเตเดฒ, เด
เดคเดฟเดจเดพเตฝ เดเดคเดพ เดเดฐเต เดเตเดฑเตเดฑเต เดทเตเดฑเตเดฑเต. IS DISTINCT FROM เดธเดนเดพเดฏเดฟเดเตเดเดพเตป เดฎเดฑเตเดฑเต เดฒเตเดเดฟเดเตเดเตฝ เดเดชเตเดชเดฑเตเดฑเตเดฑเตผเดฎเดพเดฐเตเด:

โฆเดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดเตเดฑเดเตเดเตเดเตเดเดฟ ROW()- เดเดเตเดธเตเดชเตเดฐเดทเดจเตเดเตพ:

#3: เดเดจเตเดฑเต เดชเตเดฐเดฟเดฏเดชเตเดชเตเดเตเดเดตเดณเต เดเดพเตป เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเตเดจเตเดจเดคเต... เดคเดเดฏเตเดจเตเดจเดคเดฟเดฒเตเดเตเดฏเดพเดฃเต.
เดฒเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต เดฐเดฃเตเดเต เดธเดฎเดพเดจ เดธเดฎเดพเดจเตเดคเดฐ เดชเตเดฐเดเตเดฐเดฟเดฏเดเตพ, เด เดตเดฏเดฟเตฝ เดเดฐเตเดจเตเดจเตเด เดฑเตเดเตเดเตเตผเดกเดฟเดเดเต "เดชเตเดฐเตเดเดคเดฟเดฏเดฟเดฒเดพเดฃเต" เดเดจเตเดจเต เด เดเดฏเดพเดณเดชเตเดชเตเดเตเดคเตเดคเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเต:
UPDATE tbl SET processing = TRUE WHERE pk = $1;เด เดชเตเดฐเดเตเดฐเดฟเดฏเดเตพ เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเดฏ เดเตเดฒเดฟเดเตพ เดจเดฟเตผเดตเตเดตเดนเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดเตเดเดฟเดฒเตเด, เด เดคเต เดเดกเดฟเดฏเดฟเตฝ เดคเดจเตเดจเตเดฏเดพเดฃเตเดเตเดเดฟเดฒเตเด, เดเดฆเตเดฏ เดเดเดชเดพเดเต เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดจเตเดจเดคเตเดตเดฐเต เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดเตเดฒเดฏเดจเตเดฑเต เด เด เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ "เดฒเตเดเตเดเต" เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด.
เดชเดฐเดฟเดนเดพเดฐเด #1: เดเดพเดธเตโเดเต เดฎเตเดฎเตเดชเดคเตเดคเตเดคเดฟเดฒเตเดเตเดเต เดเตเดฐเตเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
เดจเดฎเตเดเตเดเต เด
เดคเต เดตเตเดฃเตเดเตเด เดเตเตผเดเตเดเดพเด. IS DISTINCT FROM:
UPDATE tbl SET processing = TRUE WHERE pk = $1 AND processing IS DISTINCT FROM TRUE;เด เดซเตเดฎเดฟเตฝ, เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เด เดจเตเดตเตเดทเดฃเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดเดฐเต เดฎเดพเดฑเตเดฑเดตเตเด เดตเดฐเตเดคเตเดคเตเดเดฏเดฟเดฒเตเดฒ; เดเดฒเตเดฒเดพเด เดเดคเดฟเดจเดเด "เด เดคเต เด เดเตเดเดจเต เดคเดจเตเดจเต" เดเดฃเต - เด เดคเดฟเดจเดพเตฝ เดเดฐเต เดฌเตเดฒเตเดเตเดเดฟเดเดเตเด เดธเดเดญเดตเดฟเดเตเดเดฟเดฒเตเดฒ. เดฑเตเดเตเดเตเตผเดกเต "เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ" เดเดจเตเดจ เดตเดธเตเดคเตเดค เดชเดฟเดจเตเดจเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เด เตฝเดเตเดฐเดฟเดคเดคเตเดคเดฟเตฝ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดชเดฐเดฟเดนเดพเดฐเด #2: เดเดชเดฆเตเดถเด เดฒเตเดเตเดเตเดเตพ
เดเดคเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดฒเตเดเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดตเดฒเดฟเดฏ เดตเดฟเดทเดฏเดฎเดพเดฃเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดตเดพเดฏเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจเดฟเดเดคเตเดคเต. .
เดชเดฐเดฟเดนเดพเดฐเด #3: เดฎเดฃเตเดเตป เดเตเดณเตเดเตพ
เดชเดเตเดทเต เดเดคเตเดคเดจเตเดจเตเดฏเดพเดฃเต เดจเดฟเดเตเดเตพเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเดฃเตเดเดคเต. เดเดฐเต เดฑเตเดเตเดเตเตผเดกเตเดณเตเดณ เดเดฐเตเดธเดฎเดฏเด เดเตเดฒเดฟเด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเตเดชเดเตเดทเต เดจเดฟเดเตเดเตพ เดเตเดฒเดฏเดจเตเดฑเต-เดธเตเดกเต เดฌเดฟเดธเดฟเดจเดธเต เดฒเตเดเดฟเดเต เดเตเตพ เด
เตฝเดเตเดฐเดฟเดคเดเตเดเตพ เดคเตเดฑเตเดฑเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดฎเต? เดชเดเตเดทเต เดจเดฟเดเตเดเตพ เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดฟเดจเตเดคเดฟเดเตเดเดพเตฝ...
เด
เดตเดฒเดเดฌเด: www.habr.com
