เจตเฉฑเจกเฉ เจกเฉเจเจพ เจธเฉเฉฑเจเจพเจ เจฆเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฒเจ (เจตเฉฑเจ
เจเจธ เจเจฟเจธเจฎ เจฆเจพ เจเฉฑเจ เจเจฎ เจเฉฐเจฎ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเฉเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจธเฉเจฃเจฆเจพ เจนเฉ: "เจเจฅเฉ เจนเฉ
เจชเจฐ เจเจฆเฉเจ เจเจธ "เจเฉเจ" เจฆเฉ เจฎเจพเจคเจฐเจพ เจธเฉเจเจเฉเฉ เจฎเฉเจเจพเจฌเจพเจเจ เจตเจฟเฉฑเจ เจฎเจพเจชเจฃเฉ เจธเจผเฉเจฐเฉ เจนเฉ เจเจพเจเจฆเฉ เจนเฉ, เจ
เจคเฉ เจธเฉเจตเจพ เจจเฉเฉฐ เจกเจพเจเจพเจฌเฉเจธ 24x7 เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ, เจคเจพเจ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจฎเจพเฉเฉ เจชเฉเจฐเจญเจพเจต เจชเฉเจฆเจพ เจนเฉเฉฐเจฆเฉ เจนเจจ เจเฉ เจคเฉเจนเจพเจกเฉ เจเจผเจฟเฉฐเจฆเจเฉ เจจเฉเฉฐ เจฌเจฐเจฌเจพเจฆ เจเจฐ เจฆเฉเจฃเจเฉเฅค
PostgreSQL เจตเจฟเฉฑเจ เจเจนเจจเจพเจ เจจเจพเจฒ เจจเจเจฟเฉฑเจ เจฃ เจฒเจ (เจ
เจคเฉ เจเจธ เจตเจฟเฉฑเจ เจนเฉ เจจเจนเฉเจ), เจคเฉเจธเฉเจ เจเฉเจ เจ
เจจเฉเจเฉเจฒเจคเจพเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจนเจฐ เจเฉเจเจผ เจจเฉเฉฐ เจคเฉเจเจผเฉ เจจเจพเจฒ เจ
เจคเฉ เจเฉฑเจ เจธเจฐเฉเจค เจเจชเจค เจจเจพเจฒ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเฉเจตเฉเจเจพเฅค
1. เจเจฟเฉฑเจฅเฉ เจญเฉเจเจฃเจพ เจนเฉ?
เจชเจนเจฟเจฒเจพเจ, เจเจ เจเจน เจซเฉเจธเจฒเจพ เจเจฐเฉเจ เจเจฟ เจ เจธเฉเจ เจเจธ เจกเฉเจเจพ เจจเฉเฉฐ เจเจฟเฉฑเจฅเฉ เจ เจชเจฒเฉเจก เจเจฐ เจธเจเจฆเฉ เจนเจพเจ เจเจฟเจธเจจเฉเฉฐ เจ เจธเฉเจ "เจชเฉเจฐเจเจฟเจฐเจฟเจ" เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจเฅค
1.1 เจ เจธเจฅเจพเจ เจเฉเจฌเจฒ (เจเจฐเจเจผเฉ เจธเจพเจฐเจฃเฉ)
เจ เจธเฉเจฒ เจตเจฟเฉฑเจ, PostgreSQL เจฒเจ เจ เจธเจฅเจพเจ เจเฉเจฌเจฒ เจเจฟเจธเฉ เจนเฉเจฐ เจฆเฉ เจธเจฎเจพเจจ เจนเจจเฅค เจเจธ เจฒเจ, เจ เฉฐเจงเจตเจฟเจธเจผเจตเจพเจธเจพเจ เจจเฉเฉฐ เจชเจธเฉฐเจฆ เจเจฐเจฆเฉ เจนเจจ "เจเฉฑเจฅเฉ เจนเจฐ เจเฉเจเจผ เจธเจฟเจฐเจซ เจฎเฉเจฎเฉเจฐเฉ เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจ เจคเฉ เจเจน เจเจคเจฎ เจนเฉ เจธเจเจฆเฉ เจนเฉ". เจชเจฐ เจเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจ เฉฐเจคเจฐ เจตเฉ เจนเจจ.
เจกเฉเจเจพเจฌเฉเจธ เจจเจพเจฒ เจนเจฐเฉเจ เจเจจเฉเจเจธเจผเจจ เจฒเจ เจคเฉเจนเจพเจกเจพ เจเจชเจฃเจพ "เจจเฉเจฎเจธเจชเฉเจธ"
เจเฉเจเจฐ เจฆเฉ เจเฉเจจเฉเจเจธเจผเจจ เจเฉฑเจเฉ เจธเจฎเฉเจ เจเฉเฉเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเฉ เจนเจจ CREATE TABLE x
, เจซเจฟเจฐ เจเจฟเจธเฉ เจจเฉเฉฐ เจฏเจเฉเจจเฉ เจคเฉเจฐ 'เจคเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเฉเจเจพ เจเฉเจฐ-เจตเจฟเจฒเฉฑเจเจฃเจคเจพ เจเจฒเจคเฉ เจกเจพเจเจพเจฌเฉเจธ เจเจฌเจเฉเจเจ.
เจชเจฐ เจเฉ เจฆเฉเจจเฉ เจเจฒเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉ CREATE TEMPORARY TABLE x
, เจซเจฟเจฐ เจฆเฉเจตเฉเจ เจเจธเจจเฉเฉฐ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจฐเจจเจเฉ, เจ
เจคเฉ เจนเจฐ เจเฉเจ เจชเฉเจฐเจพเจชเจค เจเจฐเฉเจเจพ เจคเฉเจนเจพเจกเฉ เจเจพเจชเฉ เจเฉเจฌเจฒ เจ
เจคเฉ เจเจนเจจเจพเจ เจตเจฟเจเจเจพเจฐ เจเฉเจ เจตเฉ เจธเจพเจเจเจพ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพ.
เจกเจฟเจธเจเจจเฉเจเจ เจเจฐเจจ เจตเฉเจฒเฉ "เจธเจตเฉ-เจตเจฟเจจเจพเจธเจผ"
เจเจฆเฉเจ เจเฉเจจเฉเจเจธเจผเจจ เจฌเฉฐเจฆ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ เจธเจพเจฐเฉเจเจ เจ
เจธเจฅเจพเจ เจเฉเจฌเจฒเจพเจ เจเจชเจฃเฉ เจเจช เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจ, เจเจธ เจฒเจ เจนเฉฑเจฅเฉเจ DROP TABLE x
เจธเจฟเจตเจพเจ เจเฉเจ เจฌเจฟเฉฐเจฆเฉ เจจเจนเฉเจ...
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจฆเฉเจเจฐเจพ เจเฉฐเจฎ เจเจฐ เจฐเจนเฉ เจนเฉ เจฒเฉเจฃ-เจฆเฉเจฃ เจฎเฉเจก เจตเจฟเฉฑเจ pgbouncer, เจซเจฟเจฐ เจกเฉเจเจพเจฌเฉเจธ เจเจน เจตเจฟเจธเจผเจตเจพเจธ เจเจฐเจจเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจฆเจพ เจนเฉ เจเจฟ เจเจน เจเฉเจจเฉเจเจธเจผเจจ เจ เจเฉ เจตเฉ เจเจฟเจฐเจฟเจเจธเจผเฉเจฒ เจนเฉ, เจ เจคเฉ เจเจธ เจตเจฟเฉฑเจ เจเจน เจ เจธเจฅเจพเจ เจธเจพเจฐเจฃเฉ เจ เจเฉ เจตเฉ เจฎเฉเจเฉเจฆ เจนเฉเฅค
เจเจธเจฒเจ, เจเจธเจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจจ เจจเจพเจฒ, เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจเจจเฉเจเจธเจผเจจ เจคเฉเจ pgbouncer เจคเฉฑเจ, เจเฉฑเจ เจเจฒเจคเฉ เจนเฉเจตเฉเจเฉเฅค เจชเจฐ เจเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธ เจจเฉเฉฐ เจฐเฉเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ CREATE TEMPORARY TABLE IF NOT EXISTS x
.
เจเจน เจธเฉฑเจ เจนเฉ, เจเจฟเจธเฉ เจตเฉ เจคเจฐเฉเจนเจพเจ เจ
เจเจฟเจนเจพ เจจเจพ เจเจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ, เจเจฟเจเจเจเจฟ เจซเจฟเจฐ เจคเฉเจธเฉเจ "เจ
เจเจพเจจเจ" เจเฉฑเจฅเฉ "เจชเจฟเจเจฒเฉ เจฎเจพเจฒเจ" เจคเฉเจ เจฌเจเจฟเจ เจกเฉเจเจพ เจฒเฉฑเจญ เจธเจเจฆเฉ เจนเฉเฅค เจเจธ เจฆเฉ เจฌเจเจพเจ, เจฎเฉเจจเฉเจ
เจฒ เจจเฉเฉฐ เจชเฉเฉเจนเจจเจพ เจ
เจคเฉ เจเจน เจตเฉเจเจฃเจพ เจฌเจนเฉเจค เจตเจงเฉเจ เจนเฉ เจเจฟ เจเจฆเฉเจ เจเฉเจฌเจฒ เจฌเจฃเจพเจเจเจฆเฉ เจนเฉ เจคเจพเจ เจเจธ เจจเฉเฉฐ เจเฉเฉเจจเจพ เจธเฉฐเจญเจต เจนเฉ ON COMMIT DROP
- เจฏเจพเจจเฉ, เจฒเฉเจฃ-เจฆเฉเจฃ เจชเฉเจฐเจพ เจนเฉเจฃ 'เจคเฉ, เจธเจพเจฐเจฃเฉ เจเจชเจฃเฉ เจเจช เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเฉ เจเจพเจตเฉเจเฉเฅค
เจเฉเจฐ-เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ
เจเจฟเจเจเจเจฟ เจเจน เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจเจพเจธ เจเฉเจจเฉเจเจธเจผเจจ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเจจ, เจ เจธเจฅเจพเจ เจเฉเจฌเจฒเจพเจ เจจเฉเฉฐ เจฆเฉเจนเจฐเจพเจเจ เจจเจนเฉเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจชเจฐ เจเจน เจกเจพเจเจพ เจฆเฉ เจกเจฌเจฒ เจฐเจฟเจเจพเจฐเจกเจฟเฉฐเจ เจฆเฉ เจฒเฉเฉ เจจเฉเฉฐ เจเจคเจฎ เจเจฐเจฆเจพ เจนเฉ เจนเฉเจช + WAL เจตเจฟเฉฑเจ, เจเจธเจฒเจ เจเจธ เจตเจฟเฉฑเจ INSERT/UPDATE/DELETE เจฌเจนเฉเจค เจคเฉเจเจผ เจนเฉเฅค
เจชเจฐ เจเจฟเจเจเจเจฟ เจเฉฑเจ เจ เจธเจฅเจพเจ เจธเจพเจฐเจฃเฉ เจ เจเฉ เจตเฉ เจเฉฑเจ "เจฒเจเจญเจ เจเจฎ" เจธเจพเจฐเจฃเฉ เจนเฉ, เจเจธ เจจเฉเฉฐ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ 'เจคเฉ เจตเฉ เจจเจนเฉเจ เจฌเจฃเจพเจเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเฉฑเจเฉ เจเฉฑเจ เจนเฉเจฃ เจฒเจ, เจนเจพเจฒเจพเจเจเจฟ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจชเฉเจ เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจคเฉเจ เจเฉเฉฐเจฎ เจฐเจฟเจนเจพ เจนเฉ.
1.2 เจ เจฃเจฒเจพเจเจก เจเฉเจฌเจฒ
เจชเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉเจเจฐ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจเฉเจ เจฎเฉเจธเจผเจเจฒ ETL เจชเฉเจฐเจเจฟเจฐเจฟเจ เจนเฉ เจเฉ เจเฉฑเจ เจฒเฉเจฃ-เจฆเฉเจฃ เจตเจฟเฉฑเจ เจฒเจพเจเฉ เจจเจนเฉเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ, เจชเจฐ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจ เจเฉ เจตเฉ เจนเฉ เจฒเฉเจฃ-เจฆเฉเจฃ เจฎเฉเจก เจตเจฟเฉฑเจ pgbouncer? ..
เจเจพเจ เจกเฉเจเจพ เจฆเจพ เจชเฉเจฐเจตเจพเจน เจเฉฐเจจเจพ เจตเฉฑเจกเจพ เจนเฉ เจเจฟ เจเฉฑเจ เจเฉเจจเฉเจเจธเจผเจจ 'เจคเฉ เจฒเฉเฉเฉเจเจฆเฉ เจฌเฉเจเจกเจตเจฟเจกเจฅ เจจเจนเฉเจ เจนเฉ เจเฉฑเจ เจกเฉเจเจพเจฌเฉเจธ เจคเฉเจ (เจชเฉเฉเจนเฉ, เจชเฉเจฐเจคเฉ CPU เจเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ)?..
เจเจพเจ เจเฉเจ เจเจชเจฐเฉเจธเจผเจจ เจเฉฑเจฒ เจฐเจนเฉ เจนเจจ เจ เจธเจฟเฉฐเจเฉเจฐเฉเจจเจธ เจคเฉเจฐ 'เจคเฉ เจตเฉฑเจ-เจตเฉฑเจ เจธเจฌเฉฐเจงเจพเจ เจตเจฟเฉฑเจ? ..
เจเฉฑเจฅเฉ เจธเจฟเจฐเจซ เจเฉฑเจ เจตเจฟเจเจฒเจช เจนเฉ - เจ เจธเจฅเจพเจ เจคเฉเจฐ 'เจคเฉ เจเฉฑเจ เจเฉเจฐ-เจเจฐเจเจผเฉ เจธเจพเจฐเจฃเฉ เจฌเจฃเจพเจ. เจชเฉเจจ, เจนเจพเจเฅค เจเฉ เจเจฟ เจนเฉ:
- เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจฌเฉเจคเจฐเจคเฉเจฌเฉ เจจเจพเจฎเจพเจ เจจเจพเจฒ "เจฎเฉเจฐเฉ เจเจชเจฃเฉ" เจเฉเจฌเจฒ เจฌเจฃเจพเจเจเจ เจคเจพเจ เจเฉ เจเจฟเจธเฉ เจจเจพเจฒ เจตเฉ เจจเจพ เจฎเจฟเจฒ เจธเจเจฃ
- เจเจเจธเจเจฐเฉเจเจ: เจเจนเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจฌเจพเจนเจฐเฉ เจธเจฐเฉเจค เจคเฉเจ เจกเฉเจเจพ เจจเจพเจฒ เจญเจฐเจฟเจ
- เจฌเจฆเจฒเฉ: เจชเจฐเจฟเจตเจฐเจคเจฟเจค, เจเฉเฉฐเจเฉ เจฒเจฟเฉฐเจ เจเจฐเจจ เจตเจพเจฒเฉ เจเฉเจคเจฐเจพเจ เจตเจฟเฉฑเจ เจญเจฐเจฟเจ
- เจฒเฉเจก เจเจฐเฉ: เจเฉเจเจพ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจคเจฟเจเจฐ เจกเจพเจเจพ เจกเฉเจฒเฉเจนเจฟเจ
- "เจฎเฉเจฐเฉ" เจเฉเจฌเจฒ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจ เจเจฟเจ
เจ
เจคเฉ เจนเฉเจฃ - เจ
เจคเจฐ เจตเจฟเฉฑเจ เจเฉฑเจ เจฎเฉฑเจเฉ. เจตเจพเจธเจคเจต เจตเจฟเฉฑเจ, PostgreSQL เจตเจฟเฉฑเจ เจธเจพเจฐเฉเจเจ เจฒเจฟเจเจคเจพเจ เจฆเฉ เจตเจพเจฐ เจนเฉเฉฐเจฆเฉเจเจ เจนเจจ - COMMIT
'เจจเจเฉ เจ
เจคเฉ ROLLBACK
'เจจเจฒ เจฒเฉเจฃ-เจฆเฉเจฃ.
เจชเจฐ เจธเจพเจจเฉเฉฐ เจเจธเจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ! เจธเจพเจกเฉ เจเฉเจฒ เจชเฉเจฐเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจนเฉ เจเจพเจ เจคเจพเจ เจเจน เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจธเจซเจฒ เจธเฉ เจเจพเจ เจเจน เจจเจนเฉเจ เจธเฉเฅค. เจเจธ เจจเจพเจฒ เจเฉเจ เจซเจฐเจ เจจเจนเฉเจ เจชเฉเจเจฆเจพ เจเจฟ เจเจฟเฉฐเจจเฉ เจตเจฟเจเจเจพเจฐเจฒเฉ เจเฉเจฐเจพเจเจเฉเจเจธเจผเจจ เจนเฉเจฃเจเฉ - เจ เจธเฉเจ "เจฎเจฟเจกเจฒ เจคเฉเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจเจพเจฐเฉ เจฐเฉฑเจเจฃ" เจตเจฟเฉฑเจ เจฆเจฟเจฒเจเจธเจชเฉ เจจเจนเฉเจ เจฐเฉฑเจเจฆเฉ, เจเจพเจธ เจเจฐเจเฉ เจเจฆเฉเจ เจเจน เจธเจชเฉฑเจธเจผเจ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ เจเจฟ เจเจน เจเจฟเฉฑเจฅเฉ เจธเฉเฅค
เจ
เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, PostgreSQL เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจจเฉ, เจตเจฐเจเจจ 9.1 เจตเจฟเฉฑเจ เจตเจพเจชเจธ, เจ
เจเจฟเจนเฉ เจเฉเจเจผ เจชเฉเจธเจผ เจเฉเจคเฉ เจเจฟเจตเฉเจ เจเจฟ
เจเจธ เจธเฉฐเจเฉเจค เจฆเฉ เจจเจพเจฒ, เจเฉเจฌเจฒ เจจเฉเฉฐ เจ เจจเจฒเฉเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค เจ เจจเจฒเฉเจ เจเฉเจคเฉเจเจ เจเฉเจฌเจฒเจพเจ 'เจคเฉ เจฒเจฟเจเจฟเจ เจกเฉเจเจพ เจฐเจพเจเจ-เจ เฉฑเจเฉ เจฒเฉเจ (เจ เจงเจฟเจเจ 29 เจฆเฉเจเฉ) เจคเฉเจ เจจเจนเฉเจ เจฒเฉฐเจเจฆเจพ, เจเจฟเจธ เจเจพเจฐเจจ เจ เจเจฟเจนเฉเจเจ เจเฉเจฌเจฒเจพเจ เจจเฉเฉฐ เจเจฎ เจจเจพเจฒเฉเจ เจฌเจนเฉเจค เจคเฉเจเจผเฉ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเฉ. เจนเจพเจฒเจพเจเจเจฟ, เจเจน เจ เจธเจซเจฒเจคเจพ เจคเฉเจ เจฎเฉเจเจค เจจเจนเฉเจ เจนเจจ; เจธเจฐเจตเจฐ เจ เจธเจซเจฒเจคเจพ เจเจพเจ เจเจฎเจฐเจเฉเจเจธเฉ เจฌเฉฐเจฆ เจนเฉเจฃ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ, เจเฉฑเจ เจ เจจเจฒเฉเจเจก เจเฉเจฌเจฒ เจธเจตเฉเจเจฒเจฟเจค เจคเฉเจฐ 'เจคเฉ เจเฉฑเจเจฟเจ เจเจฟเจ. เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจ เจฃเจฒเจพเจ เจเฉเจคเฉ เจธเจพเจฐเจฃเฉ เจฆเฉเจเจ เจธเจฎเฉฑเจเจฐเฉเจเจ เจจเจเจฒ เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจธเจฐเจตเจฐเจพเจ เจจเฉเฉฐ เจเฉเจฒเจพเจฎ เจเจฐเจจ เจฒเจ. เจ เจจเจฒเฉเจเจก เจเฉเจฌเจฒ 'เจคเฉ เจฌเจฃเจพเจ เจเจ เจเฉเจ เจตเฉ เจเฉฐเจกเฉเจเจธ เจเจชเจฃเฉ เจเจช เจ เจจเจฒเฉเจ เจนเฉ เจเจพเจเจฆเฉ เจนเจจเฅค
เจธเฉฐเจเฉเจช เจตเจฟเฉฑเจ, เจเจน เจฌเจนเฉเจค เจคเฉเจเจผ เจนเฉ เจเจพเจตเฉเจเจพ, เจชเจฐ เจเฉเจเจฐ เจกเฉเจเจพเจฌเฉเจธ เจธเจฐเจตเจฐ "เจกเจฟเฉฑเจเจฆเจพ เจนเฉ", เจคเจพเจ เจเจน เจเฉเจเจพ เจนเฉเจตเฉเจเจพเฅค เจชเจฐ เจเจน เจเจฟเฉฐเจจเฉ เจตเจพเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจ เจคเฉ เจเฉ เจคเฉเจนเจพเจกเฉ ETL เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจพเจฃเจฆเฉ เจนเฉ เจเจฟ เจกเฉเจเจพเจฌเฉเจธ เจจเฉเฉฐ "เจฎเฉเฉ เจธเฉเจฐเจเฉเจค เจเจฐเจจ" เจคเฉเจ เจฌเจพเจ เจฆ เจเจธเจจเฉเฉฐ "เจฎเฉฑเจง เจคเฉเจ" เจธเจนเฉ เจขเฉฐเจ เจจเจพเจฒ เจเจฟเจตเฉเจ เจ เฉเจ เจเจฐเจจเจพ เจนเฉ?...
เจเฉ เจจเจนเฉเจ, เจ
เจคเฉ เจเจชเจฐเฉเจเจค เจเฉเจธ เจคเฉเจนเจพเจกเฉ เจตเจฐเจเจพ เจนเฉ, เจคเจพเจ เจตเจฐเจคเฉ UNLOGGED
เจชเจฐ เจเจฆเฉ เจตเฉ เจ
เจธเจฒ เจเฉเจฌเจฒ 'เจคเฉ เจเจธ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจจเฉเฉฐ เจฏเฉเจ เจจเจพ เจเจฐเฉ, เจเจฟเจธ เจคเฉเจ เจกเฉเจเจพ เจคเฉเจนเจพเจกเฉ เจฒเจ เจชเจฟเจเจฐเจพ เจนเฉเฅค
1.3 เจเจฎเจฟเจ เจเจฐเจจ 'เจคเฉ { เจเจคเจพเจฐเจพเจ เจจเฉเฉฐ เจฎเจฟเจเจพเจ | เจกเฉเจฐเฉเจช}
เจเจน เจจเจฟเจฐเจฎเจพเจฃ เจคเฉเจนเจพเจจเฉเฉฐ เจเจเฉเจฎเฉเจเจฟเจ เจตเจฟเจตเจนเจพเจฐ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเจฆเฉเจ เจเฉฑเจ เจธเจพเจฐเจฃเฉ เจฌเจฃเจพเจเจฃ เจตเฉเจฒเฉ เจเฉเจ เจฒเฉเจฃ-เจฆเฉเจฃ เจชเฉเจฐเจพ เจนเฉ เจเจพเจเจฆเจพ เจนเฉเฅค
'เจคเฉ ON COMMIT DROP
เจฎเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉฑเจชเจฐ เจฒเจฟเจเจฟเจ เจนเฉ, เจเจน เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ DROP TABLE
, เจชเจฐ เจจเจพเจฒ ON COMMIT DELETE ROWS
เจธเจฅเจฟเจคเฉ เจตเจงเฉเจฐเฉ เจฆเจฟเจฒเจเจธเจช เจนเฉ - เจเจน เจเฉฑเจฅเฉ เจคเจฟเจเจฐ เจเฉเจคเฉ เจเจ เจนเฉ TRUNCATE TABLE
.
เจเจฟเจเจเจเจฟ เจเฉฑเจ เจ เจธเจฅเจพเจ เจเฉเจฌเจฒ เจฆเฉ เจฎเฉเจเจพ-เจตเจฐเจฃเจจ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐเจจ เจฒเจ เจชเฉเจฐเจพ เจฌเฉเจจเจฟเจเจฆเฉ เจขเจพเจเจเจพ เจเฉฑเจ เจจเจฟเจฏเจฎเจค เจธเจพเจฐเจฃเฉ เจฆเฉ เจธเจฎเจพเจจ เจนเฉ, เจซเจฟเจฐ เจ เจธเจฅเจพเจ เจเฉเจฌเจฒเจพเจ เจฆเฉ เจจเจฟเจฐเฉฐเจคเจฐ เจฐเจเจจเจพ เจ เจคเฉ เจฎเจฟเจเจพเจเจฃ เจจเจพเจฒ เจธเจฟเจธเจเจฎ เจเฉเจฌเจฒเจพเจ เจฆเฉ เจเฉฐเจญเฉเจฐ "เจธเฉเจ" เจนเฉเฉฐเจฆเฉ เจนเฉ pg_class, pg_attribute, pg_attrdef, pg_depend,โฆ
เจนเฉเจฃ เจเจฒเจชเจจเจพ เจเจฐเฉ เจเจฟ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจธเจฟเฉฑเจงเฉ เจเจจเฉเจเจธเจผเจจ 'เจคเฉ เจเฉฑเจ เจเจฐเจฎเจเจพเจฐเฉ เจนเฉ, เจเฉ เจนเจฐ เจธเจเจฟเฉฐเจ เจเฉฑเจ เจจเจตเจพเจ เจฒเฉเจฃ-เจฆเฉเจฃ เจเฉเจฒเฉเจนเจฆเจพ เจนเฉ, เจเฉฑเจ เจ เจธเจฅเจพเจ เจเฉเจฌเจฒ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ, เจญเจฐเจฆเจพ เจนเฉ, เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจฎเจฟเจเจพเจเจเจฆเจพ เจนเฉ... เจธเจฟเจธเจเจฎ เจเฉเจฌเจฒเจพเจ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจเจผเจฟเจเจฆเจพ เจเฉเฉเจพ เจเจเฉฑเจ เจพ เจนเฉเจตเฉเจเจพ, เจ เจคเฉ เจเจน เจนเจฐเฉเจ เจเจชเจฐเฉเจธเจผเจจ เจฒเจ เจตเจพเจงเฉ เจฌเฉเจฐเฉเจเจพเจ เจฆเจพ เจเจพเจฐเจจ เจฌเจฃเฉเจเจพเฅค
เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจเจน เจจเจพ เจเจฐเฉ! เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจเจน เจตเจงเฉเจฐเฉ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ เจนเฉ CREATE TEMPORARY TABLE x ... ON COMMIT DELETE ROWS
เจเจธเจจเฉเฉฐ เจฒเฉเจฃ-เจฆเฉเจฃ เจฆเฉ เจเฉฑเจเจฐ เจตเจฟเฉฑเจเฉเจ เจฌเจพเจนเจฐ เจเฉฑเจขเฉ - เจซเจฟเจฐ เจนเจฐเฉเจ เจจเจตเฉเจ เจเฉเจฐเจพเจเจเฉเจเจธเจผเจจ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค เจตเจฟเฉฑเจ เจเฉเจฌเจฒ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจนเจจ เจฎเฉเจเฉเจฆ เจนเฉเจตเฉเจเจพ (เจเฉฑเจ เจเจพเจฒ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเจฐเฉ CREATE
), เจชเจฐ เจเจพเจฒเฉ เจนเฉ เจเจพเจตเฉเจเจพ, เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ TRUNCATE
(เจ
เจธเฉเจ เจเจธเจฆเฉ เจเจพเจฒ เจจเฉเฉฐ เจตเฉ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเฉเจคเจพ เจนเฉ) เจเจฆเฉเจ เจชเจฟเจเจฒเฉ เจเฉเจฐเจพเจเจเฉเจเจธเจผเจจ เจจเฉเฉฐ เจชเฉเจฐเจพ เจเฉเจคเจพ เจธเฉเฅค
1.4 เจชเจธเฉฐเจฆ...เจธเจฎเฉเจค...
เจฎเฉเจ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจเจผเจฟเจเจฐ เจเฉเจคเจพ เจธเฉ เจเจฟ เจ เจธเจฅเจพเจ เจเฉเจฌเจฒเจพเจ เจฒเจ เจเจฎ เจตเจฐเจคเฉเจ เจฆเฉ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจตเฉฑเจ-เจตเฉฑเจ เจเจฟเจธเจฎเจพเจ เจฆเฉ เจเจฏเจพเจค เจนเจจ - เจ เจคเฉ เจตเจฟเจเจพเจธเจเจพเจฐ เจฅเฉฑเจ เจเฉ เจเฉเจเฉ เจฆเฉ เจธเจพเจฐเจฃเฉ เจฆเฉ เจเฉเจคเจฐเจพเจ เจฆเฉ เจธเฉเจเฉ เจจเฉเฉฐ เจเจชเจฃเฉ เจ เจธเจฅเจพเจ เจเฉเจธเจผเจฃเจพ เจตเจฟเฉฑเจ เจเจพเจชเฉ-เจชเฉเจธเจ เจเจฐเจฆเจพ เจนเฉ...
เจชเจฐ เจเจฒเจธ เจคเจฐเฉฑเจเฉ เจฆเจพ เจเฉฐเจเจฃ เจนเฉ! เจเจธ เจเจฐเจเฉ "เจจเจฎเฉเจจเฉ เจฆเฉ เจ เจงเจพเจฐ เจคเฉ" เจเฉฑเจ เจจเจตเฉเจ เจธเจพเจฐเจฃเฉ เจฌเจฃเจพเจ เจเจน เจฌเจนเฉเจค เจธเจฐเจฒ เจนเฉ เจธเจเจฆเจพ เจนเฉ:
CREATE TEMPORARY TABLE import_table(
LIKE target_table
);
เจเจฟเจเจเจเจฟ เจคเฉเจธเฉเจ เจเจธ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจพเจฐเจพ เจกเฉเจเจพ เจคเจฟเจเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจเจธ เจฒเจ เจเฉเจ เจเจฐเจจเจพ เจเจฆเฉ เจตเฉ เจคเฉเจเจผ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพเฅค เจชเจฐ เจเจธเจฆเจพ เจเฉฑเจ เจฐเจตเจพเจเจคเฉ เจนเฉฑเจฒ เจนเฉ - เจธเฉเจเจเจพเจเจ! เจ เจคเฉ, เจนเจพเจ, เจเฉฑเจ เจ เจธเจฅเจพเจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจธเฉเจเจเจพเจเจ เจตเฉ เจนเฉ เจธเจเจฆเฉ เจนเจจ.
เจเจฟเจเจเจเจฟ, เจ
เจเจธเจฐ, เจฒเฉเฉเฉเจเจฆเฉ เจธเฉเจเจเจพเจเจ เจจเจฟเจธเจผเจพเจจเจพ เจธเจพเจฐเจฃเฉ เจฆเฉ เจธเฉเจเจเจพเจเจ เจจเจพเจฒ เจฎเฉเจฒ เจเจพเจเจฆเฉ เจนเจจ, เจคเฉเจธเฉเจ เจฌเจธ เจฒเจฟเจ เจธเจเจฆเฉ เจนเฉ LIKE target_table INCLUDING INDEXES
.
เจเฉเจเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจตเฉ เจฒเฉเฉ เจนเฉ DEFAULT
-values โโ(เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจชเฉเจฐเจพเจเจฎเจฐเฉ เจเฉเฉฐเจเฉ เจฎเฉเฉฑเจฒเจพเจ เจจเฉเฉฐ เจญเจฐเจจ เจฒเจ), เจคเฉเจธเฉเจ เจตเจฐเจค เจธเจเจฆเฉ เจนเฉ LIKE target_table INCLUDING DEFAULTS
. เจเจพเจ เจฌเจธ - LIKE target_table INCLUDING ALL
โ เจเจพเจชเฉเจเจ เจกเจฟเจซเฉเจฒเจ, เจธเฉเจเจเจพเจเจ, เจชเจพเจฌเฉฐเจฆเฉเจเจ,...
เจชเจฐ เจเฉฑเจฅเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจธเจฎเจเจฃ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉ เจเจฟ เจเฉ เจคเฉเจธเฉเจ เจฌเจฃเจพเจเจ เจนเฉ เจธเฉเจเจเจพเจเจ เจฆเฉ เจจเจพเจฒ เจคเฉเจฐเฉฐเจค เจธเจพเจฐเจฃเฉ เจจเฉเฉฐ เจเจฏเจพเจค เจเจฐเฉ, เจซเจฟเจฐ เจกเฉเจเจพ เจจเฉเฉฐ เจฒเฉเจก เจนเฉเจฃ เจตเจฟเฉฑเจ เจเจผเจฟเจเจฆเจพ เจธเจฎเจพเจ เจฒเฉฑเจเฉเจเจพเจเฉเจเจฐ เจคเฉเจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจธเจญ เจเฉเจ เจญเจฐเจฆเฉ เจนเฉ, เจ
เจคเฉ เจเฉเจตเจฒ เจคเจฆ เจนเฉ เจธเฉเจเจเจพเจเจ เจจเฉเฉฐ เจฐเฉเจฒ เจ
เจช เจเจฐเจฆเฉ เจนเฉ - เจฆเฉเจเฉ เจเจฟ เจเจน เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ เจเจฟเจตเฉเจ เจเจฐเจฆเจพ เจนเฉ
เจธเฉฐเจเฉเจช เจตเจฟเฉฑเจ,
2. เจเจฟเจตเฉเจ เจฒเจฟเจเจฃเจพ เจนเฉ?
เจฎเฉเจจเฉเฉฐ เจธเจฟเจฐเจซ เจเจน เจเจนเจฟเจฃ เจฆเจฟเจ - เจเจธเจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉ
- "เจชเฉเจ" เจฆเฉ เจฌเจเจพเจ เจตเจนเจพเจ INSERT
,
3. เจเจฟเจตเฉเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจจเฉ เจนเฉ?
เจเจธ เจฒเจ เจฎเฉฐเจจ เจฒเจ เจเจฟ เจธเจพเจกเฉ เจเจพเจฃ-เจชเจเจพเจฃ เจเฉเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉ:
- เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจคเฉเจนเจพเจกเฉ เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเฉเจคเฉ เจเจพเจนเจ เจกเฉเจเจพ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจธเจพเจฐเจฃเฉ เจนเฉ 1M เจฐเจฟเจเจพเจฐเจก
- เจนเจฐ เจฐเฉเจเจผ เจเฉฑเจ เจเจพเจนเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจจเจตเจพเจ เจญเฉเจเจฆเจพ เจนเฉ เจชเฉเจฐเฉ "เจเจฟเฉฑเจคเจฐ"
- เจคเจเจฐเจฌเฉ เจคเฉเจ เจคเฉเจธเฉเจ เจเจพเจฃเจฆเฉ เจนเฉ เจเจฟ เจธเจฎเฉเจ เจธเจฎเฉเจ เจคเฉ 10K เจคเฉเจ เจตเฉฑเจง เจฐเจฟเจเจพเจฐเจก เจจเจนเฉเจ เจฌเจฆเจฒเฉ เจเจพเจเจฆเฉ
เจ
เจเจฟเจนเฉ เจธเจฅเจฟเจคเฉ เจฆเฉ เจเฉฑเจ เจธเจผเจพเจจเจฆเจพเจฐ เจเจฆเจพเจนเจฐเจฃ เจนเฉ
3.1 เจชเฉเจฐเจพ เจธเจฟเฉฐเจเฉเจฐเฉเจจเจพเจเจเจผเฉเจธเจผเจจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ
เจธเจฐเจฒเจคเจพ เจฒเจ, เจฎเฉฐเจจ เจฒเจ เจเจฟ เจคเฉเจนเจพเจจเฉเฉฐ เจกเฉเจเจพ เจฆเจพ เจชเฉเจจเจฐเจเจ เจจ เจเจฐเจจ เจฆเฉ เจตเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ - เจฌเจธ เจธเจพเจฐเจฃเฉ เจจเฉเฉฐ เจฒเฉเฉเฉเจเจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฒเจฟเจเจ, เจเจน เจนเฉ:
- เจนเจเจพเจ เจนเจฐ เจเฉเจเจผ เจเฉ เจนเฉเจฃ เจฎเฉเจเฉเจฆ เจจเจนเฉเจ เจนเฉ
- เจ เจชเจกเฉเจ เจนเจฐ เจเฉเจเจผ เจเฉ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฎเฉเจเฉเจฆ เจนเฉ เจ เจคเฉ เจ เฉฑเจชเจกเฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ
- เจธเฉฐเจฎเจฟเจฒเจฟเจค เจเจฐเจจ เจฒเจ เจธเจญ เจเฉเจ เจเฉ เจ เจเฉ เจคเฉฑเจ เจจเจนเฉเจ เจนเฉเจเจ เจนเฉ
เจเจธ เจเฉเจฐเจฎ เจตเจฟเฉฑเจ เจเจพเจฐเจตเจพเจเจเจ เจเจฟเจเจ เจเฉเจคเฉเจเจ เจเจพเจฃเฉเจเจ เจเจพเจนเฉเจฆเฉเจเจ เจนเจจ? เจเจฟเจเจเจเจฟ เจเจธ เจคเจฐเฉเจนเจพเจ เจเฉเจฌเจฒ เจฆเจพ เจเจเจพเจฐ เจเฉฑเจ เจคเฉเจ เจเฉฑเจ เจตเจงเฉเจเจพ (
dst เจคเฉเจ เจฎเจฟเจเจพเจ
เจจเจนเฉเจ, เจฌเฉเจธเจผเจ เจคเฉเจธเฉเจ เจธเจฟเจฐเจซ เจฆเฉ เจเจชเจฐเฉเจธเจผเจจเจพเจ เจจเจพเจฒ เจชเฉเจฐเจพเจชเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ:
- เจนเจเจพเจ (
DELETE
) เจเจฎ เจคเฉเจฐ 'เจคเฉ เจธเจญ เจเฉเจ - เจธเฉฐเจฎเจฟเจฒเจฟเจค เจเจฐเจจ เจฒเจ เจธเจพเจฐเฉ เจจเจตเฉเจ เจเจฟเฉฑเจคเจฐ เจคเฉเจ
เจชเจฐ เจเจธเฉ เจธเจฎเฉเจ, MVCC เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ, เจเฉเจฌเจฒ เจฆเจพ เจเจเจพเจฐ เจฌเจฟเจฒเจเฉเจฒ เจฆเฉเฉฑเจเจฃเจพ เจตเจง เจเจพเจตเฉเจเจพ! เจเฉฑเจ 1K เจ เฉฑเจชเจกเฉเจ เจฆเฉ เจเจพเจฐเจจ เจเฉฑเจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจฐเจฟเจเจพเจฐเจกเจพเจ เจฆเฉเจเจ +10M เจคเจธเจตเฉเจฐเจพเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจเจพ เจฌเจนเฉเจค เจเจผเจฟเจเจฆเจพ เจฌเฉเจฒเฉเฉเฉ เจนเฉ...
TRUNCATE dst
เจเฉฑเจ เจตเจงเฉเจฐเฉ เจคเจเจฐเจฌเฉเจเจพเจฐ เจกเจฟเจตเฉเจฒเจชเจฐ เจเจพเจฃเจฆเจพ เจนเฉ เจเจฟ เจชเฉเจฐเฉ เจเฉเจฌเจฒเฉเจ เจจเฉเฉฐ เจเจพเจซเจผเฉ เจธเจธเจคเฉ เจตเจฟเฉฑเจ เจธเจพเจซเจผ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ:
- เจธเจพเจซ เจเจฐเจจ เจฒเจ (
TRUNCATE
) เจชเฉเจฐเฉ เจธเจพเจฐเจฃเฉ - เจธเฉฐเจฎเจฟเจฒเจฟเจค เจเจฐเจจ เจฒเจ เจธเจพเจฐเฉ เจจเจตเฉเจ เจเจฟเฉฑเจคเจฐ เจคเฉเจ
เจตเจฟเจงเฉ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ เจนเฉ,
เจฎเจคเจฒเจฌ เจเฉ:
- เจ เจธเฉเจ เจธเจผเฉเจฐเฉ เจเจฐ เจฐเจนเฉ เจนเจพเจ เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจคเฉเจ เจเฉฑเจฒ เจฐเจฟเจนเจพ เจเฉเจฐเจพเจเจเฉเจเจธเจผเจจ
TRUNCATE
เจฒเจเจพเจเจเจฆเจพ เจนเฉ เจเจเจธเจเจฒเฉเจธเจฟเจต- เจฌเจฒเจพเจเจฟเฉฐเจ- เจ
เจธเฉเจ เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจฒเจ เจธเฉฐเจฎเจฟเจฒเจจ เจเจฐเจฆเฉ เจนเจพเจ, เจ
เจคเฉ เจเจธ เจธเจฎเฉเจ เจนเจฐ เจเฉเจ เจตเฉ เจจเจนเฉเจ เจเจฐ เจธเจเจฆเฉ
SELECT
เจเฉเจ เจ เฉเจ เจจเจนเฉเจ เจเฉฑเจฒ เจฐเจฟเจนเจพ...
เจธเจพเจฐเจฃเฉ เจฌเจฆเจฒเฉโฆ เจจเจพเจฎ เจฌเจฆเจฒเฉโฆ / เจธเจพเจฐเจฃเฉ เจเฉฑเจกเฉโฆ
เจเฉฑเจ เจตเจฟเจเจฒเจช เจนเฉ เจนเจฐ เจเฉเจเจผ เจจเฉเฉฐ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจจเจตเฉเจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจญเจฐเจจเจพ, เจ เจคเฉ เจซเจฟเจฐ เจชเฉเจฐเจพเจฃเฉ เจฆเฉ เจฅเจพเจ 'เจคเฉ เจเจธเจฆเจพ เจจเจพเจฎ เจฌเจฆเจฒเจฃเจพเฅค เจเฉเจ เจฎเจพเฉเฉเจเจ เจเฉเจเฉเจเจ เจเฉเจเจผเจพเจ:
- เจ เจเฉ เจตเฉ เจเจเจธเจเจฒเฉเจธเจฟเจต, เจนเจพเจฒเจพเจเจเจฟ เจเจพเจซเจผเฉ เจเฉฑเจ เจธเจฎเจพเจ เจนเฉ
- เจเจธ เจธเจพเจฐเจฃเฉ เจฒเจ เจธเจพเจฐเฉเจเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ เจฏเฉเจเจจเจพเจตเจพเจ/เจ
เฉฐเจเฉเฉ เจฐเฉเจธเฉเจ เจเฉเจคเฉ เจเจ เจนเจจ,
ANALYZE เจเจฒเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ - เจธเจพเจฐเฉเจเจ เจตเจฟเจฆเฉเจธเจผเฉ เจเฉเฉฐเจเฉเจเจ เจเฉเฉฑเจ เจเจเจเจ เจนเจจ (FK) เจฎเฉเจเจผ เจจเฉเฉฐ
เจธเจพเจเจฎเจจ เจฐเจฟเจเจธ เจคเฉเจ เจเฉฑเจ WIP เจชเฉเจ เจธเฉ เจเจฟเจธ เจจเฉ เจฌเจฃเจพเจเจฃ เจฆเจพ เจธเฉเจเจพเจ
เจฆเจฟเฉฑเจคเจพ เจธเฉ ALTER
- เจ
เฉฐเจเฉเจฟเจเจ เจ
เจคเฉ FK เจจเฉเฉฐ เจเฉเจนเจฃ เจคเฉเจ เจฌเจฟเจจเจพเจ, เจซเจพเจเจฒ เจชเฉฑเจงเจฐ 'เจคเฉ เจเฉเจฌเจฒ เจฌเจพเจกเฉ เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฒเจ เจเฉฑเจ เจเจชเจฐเฉเจธเจผเจจ, เจชเจฐ เจเฉเจฐเจฎ เจเจเฉฑเจ เจพ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจเฅค
เจฎเจฟเจเจพเจ, เจ เฉฑเจชเจกเฉเจ เจเจฐเฉ, เจธเจผเจพเจฎเจฒ เจเจฐเฉ
เจเจธ เจฒเจ, เจ เจธเฉเจ เจคเจฟเฉฐเจจ เจเจชเจฐเฉเจธเจผเจจเจพเจ เจฆเฉ เจเฉเจฐ-เจฌเจฒเจพเจเจฟเฉฐเจ เจตเจฟเจเจฒเจช 'เจคเฉ เจธเฉเจเจฒ เจเจฐเจฆเฉ เจนเจพเจเฅค เจฒเจเจญเจ เจคเจฟเฉฐเจจ... เจเจน เจธเจญ เจคเฉเจ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ เจขเฉฐเจ เจจเจพเจฒ เจเจฟเจตเฉเจ เจเจฐเฉเจ?
-- ะฒัะต ะดะตะปะฐะตะผ ะฒ ัะฐะผะบะฐั
ััะฐะฝะทะฐะบัะธะธ, ััะพะฑั ะฝะธะบัะพ ะฝะต ะฒะธะดะตะป "ะฟัะพะผะตะถััะพัะฝัั
" ัะพััะพัะฝะธะน
BEGIN;
-- ัะพะทะดะฐะตะผ ะฒัะตะผะตะฝะฝัั ัะฐะฑะปะธัั ั ะธะผะฟะพััะธััะตะผัะผะธ ะดะฐะฝะฝัะผะธ
CREATE TEMPORARY TABLE tmp(
LIKE dst INCLUDING INDEXES -- ะฟะพ ะพะฑัะฐะทั ะธ ะฟะพะดะพะฑะธั, ะฒะผะตััะต ั ะธะฝะดะตะบัะฐะผะธ
) ON COMMIT DROP; -- ะทะฐ ัะฐะผะบะฐะผะธ ััะฐะฝะทะฐะบัะธะธ ะพะฝะฐ ะฝะฐะผ ะฝะต ะฝัะถะฝะฐ
-- ะฑััััะพ-ะฑััััะพ ะฒะปะธะฒะฐะตะผ ะฝะพะฒัะน ะพะฑัะฐะท ัะตัะตะท COPY
COPY tmp FROM STDIN;
-- ...
-- .
-- ัะดะฐะปัะตะผ ะพััััััะฒัััะธะต
DELETE FROM
dst D
USING
dst X
LEFT JOIN
tmp Y
USING(pk1, pk2) -- ะฟะพะปั ะฟะตัะฒะธัะฝะพะณะพ ะบะปััะฐ
WHERE
(D.pk1, D.pk2) = (X.pk1, X.pk2) AND
Y IS NOT DISTINCT FROM NULL; -- "ะฐะฝัะธะดะถะพะนะฝ"
-- ะพะฑะฝะพะฒะปัะตะผ ะพััะฐะฒัะธะตัั
UPDATE
dst D
SET
(f1, f2, f3) = (T.f1, T.f2, T.f3)
FROM
tmp T
WHERE
(D.pk1, D.pk2) = (T.pk1, T.pk2) AND
(D.f1, D.f2, D.f3) IS DISTINCT FROM (T.f1, T.f2, T.f3); -- ะฝะตะทะฐัะตะผ ะพะฑะฝะพะฒะปััั ัะพะฒะฟะฐะดะฐััะธะต
-- ะฒััะฐะฒะปัะตะผ ะพััััััะฒัััะธะต
INSERT INTO
dst
SELECT
T.*
FROM
tmp T
LEFT JOIN
dst D
USING(pk1, pk2)
WHERE
D IS NOT DISTINCT FROM NULL;
COMMIT;
3.2 เจชเฉเจธเจ-เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจเจฏเจพเจค เจเจฐเฉ
เจเจธเฉ KLADR เจตเจฟเฉฑเจ, เจธเจพเจฐเฉ เจฌเจฆเจฒเฉ เจนเฉเจ เจฐเจฟเจเจพเจฐเจกเจพเจ เจจเฉเฉฐ เจชเฉเจธเจ-เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจฆเฉเจเจฐเจพ เจตเฉ เจเจฒเจพเจเจ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ - เจธเจงเจพเจฐเจฃ, เจเฉเจตเจฐเจกเจธ เจจเฉเฉฐ เจเจเจพเจเจฐ เจเฉเจคเจพ เจเจฟเจ, เจ เจคเฉ เจฒเฉเฉเฉเจเจฆเฉ เจขเจพเจเจเฉ เจตเจฟเฉฑเจ เจเจเจพเจเจ เจเจฟเจเฅค เจชเจฐ เจคเฉเจธเฉเจ เจเจฟเจตเฉเจ เจเจพเจฃเจฆเฉ เจนเฉ - เจ เจธเจฒ เจตเจฟเฉฑเจ เจเฉ เจฌเจฆเจฒเจฟเจเจธเจฟเฉฐเจเฉเจฐเฉเจจเจพเจเจเจผเฉเจธเจผเจจ เจเฉเจก เจจเฉเฉฐ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจเฉเจคเฉ เจฌเจฟเจจเจพเจ, เจเจฆเจฐเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจเจธ เจจเฉเฉฐ เจเฉเจนเจฃ เจคเฉเจ เจฌเจฟเจจเจพเจ?
เจเฉเจเจฐ เจธเจฟเฉฐเจเฉเจฐเฉเจจเจพเจเจเจผเฉเจธเจผเจจ เจฆเฉ เจธเจฎเฉเจ เจธเจฟเจฐเจซ เจคเฉเจนเจพเจกเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจฒเจฟเจเจฃ เจฆเฉ เจชเจนเฉเฉฐเจ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจเฉฑเจ เจเจฐเจฟเฉฑเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจเฉ เจธเจพเจกเฉ เจฒเจ เจธเจพเจฐเฉเจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเฉเฉฐ เจเจเฉฑเจ เจพ เจเจฐเฉเจเจพ:
-- ัะตะปะตะฒัะต ัะฐะฑะปะธัั
CREATE TABLE kladr(...);
CREATE TABLE kladr_house(...);
-- ัะฐะฑะปะธัั ั ะธััะพัะธะตะน ะธะทะผะตะฝะตะฝะธะน
CREATE TABLE kladr$log(
ro kladr, -- ััั ะปะตะถะฐั ัะตะปัะต ะพะฑัะฐะทั ะทะฐะฟะธัะตะน ััะฐัะพะน/ะฝะพะฒะพะน
rn kladr
);
CREATE TABLE kladr_house$log(
ro kladr_house,
rn kladr_house
);
-- ะพะฑัะฐั ััะฝะบัะธั ะปะพะณะธัะพะฒะฐะฝะธั ะธะทะผะตะฝะตะฝะธะน
CREATE OR REPLACE FUNCTION diff$log() RETURNS trigger AS $$
DECLARE
dst varchar = TG_TABLE_NAME || '$log';
stmt text = '';
BEGIN
-- ะฟัะพะฒะตััะตะผ ะฝะตะพะฑั
ะพะดะธะผะพััั ะปะพะณะณะธัะพะฒะฐะฝะธั ะฟัะธ ะพะฑะฝะพะฒะปะตะฝะธะธ ะทะฐะฟะธัะธ
IF TG_OP = 'UPDATE' THEN
IF NEW IS NOT DISTINCT FROM OLD THEN
RETURN NEW;
END IF;
END IF;
-- ัะพะทะดะฐะตะผ ะทะฐะฟะธัั ะปะพะณะฐ
stmt = 'INSERT INTO ' || dst::text || '(ro,rn)VALUES(';
CASE TG_OP
WHEN 'INSERT' THEN
EXECUTE stmt || 'NULL,$1)' USING NEW;
WHEN 'UPDATE' THEN
EXECUTE stmt || '$1,$2)' USING OLD, NEW;
WHEN 'DELETE' THEN
EXECUTE stmt || '$1,NULL)' USING OLD;
END CASE;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
เจนเฉเจฃ เจ
เจธเฉเจ เจธเจฟเฉฐเจเฉเจฐเฉเจจเจพเจเจเจผเฉเจธเจผเจจ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจฐเจฟเจเจฐเจธ เจฒเจพเจเฉ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ (เจเจพเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจธ เจฐเจพเจนเฉเจ เจฏเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ ALTER TABLE ... ENABLE TRIGGER ...
):
CREATE TRIGGER log
AFTER INSERT OR UPDATE OR DELETE
ON kladr
FOR EACH ROW
EXECUTE PROCEDURE diff$log();
CREATE TRIGGER log
AFTER INSERT OR UPDATE OR DELETE
ON kladr_house
FOR EACH ROW
EXECUTE PROCEDURE diff$log();
เจ เจคเฉ เจซเจฟเจฐ เจ เจธเฉเจ เจฒเฉเจ เจเฉเจฌเจฒเจพเจ เจคเฉเจ เจธเจพเจจเฉเฉฐ เจฒเฉเฉเฉเจเจฆเฉเจเจ เจธเจพเจฐเฉเจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเฉเฉฐ เจธเจผเจพเจเจคเฉ เจจเจพเจฒ เจเจเจธเจเจฐเฉเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจตเจพเจงเฉ เจนเฉเจเจกเจฒเจฐ เจฆเฉเจเจฐเจพ เจเจฒเจพเจเจเจฆเฉ เจนเจพเจเฅค
3.3 เจฒเจฟเฉฐเจ เจเฉเจคเฉ เจธเฉเฉฑเจเจพเจ เจจเฉเฉฐ เจเจฏเจพเจค เจเจฐเจจเจพ
เจเฉฑเจชเจฐ เจ เจธเฉเจ เจเจนเจจเจพเจ เจฎเจพเจฎเจฒเจฟเจเจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเฉเจคเจพ เจเจฆเฉเจ เจธเจฐเฉเจค เจ เจคเฉ เจฎเฉฐเจเจผเจฟเจฒ เจฆเฉ เจกเฉเจเจพ เจขเจพเจเจเฉ เจเฉฑเจเฉ เจเจฟเจนเฉ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจชเจฐ เจเจฆเฉเจ เจเฉ เจเฉ เจเจฟเจธเฉ เจฌเจพเจนเจฐเฉ เจธเจฟเจธเจเจฎ เจคเฉเจ เจ เฉฑเจชเจฒเฉเจก เจฆเจพ เจซเจพเจฐเจฎเฉเจ เจธเจพเจกเฉ เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจธเจเฉเจฐเฉเจ เจขเจพเจเจเฉ เจคเฉเจ เจตเฉฑเจเจฐเจพ เจนเฉเจตเฉ?
เจเจ เจเจฒเจพเจเฉฐเจเจธ เจ เจคเฉ เจเจนเจจเจพเจ เจฆเฉ เจเจพเจคเจฟเจเจ เจฆเฉ เจธเจเฉเจฐเฉเจ, เจเจฒเจพเจธเจฟเจ "เจเจ-เจเฉ-เจตเจจ" เจตเจฟเจเจฒเจช เจจเฉเฉฐ เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ เจฒเฉเจเจฆเฉ เจนเจพเจ:
CREATE TABLE client(
client_id
serial
PRIMARY KEY
, inn
varchar
UNIQUE
, name
varchar
);
CREATE TABLE invoice(
invoice_id
serial
PRIMARY KEY
, client_id
integer
REFERENCES client(client_id)
, number
varchar
, dt
date
, sum
numeric(32,2)
);
เจชเจฐ เจเฉฑเจ เจฌเจพเจนเจฐเฉ เจธเจฐเฉเจค เจคเฉเจ เจกเจพเจเจจเจฒเฉเจก เจธเจพเจกเฉ เจเฉเจฒ "เจธเจญ เจตเจฟเฉฑเจ เจเฉฑเจ" เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเจเจเจฆเจพ เจนเฉ:
CREATE TEMPORARY TABLE invoice_import(
client_inn
varchar
, client_name
varchar
, invoice_number
varchar
, invoice_dt
date
, invoice_sum
numeric(32,2)
);
เจธเจชเฉฑเจธเจผเจ เจคเฉเจฐ 'เจคเฉ, เจเจพเจนเจ เจกเฉเจเจพ เจจเฉเฉฐ เจเจธ เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเฉฑเจ เจกเฉเจชเจฒเฉเจเฉเจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจฎเฉเฉฑเจ เจฐเจฟเจเจพเจฐเจก "เจเจพเจคเจพ" เจนเฉ:
0123456789;ะะฐัั;A-01;2020-03-16;1000.00
9876543210;ะะตัั;A-02;2020-03-16;666.00
0123456789;ะะฐัั;B-03;2020-03-16;9999.00
เจฎเจพเจกเจฒ เจฒเจ, เจ
เจธเฉเจ เจธเจฟเจฐเจซเจผ เจเจชเจฃเจพ เจเฉเจธเจ เจกเฉเจเจพ เจชเจพเจตเจพเจเจเฉ, เจชเจฐ เจฏเจพเจฆ เจฐเฉฑเจเฉ - COPY
เจตเจงเฉเจฐเฉ เจเฉเจธเจผเจฒ!
INSERT INTO invoice_import
VALUES
('0123456789', 'ะะฐัั', 'A-01', '2020-03-16', 1000.00)
, ('9876543210', 'ะะตัั', 'A-02', '2020-03-16', 666.00)
, ('0123456789', 'ะะฐัั', 'B-03', '2020-03-16', 9999.00);
เจชเจนเจฟเจฒเจพเจ, เจเจ เจเจนเจจเจพเจ "เจเจเฉเจคเฉเจเจ" เจจเฉเฉฐ เจเจเจพเจเจฐ เจเจฐเฉเจ เจเจฟเจนเจจเจพเจ เจฆเจพ เจธเจพเจกเฉ "เจคเฉฑเจฅ" เจนเจตเจพเจฒเจพ เจฆเจฟเฉฐเจฆเฉ เจนเจจเฅค เจธเจพเจกเฉ เจเฉเจธ เจตเจฟเฉฑเจ, เจเจจเจตเฉเจเจธ เจเจพเจนเจเจพเจ เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเจฟเฉฐเจฆเฉ เจนเจจ:
CREATE TEMPORARY TABLE client_import AS
SELECT DISTINCT ON(client_inn)
-- ะผะพะถะฝะพ ะฟัะพััะพ SELECT DISTINCT, ะตัะปะธ ะดะฐะฝะฝัะต ะทะฐะฒะตะดะพะผะพ ะฝะตะฟัะพัะธะฒะพัะตัะธะฒั
client_inn inn
, client_name "name"
FROM
invoice_import;
เจเจพเจคเจฟเจเจ เจจเฉเฉฐ เจเจพเจนเจ IDs เจจเจพเจฒ เจธเจนเฉ เจขเฉฐเจ เจจเจพเจฒ เจเฉเฉเจจ เจฒเจ, เจธเจพเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจเจนเจจเจพเจ เจชเจเจพเจฃเจเจฐเจคเจพเจตเจพเจ เจจเฉเฉฐ เจฒเฉฑเจญเจฃ เจเจพเจ เจฌเจฃเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจเจ เจเจนเจจเจพเจ เจฆเฉ เจนเฉเจ เจพเจ เจเฉเจคเจฐ เจเฉเฉเฉเจ:
ALTER TABLE invoice_import ADD COLUMN client_id integer;
ALTER TABLE client_import ADD COLUMN client_id integer;
เจเจ เจเฉฑเจ เจเฉเจเฉ เจธเฉเจง เจฆเฉ เจจเจพเจฒ เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจเจ เจเฉเจฌเจฒ เจธเจฟเฉฐเจเฉเจฐเฉเจจเจพเจเจเจผเฉเจธเจผเจจ เจตเจฟเจงเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเจ - เจ เจธเฉเจ เจเจพเจฐเจเฉเจ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจเจฟเจธเฉ เจตเฉ เจเฉเจเจผ เจจเฉเฉฐ เจ เจชเจกเฉเจ เจเจพเจ เจฎเจฟเจเจพ เจจเจนเฉเจ เจฆเฉเจตเจพเจเจเฉ, เจเจฟเจเจเจเจฟ เจ เจธเฉเจ เจเจฒเจพเจเฉฐเจเจธ เจจเฉเฉฐ "เจธเจฟเจฐเจซเจผ เจเฉเฉ" เจเจฏเจพเจค เจเจฐเจฆเฉ เจนเจพเจ:
-- ะฟัะพััะฐะฒะปัะตะผ ะฒ ัะฐะฑะปะธัะต ะธะผะฟะพััะฐ ID ัะถะต ัััะตััะฒัััะธั
ะทะฐะฟะธัะตะน
UPDATE
client_import T
SET
client_id = D.client_id
FROM
client D
WHERE
T.inn = D.inn; -- unique key
-- ะฒััะฐะฒะปัะตะผ ะพััััััะฒะพะฒะฐะฒัะธะต ะทะฐะฟะธัะธ ะธ ะฟัะพััะฐะฒะปัะตะผ ะธั
ID
WITH ins AS (
INSERT INTO client(
inn
, name
)
SELECT
inn
, name
FROM
client_import
WHERE
client_id IS NULL -- ะตัะปะธ ID ะฝะต ะฟัะพััะฐะฒะธะปัั
RETURNING *
)
UPDATE
client_import T
SET
client_id = D.client_id
FROM
ins D
WHERE
T.inn = D.inn; -- unique key
-- ะฟัะพััะฐะฒะปัะตะผ ID ะบะปะธะตะฝัะพะฒ ั ะทะฐะฟะธัะตะน ััะตัะพะฒ
UPDATE
invoice_import T
SET
client_id = D.client_id
FROM
client_import D
WHERE
T.client_inn = D.inn; -- ะฟัะธะบะปะฐะดะฝะพะน ะบะปัั
เจ
เจธเจฒ เจตเจฟเฉฑเจ, เจธเจญ เจเฉเจ เจ
เฉฐเจฆเจฐ เจนเฉ invoice_import
เจนเฉเจฃ เจธเจพเจกเฉ เจเฉเจฒ เจธเฉฐเจชเจฐเจ เจเฉเจคเจฐ เจญเจฐ เจเจฟเจ เจนเฉ client_id
, เจเจฟเจธ เจจเจพเจฒ เจ
เจธเฉเจ เจเจจเจตเฉเจเจธ เจชเจพเจตเจพเจเจเฉเฅค
เจธเจฐเฉเจค: www.habr.com