เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบธเบเปเบเปเบเบชเบฐเบฅเบฑเบเบชเบฑเบเบเปเบญเบเบเบญเบเบเบธเบเบเปเปเบกเบนเบเบเบฐเบซเบเบฒเบเปเบซเบเป (เปเบเบเบเปเบฒเบเบเบฑเบ
เบงเบฝเบเบเบฒเบเบเบปเปเบงเปเบเบเบญเบเบเบฐเปเบเบเบเบตเปเบกเบฑเบเบเบฐเบกเบตเบชเบฝเบเบเปเบฒเบเบเบทเบเบตเป: "เบขเบนเปโเบเบตเปโเบเบตเป
เปเบเปเปเบกเบทเปเบญเบเบฐเบฅเบดเบกเบฒเบเบเบญเบ "เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ" เบเบตเปเปเบฅเบตเปเบกเบงเบฑเบเปเบเบเปเบเบฑเบเบซเบผเบฒเบเบฎเปเบญเบ megabytes, เปเบฅเบฐเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเปเบญเบเบชเบทเบเบเปเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ 24x7, เบเบปเบเบเปเบฒเบเบเบฝเบเบซเบผเบฒเบเบขเปเบฒเบเปเบเบตเบเบเบทเปเบเบเบตเปเบเบฐเบเปเบฒเบฅเบฒเบเบเบตเบงเบดเบเบเบญเบเปเบเบปเปเบฒ.
เปเบเบทเปเบญเบเบฑเบเบเบฒเบเบเบฑเบเบเบงเบเบกเบฑเบเปเบ PostgreSQL (เปเบฅเบฐเบเปเปเบเบฝเบเปเบเปเบขเบนเปเปเบเบเบฑเปเบ), เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบธเบเปเบเปเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบเปเปเบงเบเบถเปเบเปเบฅเบฐเบกเบตเบเบฒเบเบเปเบฅเบดเปเบเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบซเบเปเบญเบ.
1. เปเบเบชเบปเปเบเบขเบนเปเปเบช?
เบเปเบฒเบญเบดเบ, เปเบซเปเปเบฎเบปเบฒเบเบฑเบเบชเบดเบเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบญเบฑเบเปเบซเบฅเบเบเปเปเบกเบนเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ "เบเปเบฒเปเบเบตเบเบเบฒเบ."
1.1. เบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบง (TEMPORARY TABLE)
เปเบเบซเบผเบฑเบเบเบฒเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบง PostgreSQL เปเบกเปเบเบเบทเบเบฑเบเบเบฑเบเบญเบทเปเบเป. เปเบเบฒเบฐเบชเบฐเบเบฑเปเบ, เปเบเบเบเบฐเบเบฒเปเบเบฑเปเบ "เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบกเบตเบขเบนเปเปเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเปเบเบปเปเบฒเบเบฑเปเบ, เปเบฅเบฐเบกเบฑเบเบชเบฒเบกเบฒเบเบชเบดเปเบเบชเบธเบเปเบเป". เปเบเปเบเบฑเบเบกเบตเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบตเปเบชเปเบฒเบเบฑเบเบเปเบฒเบเบงเบเบซเบเบถเปเบ.
"namespace" เบเบญเบเบเปเบฒเบเปเบญเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ
เบเปเบฒเบชเบญเบเปเบเบทเปเบญเบกเบเปเปเบเบฐเบเบฒเบเบฒเบกเปเบเบทเปเบญเบกเบเปเปเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ CREATE TABLE x
, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบนเปเปเบเบเบนเปเบซเบเบถเปเบเบเบฐเปเบเปเบฎเบฑเบเปเบเปเบเบญเบ เบเบงเบฒเบกโเบเบดเบโเบเบฒเบโเบเปเปโเปเบเบฑเบโเปเบญโเบเบฐโเบฅเบฑเบโ เบงเบฑเบเบเบธเบเบฒเบเบเปเปเบกเบนเบ.
เปเบเปเบเปเบฒเบเบฑเบเบชเบญเบเบเบฐเบเบฒเบเบฒเบกเบเบฐเบเบดเบเบฑเบ CREATE TEMPORARY TABLE x
, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฑเบเบชเบญเบเบเบฐเปเบฎเบฑเบเบกเบฑเบเปเบเบฑเบเบเบปเบเบเบฐเบเบด, เปเบฅเบฐเบเบธเบเบเบปเบเบเบฐเปเบเปเบฎเบฑเบ เบชเบณเปเบเบปเบฒเบเบญเบเปเบเบปเปเบฒ เปเบเบฐ. เปเบฅเบฐโเบเบฐโเบเปเปโเบกเบตโเบซเบเบฑเบโเบขเบนเปโเปเบโเบเบปเปเบงโเปเบโเบฅเบฐโเบซเบงเปเบฒเบโเปเบเบปเบฒโเปเบเบปเปเบฒโ.
"เบเปเบฒเบฅเบฒเบเบเบปเบเปเบญเบ" เปเบกเบทเปเบญเบเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป
เปเบกเบทเปเบญเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบทเบเบเบดเบ, เบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบงเบเบฑเบเบซเบกเบปเบเบเบฐเบเบทเบเบฅเบถเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบงเบเบเบปเบเปเบญเบ DROP TABLE x
เบเปเปเบกเบตเบเบธเบเปเบเบเบปเบเปเบงเบฑเปเบ ...
เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบ pgbouncer เปเบเบฎเบนเบเปเบเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเบเปเปเบกเบนเบเบเบฑเบเบชเบทเบเบเปเปเปเบเบทเปเบญเบงเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบเบฑเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเป, เปเบฅเบฐเปเบเบเบฑเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบงเบเบตเปเบเบฑเบเบกเบตเบขเบนเป.
เบเบฑเปเบเบเบฑเปเบ, เบเบฐเบเบฒเบเบฒเบกเบชเปเบฒเบเบกเบฑเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เบเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบฑเบ pgbouncer, เบเบฐเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ. เปเบเปเบเบตเปเบชเบฒเบกเบฒเบเบซเบฅเบตเบเบฅเปเบฝเบเปเบเปเปเบเบเบเบฒเบเปเบเป CREATE TEMPORARY TABLE IF NOT EXISTS x
.
เปเบเปเบเบดเบเปเบฅเปเบง, เบกเบฑเบเบเปเปเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเบเปเปเปเบฎเบฑเบเปเบเบงเบเบตเป, เปเบเบฒเบฐเบงเปเบฒเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบ "เบเบฑเบเบเบตเบเบฑเบเปเบ" เบเบญเบเบซเบฒเบเปเปเบกเบนเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเบเบฒเบ "เปเบเบปเปเบฒเบเบญเบเบเปเบญเบ". เปเบเบเบเบตเปเบเบฐ, เบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเบญเปเบฒเบเบเบนเปเบกเบทเปเบฅเบฐเปเบซเบฑเบเบงเปเบฒเปเบกเบทเปเบญเบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบเบตเปเบก ON COMMIT DROP
- เบเบฑเปเบเปเบกเปเบ, เปเบกเบทเปเบญเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบชเปเบฒเปเบฅเบฑเบ, เบเบฒเบเบฐเบฅเบฒเบเบเบฐเบเบทเบเบฅเบถเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ.
เบเปเปเบกเบตเบเบฒเบเบเปเบฒเบฅเบญเบ
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเปเบเบฑเบเบเบฝเบเปเบเปเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบชเบฐเปเบเบฒเบฐ, เบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบงเบเปเปเปเบเปเบเบทเบ replicated. เปเบเป เบเบตเปเบเปเบฒเบเบฑเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบถเบเบเปเปเบกเบนเบเบชเบญเบเปเบเบปเปเบฒ เปเบ heap + WAL, เบเบฑเปเบเบเบฑเปเบ INSERT/UPDATE/DELETE เปเบเบปเปเบฒเปเบเปเบเบกเบฑเบเปเบงเบเบงเปเบฒ.
เปเบเปเปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบงเบเบฑเบเปเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบ "เปเบเบทเบญเบเบเปเบฒเบกเบฐเบเบฒ", เบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบชเปเบฒเบเบขเบนเปเปเบเปเบเบเบเปเบฒเบฅเบญเบเปเบเป. เบขเปเบฒเบเบซเบเปเบญเบเบชเปเบฒเบฅเบฑเบเปเบเบเบฑเบเบเบธเบเบฑเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒ patch เบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเปเบเปเปเบเปเบฅเบฒเบกเปเบเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบ.
1.2. เบเปเปเปเบเปเบเบฑเบเบเบถเบเบเบฒเบเบฐเบฅเบฒเบ
เปเบเปเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเบงเบเปเบฎเบฑเบ, เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเปเบฒเบเบกเบตเบเบฐเบเบงเบเบเบฒเบ ETL เบเบตเปเบซเบเบธเปเบเบเบฒเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเบเบฒเบเปเบเบซเบเบถเปเบเบเบธเบฅเบฐเบเปเบฒ, เปเบเปเบงเปเบฒเบเปเบฒเบเบเบฑเบเบกเบต pgbouncer เปเบเบฎเบนเบเปเบเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ? ..
เบซเบผเบทเบเบฒเบเปเบซเบผเปเบเบปเปเบฒเบเบญเบเบเปเปเบกเบนเบเบกเบตเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบฑเปเบเบเบฑเปเบ เบเปเปเบกเบตเปเบเบเบงเบดเบเบเบฝเบเบเปเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฝเบง เบเบฒเบเบเบฒเบเบเปเปเบกเบนเบ (เบญเปเบฒเบ, เบเบฐเบเบงเบเบเบฒเบเบซเบเบถเปเบเบเปเป CPU)?..
เบซเบผเบทเบเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบกเปเบเบเปเบฒเปเบเบตเบเบเปเปเปเบ asynchronously เปเบโเบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเบเบตเปโเปเบเบโเบเปเบฒเบโเบเบฑเบโ?..
เบกเบตโเบเบฝเบโเปเบเปโเบเบฒเบโเปเบฅเบทเบญเบโเบเบตเปโเบเบตเป - เบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบเปเปเปเบกเปเบเบเบปเปเบงเบเบฒเบง. Pun, เปเบฅเปเบง. เบเบฑเปเบโเปเบกเปเบ:
- เบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบ "เบเบญเบเบเปเบญเบเปเบญเบ" เบเบตเปเบกเบตเบเบทเปเปเบเบเบชเบธเปเบกเบชเบนเบเบชเบธเบเปเบเบทเปเบญเบเปเปเปเบซเปเบเบฑเบเบเบฑเบเปเบ
- เบชเบฒเบเบชเบฐเบเบฑเบเบเบฒเบ: เบเบทเปเบกเบเปเปเบกเบนเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเบเบฒเบเปเบซเบผเปเบเบเบฒเบเบเบญเบ
- เบเบฒเบเบเปเบฝเบเปเบเบ: เบเปเบฝเบเปเบเปเบซเบฅเบทเปเบญเบกเปเบช, เบเบทเปเบกเปเบชเปเปเบเบเปเบญเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบชเปเบฒเบเบฑเบ
- Load: poured เบเปเปเบกเบนเบเบเปเบญเบกเบเบตเปเบเบฐเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบ
- เบฅเบถเบเบเบฒเบเบฐเบฅเบฒเบ "เบเบญเบเบเปเบญเบ" เปเบฅเปเบง
เปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบ - เปเบกเบเบงเบฑเบเปเบเบขเบฒเบเบตเปเปเบเบดเปเบเปเบเป. เปเบโเบเบงเบฒเบกโเปเบเบฑเบโเบเบดเบ, เบเบฒเบเบเบฝเบเบเบฑเบเบซเบกเบปเบเปเบ PostgreSQL เปเบเบตเบเบเบถเปเบเบชเบญเบเบเบฑเปเบ - COMMIT
'nutty เปเบฅเบฐ ROLLBACK
'เบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ null.
เปเบเปโเบเบงเบโเปเบฎเบปเบฒโเบเปเปโเบเปเบฒโเปเบเบฑเบโเบเปเบญเบโเบเบตเปโ! เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฐเบเบงเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ เบกเบฑเบเบเบฐเบชเบปเบเบเบปเบ เบชเบณ เปเบฅเบฑเบเบขเปเบฒเบเบชเบปเบกเบเบนเบเบซเบผเบทเบเปเป.. เบกเบฑเบเบเปเปเบชเปเบฒเบเบฑเบเบงเปเบฒเบเบฐเบกเบตเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบซเบผเบฒเบเบเบฒเบเปเบ - เบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบปเบเปเบ "เบชเบทเบเบเปเปเบเบฐเบเบงเบเบเบฒเบเบเบฒเบเบเบฒเบ", เปเบเบเบชเบฐเปเบเบฒเบฐเปเบเปเบงเบฅเบฒเบเบตเปเบกเบฑเบเบเปเปเบเบฑเบเปเบเบเบงเปเบฒเบกเบฑเบเบขเบนเปเปเบช.
เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบฑเบเบเบฑเบเบเบฐเบเบฒ PostgreSQL, เบเบฑเบเบเบทเบเปเบเบเปเบญเบเปเบเบฎเบธเปเบ 9.1, เปเบเปเบเปเบฒเบชเบฐเปเบซเบเบตเปเบเบฑเปเบ:
เบเปเบงเบเบเบปเบงเบเบตเปเบเบญเบเบเบตเป, เบเบฒเบเบฐเบฅเบฒเบเบเบทเบเบชเปเบฒเบเปเบเบฑเบ unlogged. เบเปเปโเบกเบนเบโเบเบตเปโเบเบฝเบโเปเบชเปโเบเบฒโเบเบฐโเบฅเบฒเบโเบเบตเปโเบเปเปโเบเบทเบโเบเบฑเบโเบเบถเบโเบเปเปโเปเบเปโเบเปเบฒเบโเบเบฑเบโเบเบถเบโเบเบฒเบโเบเบฝเบโเบฅเปเบงเบโเบซเบเปเบฒ (เปเบเบดเปเบโเบเบปเบโเบเบต 29โ)โ, เปเบฎเบฑเบโเปเบซเปโเบเบฒโเบเบฐโเบฅเบฒเบโเบเบฑเปเบโเบเปเบฒเบงโเปเบเบฑเบโ. เปเบฎเบฑเบเบงเบฝเบเปเบงเบเบงเปเบฒเบเบปเบเบเบฐเบเบด. เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบเบงเบเปเบเบปเบฒเบเปเปเบกเบตเบเบนเบกเบเปเบฒเบเบเบฒเบเบเบฑเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบง; เปเบเบเปเบฅเบฐเบเบตเบเบญเบเปเบเบตเบเปเบงเบตเบฅเบปเปเบกเปเบซเบฅเบงเบซเบผเบทเบเบดเบเบชเบธเบเปเบชเบตเบ, เบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบเปเปเปเบเปเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ เบเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เปเบเบทเปเบญเปเบเบเบญเบเบเบฒเบเบฐเบฅเบฒเบ unlogged เบเปเปเปเบเปเบชเบณเปเบเบปเบฒ เปเบเบทเปเบญเบฎเบฑเบเปเบเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบเบฑเบเบชเบฐเบเบตเปเบเบเบถเปเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบเปเปเปเบเปเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบเบฐเบเบทเบเบเบปเบเปเบฅเบตเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ.
เปเบเบชเบฑเปเบ เบกเบฑเบเบเบฐเปเบงเบเบถเปเบเบซเบผเบฒเบ, เปเบเปเบเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบ "เบเบปเบ", เบกเบฑเบเบเบฐเปเบเบฑเบเบชเบดเปเบเบเบตเปเบเปเปเบเปเปเบ. เปเบเปเบกเบฑเบเปเบเบตเบเบเบถเปเบเปเบฅเบทเปเบญเบเปเปเบเบปเปเบฒเปเบ, เปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบ ETL เบเบญเบเบเปเบฒเบเบฎเบนเปเบงเบดเบเบตเบเบตเปเบเบฐเปเบเปเปเบเบขเปเบฒเบเบเบทเบเบเปเบญเบ "เบเบฒเบเบเบฒเบ" เบซเบผเบฑเบเบเบฒเบ "เบเบทเปเบเบเบน" เบเบฒเบเบเปเปเบกเบนเบเบเป?
เบเปเบฒเบเปเป, เปเบฅเบฐเบเปเบฅเบฐเบเบตเบเปเบฒเบเปเบเบดเบเปเบกเปเบเบเปเบฒเบเบเบทเบเบฑเบเบเบญเบเบเปเบฒเบ, เปเบซเปเปเบเป UNLOGGED
เปเบเปเบเปเปเปเบเบตเบ เบขเปเบฒเปเบเบตเบเปเบเปเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเบขเบนเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเปเบเปเบเบดเบ, เบเปเปเบกเบนเบเบเบฒเบเบเบตเปเบฎเบฑเบเปเบเบเบเบฑเบเบเปเบฒเบ.
1.3. ON COMMIT { Delete ROWS | เบซเบผเบธเบ}
เบเบฒเบเบเปเปเบชเปเบฒเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบเบถเบเบเบดเบเปเบฒเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบชเปเบฒเปเบฅเบฑเบเปเบเปเบงเบฅเบฒเบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบ.
เบเปเบฝเบงเบเบฑเบ ON COMMIT DROP
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฝเบเปเบฅเปเบงเบเปเบฒเบเปเบเบดเบ, เบกเบฑเบเบชเปเบฒเบ DROP TABLE
, เปเบเปเบกเบต ON COMMIT DELETE ROWS
เบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบกเปเบเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบ - เบกเบฑเบเบเบทเบเบชเปเบฒเบเบเบถเปเบเบขเบนเปเบเบตเปเบเบตเป TRUNCATE TABLE
.
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเบฒเบญเบฐเบเบดเบเบฒเบ meta เบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบงเปเบกเปเบเบเบทเบเบฑเบเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเบเบเบฐเบเบด, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ. เบเบฒเบเบชเปเบฒเบเปเบฅเบฐเบเบฒเบเบฅเบถเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบงเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบฎเบฑเบเปเบซเป "เบญเบฒเบเบฒเบเบเบงเบก" เบฎเปเบฒเบเปเบฎเบเบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบฅเบฐเบเบปเบ 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. เบงเบดเบเบตเบเบฒเบเบเบฝเบ?
เปเบซเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเปเบเปเปเบงเบปเปเบฒเบงเปเบฒ - เปเบเปเบกเบฑเบ
- flow เปเบเบ "เบเบญเบโ" INSERT
,
3. เบงเบดเบเบตเบเบฒเบเบเบธเบเปเบเปเบ?
เบเบฑเปเบเบเบฑเปเบ, เปเบซเป intro เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบดเปเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
- เบเปเบฒเบเบกเบตเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบกเบตเบเปเปเบกเบนเบเบฅเบนเบเบเปเบฒเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบงเปเปเบเบเบฒเบเบเปเปเบกเบนเบเบเบญเบเบเปเบฒเบ 1M เบเบฑเบเบเบถเบ
- เบเบธเบเปเบกเบทเปเบฅเบนเบเบเปเบฒเบชเบปเปเบเบญเบฑเบเปเบซเบกเปเปเบซเปเบเปเบฒเบ "เบฎเบนเบเบเบฒเบ" เปเบเบฑเบก
- เบเบฒเบเบเบฐเบชเบปเบเบเบฒเบเบเบตเปเบเปเบฒเบเบฎเบนเปเบงเปเบฒเปเบเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบง เบเปเปเปเบเบตเบ 10K เบเบฑเบเบเบถเบเบเบฒเบเบเปเบฝเบเปเบเบ
เบเบปเบงเบขเปเบฒเบเบเบฅเบฒเบชเบชเบดเบเบเบญเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเปเบกเปเบ
3.1. เบเบฑเปเบเบเบญเบเบเบฒเบเบเบดเปเบเบเปเปเบกเบนเบเปเบเบฑเบกเบฎเบนเบเปเบเบ
เปเบเบทเปเบญเบเบงเบฒเบกเบเปเบฒเบเบเบฒเบ, เปเบซเปเปเบงเบปเปเบฒเบงเปเบฒเบเปเบฒเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฑเบเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบ - เบเบฝเบเปเบเปเปเบญเบปเบฒเบเบฒเบเบฐเบฅเบฒเบเปเบเบปเปเบฒเปเบเปเบเบฎเบนเบเปเบเบเบเบตเปเบเปเบญเบเบเบฒเบ, เบเบฑเปเบเปเบกเปเบ:
- เปเบญเบปเบฒเบญเบญเบ เบเบธเบเบขเปเบฒเบเบเบตเปเบเปเปเบกเบตเบขเบนเปเปเบฅเปเบง
- เบญเบฑเบเปเบเบ เบเบธเบโเบชเบดเปเบโเบเบธเบโเบขเปเบฒเบโเบเบตเปโเบกเบตโเบขเบนเปโเปเบฅเปเบงโเปเบฅเบฐโเบเปเบฒโเปเบเบฑเบโเบเปเบญเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบฑเบโเบเบธเบโ
- เปเบชเป เบเบธเบโเบชเบดเปเบโเบเบธเบโเบขเปเบฒเบโเบเบตเปโเบเบฑเบโเบเปเปโเบเบฑเบโเปเบเปโเปเบเบตเบโเบเบถเปเบโ
เปเบเบฑเบเบซเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบงเบเปเบฎเบฑเบเปเบเบเปเบฒเบชเบฑเปเบเบเบตเป? เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบฒเบเบเบฐเบซเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบฐเบเบฐเบซเบเบฒเบเบเบปเบงเบซเบเปเบญเบเบเบตเปเบชเบธเบ (
เบฅเบถเบเบญเบญเบเบเบฒเบ dst
เบเปเป, เปเบเปเบเบญเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบเปเปเบเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฝเบเปเบเปเบชเบญเบเบขเปเบฒเบ:
- เปเบญเบปเบฒเบญเบญเบ (
DELETE
) เบเบธเบโเบชเบดเปเบโเบเบธเบโเบขเปเบฒเบโเปเบเบโเบเบปเปเบงโเปเบโ - เปเบชเป เบเบฑเบโเบซเบกเบปเบโเบเบฒเบโเบฎเบนเบโเบเบฒเบโเปเบซเบกเปโ
เปเบเปเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเบญเบเปเบ MVCC, เบเบฐเบซเบเบฒเบเบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบฐเปเบเบตเปเบกเบเบถเปเบเปเบเปเบเบญเบเบชเบญเบเปเบเบปเปเบฒ! เบเบฒเบเปเบเปเบฎเบฑเบ +1M เบฎเบนเบเบเบฒเบเบเบญเบเบเบฑเบเบเบถเบเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบญเบฑเบเปเบเบ 10K เปเบกเปเบเบเปเปเบฒเบเปเบญเบเบเบฑเปเบเบเบฑเปเบ ...
เบเบฑเบ dst
เบเบนเปเบเบฑเบเบเบฐเบเบฒเบเบตเปเบกเบตเบเบฐเบชเบปเบเบเบฒเบเบซเบผเบฒเบเบฎเบนเปเบงเปเบฒเปเบเบฑเบเปเบฅเบฑเบเบเบฑเบเบซเบกเบปเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบเบงเบฒเบกเบชเบฐเบญเบฒเบเปเบเปเบฅเบฒเบเบฒเบเบทเบ:
- เบเบฐเปเบเปเบ (
TRUNCATE
) เบเบฒโเบเบฐโเบฅเบฒเบโเบเบฑเบโเบซเบกเบปเบโ - เปเบชเป เบเบฑเบโเบซเบกเบปเบโเบเบฒเบโเบฎเบนเบโเบเบฒเบโเปเบซเบกเปโ
เบงเบดโเบเบตโเบเบฒเบโเปเบกเปเบโเบเบฐโเบชเบดเบโเบเบดโเบเบปเบโ,
เบซเบกเบฒเบโเบเบงเบฒเบกโเบงเปเบฒ:
- เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบฅเบตเปเบกเบเบปเปเบ เบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบตเปเบเบฒเบงเบเบฒเบ
TRUNCATE
เบเบฑเบเบเบฑเบ เปเบเบปเปเบฒเปเบเบดเบเบชเบฐเปเบเบฒเบฐ- เบชเบฐเบเบฑเบ- เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบเบฒเบเปเบเบเบชเปเบฒเบฅเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบ, เปเบฅเบฐเบเบธเบเบเบปเบเบญเบทเปเบเปเปเบเปเบงเบฅเบฒเบเบตเป เบเปเปเบชเบฒเบกเบฒเบเปเบกเปเปเบเป
SELECT
เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเปเปเบเบต ...
เบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเปเบฝเบเปเบเบ... เปเบเบเบเบทเป... / เบงเบฒเบเบเบฒเบเบฐเบฅเบฒเบ...
เบเบฒเบเปเบฅเบทเบญเบเปเบกเปเบเบเบฒเบเบเบทเปเบกเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบซเบกเปเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฝเบเปเบเปเบเปเบฝเบเบเบทเปเบกเบฑเบเปเบเบเบเบตเปเปเบเบปเปเบฒ. เบชเบญเบโเบชเบฒเบกโเบชเบดเปเบโเปเบฅเบฑเบโเบเปเบญเบโเบเบตเปโเบซเบเปเบฒโเบเบฝเบโ:
- เบเบฑเบเบเบทเบเบฑเบ เปเบเบปเปเบฒเปเบเบดเบเบชเบฐเปเบเบฒเบฐ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเปเบงเบฅเบฒเบซเบเปเบญเบเบฅเบปเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบ
- เปเบเบโเบเบฒเบโเบชเบญเบโเบเบฒเบกโเบเบฑเบโเบซเบกเบปเบ / เบชเบฐโเบเบดโเบเบดโเบชเปเบฒโเบฅเบฑเบโเบเบฒโเบเบฐโเบฅเบฒเบโเบเบตเปโเปเบกเปเบโเปเบเปโเบเบทเบโเบเบฑเบโเปเบซเบกเปโ,
เบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบ ANALYZE - เบเบฐเปเบเบเปเบฒเบเบเบฐเปเบเบเบเบฑเบเปเบปเบเบเบทเบเปเบเบ (FK) เบเบฑเบเบเบฒเบเบฐเบฅเบฒเบ
เบกเบตเปเบเปเบเปเบ WIP เบเบฒเบ Simon Riggs เบเบตเปเปเบเบฐเบเปเบฒเปเบซเปเปเบฎเบฑเบ 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 เบเบฝเบงเบเบฑเบ, เบเบฑเบเบเบถเบเบเบตเปเบเปเบฝเบเปเบเบเบเบฑเบเบซเบกเบปเบเบเบฐเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบตเปเบกเปเบเบตเบกเปเบเบเบเปเบฒเบเบเบฒเบเบเบธเบเปเบเปเบเบซเบฅเบฑเบ - เบเบปเบเบเบฐเบเบด, เปเบเบฑเปเบเปเบชเปเบเปเบฒเบซเบฅเบฑเบ, เปเบฅเบฐเบซเบผเบธเบเบฅเบปเบเปเบเปเบเบเบชเปเบฒเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเป. เปเบเปโเปเบเบปเปเบฒโเบฎเบนเปโเปเบเปโเปเบเบงโเปเบ - เบชเบดเปเบเบเบตเปเปเบเปเบเบญเบเบเปเบฝเบเปเบเบเปเบเบเบเปเปเบกเบตเบเบฒเบ complicating เบฅเบฐเบซเบฑเบ synchronization, เปเบเบเบชเบฐเปเบเบฒเบฐเปเบเบเบเปเปเบกเบตเบเบฒเบเบชเปเบฒเบเบฑเบเบเบฑเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบ?
เบเปเบฒเบเบฝเบเปเบเปเบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเปเบฒเบเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบเบฝเบเปเบเปเบงเบฅเบฒเบเบตเป synchronization, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป trigger เบเบตเปเบเบฐเปเบเบฑเบเบเปเบฒเบเบฒเบเบเปเบฝเบเปเบเบเบเบฑเบเบซเบกเบปเบเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒ:
-- ัะตะปะตะฒัะต ัะฐะฑะปะธัั
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;
เบเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบณเปเบเป triggers เบเปเบญเบเบเบตเปเบเบฐเปเบฅเบตเปเบก synchronization (เบซเบผเบทเปเบเบตเบเปเบเปเบเบงเบเบกเบฑเบเบเปเบฒเบ 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;
เปเบเบทเปเบญเปเบเบทเปเบญเบกเปเบเบเบเบฑเบเบเบตเบเบฑเบ ID เบฅเบนเบเบเปเบฒเบขเปเบฒเบเบเบทเบเบเปเบญเบ, เบเปเบญเบเบญเบทเปเบเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบญเบเบซเบฒ เบซเบผเบทเบชเปเบฒเบเบเบปเบงเบฅเบฐเบเบธเปเบซเบผเบปเปเบฒเบเบตเป. เปเบซเปเปเบเบตเปเบกเบเปเบญเบเปเบชเปเบเบฒเบเปเบเปเบเบงเบเบกเบฑเบ:
ALTER TABLE invoice_import ADD COLUMN client_id integer;
ALTER TABLE client_import ADD COLUMN client_id integer;
เปเบซเปเปเบเปเบงเบดเบเบตเบเบฒเบ synchronization เบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบเบเปเบงเบเบเบฒเบเบเบฑเบเปเบเปเปเบฅเบฑเบเบเปเบญเบ - เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบเบฑเบเบเบธเบเบซเบผเบทเบฅเบถเบเบชเบดเปเบเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบ, เปเบเบฒเบฐเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบปเปเบฒเบฅเบนเบเบเปเบฒ "append-only":
-- ะฟัะพััะฐะฒะปัะตะผ ะฒ ัะฐะฑะปะธัะต ะธะผะฟะพััะฐ 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