PostgreSQL-แแก แจแแแ แแแฅแแแแแแแแแก แแแแแกแแแฃแ แแแแแ แกแแจแฃแแแแแแก แแซแแแแก แแแก แแงแแก แซแแแแแ แกแฌแ แแคแ แแแแแแ แ แกแแขแฃแแชแแแจแ แแ "แแ แ แซแแแแแ แกแฌแ แแคแ" แแแแแแ แ แกแแขแฃแแชแแแจแ. แแฆแแก แฉแแแ แงแฃแ แแแฆแแแแก แแแแแแแฎแแแแแแ แแแแคแแแฅแขแแก แแแแกแแแฃแ แแแแแแแแแ, แแฃ แ แแแแ แแฃแจแแแแก DBMS แแ แ แแก แแแแแแแก แแแแแแแแแ แ แแแกแแแ - แแแแแฎแแแแ vs MVCC แแ แแแชแแแแแ.
แแแแแ แแแแแแ แแแ
แ แแแแกแแช แแฌแแ แแแ แแชแแแแแ UPDATE แแ แซแแแแแแ, แ แแแแฃแ แแ แจแแกแ แฃแแแแฃแแแ แแ แ แแแแ แแชแแ: DELETE แแ INSERT. IN แกแขแ แแฅแแแแก แแแแแแแแ แ แแแ แกแแ 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;
... แแ แจแแแแแ แแกแแแ Z - แ แแขแแ แแแ แแแแ แแ แแก แฌแแ แแแแแแแแแ?
UPDATE tbl SET Z = <newZ> WHERE pk = $1;
แแ แฉแแแแฌแแ แแก แ แแแแแแ แแแ แกแแ แแแแฅแแก แแฎแแ แแแแแชแแแแ แแแแแจแ? แแแแฎ, 4 แชแแแ! แแฅแแแแ แแ แแ แแฅแขแฃแแแฃแ แแ แแ 3 แฃแแแ แแแแฌแแแแแแก แแฅแแแแก แจแแแแแ [แแแขแ]แแแแฃแฃแแแ.
แแ แแแแแแแแ แแก แแกแ! แแแแแงแแแแแ แงแแแแ แแแแแก แแแแแฎแแแแ แแ แแ แแแแฎแแแแแ โ แแแแแแแก แแแแแแ แแแแฅแแแก แงแแแแแแแแก แจแแแซแแแแ แจแแแชแแแแแก แแกแ:
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;
แแแจแแแแช แแ, แแฃ แแก แแ แแชแแกแแแ แ แแแแฃแ แแ แแแแแแแแ แ แแฆแแชแแแแก โโแแ แแแแแแแแกแแแ แแแแแฃแแแแแแแแ, แแแแ แแ แแแแแ ID แคแแ แแแแแจแ, แแแแ แ แแแแแแขแ แแฅแแแแ โแแแแแแแแแโ แแ แแแแฎแแแแแแ แแแ แแแแ แขแ แแแแแฅแชแแแก แแแกแ แฃแแแแแแแ.
แแแแแกแแแแแ #1: แแแแแแแแ แจแแแชแแ แแแฃแแแ แฌแแแแแ
แแแแแ, แแแแแ แแ แแฎแแ แแแแแแแขแแ IS DISTINCT FROM
:
UPDATE tbl SET processing = TRUE WHERE pk = $1 AND processing IS DISTINCT FROM TRUE;
แแ แคแแ แแแ, แแแแ แ แแแแฎแแแแ แฃแแ แแแแ แแ แแคแแ แก แจแแชแแแแก แแแแแชแแแแ แแแแแจแ, แงแแแแแคแแ แ แแกแแ, แ แแแแ แช แฃแแแ แแงแแก - แจแแกแแแแแแกแแ, แแแแแแแแ แแ แแแฎแแแแ. แจแแแแแแ, แฉแแแ แแแแฃแจแแแแแ แฉแแแแฌแแ แแก โแแ แแแแแแกโ แคแแฅแขแก แแแแแงแแแแแฃแ แแแแแ แแแแจแ.
แแแแแกแแแแแ #2: แกแแแแแกแฃแแขแแชแแ แกแแแแขแแแ
แแแแ แแแแ แชแแแแ แกแขแแขแแแกแแแแก, แ แแแแแจแแช แจแแแแซแแแแ แฌแแแแแแฎแแ
แแแแแกแแแแแ #3: แกแฃแแแแฃแ แ แแแ แแแ
แแแแ แแ แแก แแ แแก แแฃแกแขแแ แแก, แ แแช แฃแแแ แแแแแแแ แแแก แแ แแแ แแฃแแ แแฃแจแแแแ แแแแแ แฉแแแแฌแแ แแ? แแ แแฅแแแ แจแแแฌแฃแฎแแ แแแแแแก แแแแแแแก แแแแแซแแฎแแแแก แแแแแ แแแแแแ, แแแแแแแแแ, แแแแแแขแแก แแฎแแ แแก? แแ แแฃ แคแแฅแ แแ แแแแแ?..
แฌแงแแ แ: www.habr.com