DBA: แƒ™แƒแƒ›แƒžแƒ”แƒขแƒ”แƒœแƒขแƒฃแƒ แƒแƒ“ แƒ›แƒแƒแƒฌแƒงแƒ”แƒ— แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ“แƒ แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜

แƒ“แƒ˜แƒ“แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒกแƒฃแƒ แƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ ETL แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜: แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜, แƒ™แƒแƒœแƒ•แƒ”แƒ แƒขแƒแƒชแƒ˜แƒ แƒ“แƒ แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ’แƒแƒ แƒ” แƒฌแƒงแƒแƒ แƒแƒกแƒ—แƒแƒœ) แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ— "แƒ“แƒแƒ˜แƒ›แƒแƒฎแƒกแƒแƒ•แƒ แƒ”แƒ—" แƒ“แƒ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ“แƒแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ— แƒ แƒแƒฆแƒแƒช แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒ—แƒ˜.

แƒแƒ› แƒขแƒ˜แƒžแƒ˜แƒก แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒแƒกแƒ” แƒŸแƒฆแƒ”แƒ แƒก: โ€žแƒกแƒฌแƒแƒ แƒ”แƒ“ แƒแƒฅ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ‘แƒแƒœแƒ™แƒ˜แƒ“แƒแƒœ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜ แƒ‘แƒฃแƒฆแƒแƒšแƒขแƒ”แƒ แƒ˜แƒ แƒ‘แƒแƒšแƒ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒฎแƒ“แƒ”แƒ‘แƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ–แƒ” แƒ“แƒ แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒก"

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒ› โ€žแƒ แƒแƒฆแƒแƒชแƒ˜แƒกโ€œ แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ แƒแƒกแƒแƒ‘แƒ˜แƒ— แƒ›แƒ”แƒ’แƒแƒ‘แƒแƒ˜แƒขแƒจแƒ˜ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ›แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ’แƒ แƒซแƒ”แƒšแƒแƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒกแƒ—แƒแƒœ 24x7, แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒ—แƒ˜ แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒแƒœแƒแƒ“แƒ’แƒฃแƒ แƒ”แƒ‘แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒแƒก.
DBA: แƒ™แƒแƒ›แƒžแƒ”แƒขแƒ”แƒœแƒขแƒฃแƒ แƒแƒ“ แƒ›แƒแƒแƒฌแƒงแƒ”แƒ— แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ“แƒ แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜
แƒ›แƒแƒ—แƒ—แƒแƒœ แƒ’แƒแƒ›แƒ™แƒšแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก 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 - แƒแƒœแƒฃ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ, แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒฌแƒแƒ˜แƒจแƒšแƒ”แƒ‘แƒ.

แƒแƒ แƒแƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ

แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ”แƒ™แƒฃแƒ—แƒ•แƒœแƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก, แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ“แƒ”แƒ‘แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒ’แƒแƒ›แƒแƒ แƒ˜แƒชแƒฎแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก heap + WAL-แƒจแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ›แƒแƒกแƒจแƒ˜ แƒฉแƒแƒกแƒ›แƒ/แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ/แƒฌแƒแƒจแƒšแƒ แƒ’แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒกแƒฌแƒ แƒแƒคแƒ˜แƒ.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ› แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• "แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜" แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒ, แƒ˜แƒก แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒแƒก แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒ–แƒ”แƒช. แƒงแƒแƒ•แƒ”แƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฏแƒ”แƒ แƒฏแƒ”แƒ แƒแƒ‘แƒ˜แƒ—, แƒ—แƒฃแƒ›แƒชแƒ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒžแƒแƒขแƒฉแƒ˜ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒแƒœแƒ˜แƒ แƒขแƒ แƒ˜แƒแƒšแƒ”แƒ‘แƒก.

1.2. แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒ˜แƒ“แƒ

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ—, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฃ แƒ’แƒแƒฅแƒ•แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒแƒฎแƒ˜แƒก แƒจแƒ แƒแƒ›แƒแƒขแƒ”แƒ•แƒแƒ“แƒ˜ ETL แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ•แƒ”แƒ  แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒ˜แƒœแƒช แƒ’แƒแƒฅแƒ•แƒ— pgbouncer แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜? ..

แƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜ แƒ˜แƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜แƒ, แƒ แƒแƒ› แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒขแƒแƒ แƒแƒ‘แƒ แƒ”แƒ แƒ— แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ–แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒ“แƒแƒœ (แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ—, แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ—แƒ˜แƒ—แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ–แƒ”)?..

แƒแƒœ แƒ แƒแƒฆแƒแƒช แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก แƒแƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒฃแƒšแƒแƒ“ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒจแƒ˜?..

แƒแƒฅ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜แƒ - แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒ แƒแƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜. Pun, แƒ“แƒ˜แƒแƒฎ. แƒแƒœแƒฃ:

  • แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜ "แƒฉแƒ”แƒ›แƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜" แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ—แƒ แƒแƒ  แƒ’แƒแƒ“แƒแƒ˜แƒ™แƒ•แƒ”แƒ—แƒแƒก แƒ•แƒ˜แƒœแƒ›แƒ”แƒกแƒ—แƒแƒœ
  • แƒแƒ›แƒแƒœแƒแƒฌแƒ”แƒ แƒ˜: แƒจแƒ”แƒแƒ•แƒกแƒ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒแƒ แƒ” แƒฌแƒงแƒแƒ แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ—
  • Transform: แƒ’แƒแƒ“แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜, แƒจแƒ”แƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜
  • Load: แƒฉแƒแƒแƒกแƒฎแƒ แƒ›แƒ–แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜
  • แƒฌแƒแƒ˜แƒจแƒแƒšแƒ "แƒฉแƒ”แƒ›แƒ˜" แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜

แƒแƒฎแƒšแƒ แƒ™แƒ˜ - แƒ‘แƒฃแƒ–แƒ˜ แƒ›แƒแƒšแƒแƒ›แƒแƒจแƒ˜. แฒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜, PostgreSQL-แƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒฉแƒแƒฌแƒ”แƒ แƒ แƒแƒ แƒฏแƒ”แƒ  แƒฎแƒ“แƒ”แƒ‘แƒ - แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ WAL-แƒจแƒ˜, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก/แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒแƒ แƒ’แƒแƒœแƒแƒ”แƒ‘แƒจแƒ˜. แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ ACID-แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒกแƒแƒญแƒ”แƒ แƒแƒ“ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ™แƒแƒ แƒ”แƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ˜แƒ— COMMIT'แƒ—แƒฎแƒ˜แƒšแƒ˜แƒแƒœแƒ˜ แƒ“แƒ ROLLBACKแƒœแƒฃแƒšแƒแƒ•แƒแƒœแƒ˜ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ”แƒก! แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒแƒœ แƒ˜แƒงแƒ แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒœ แƒแƒ แƒ.. แƒแƒ  แƒแƒฅแƒ•แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒจแƒฃแƒแƒšแƒ”แƒ“แƒฃแƒ แƒ˜ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ - แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒก โ€žแƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒจแƒฃแƒ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒ— แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒโ€œ, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒฃแƒ แƒ™แƒ•แƒ”แƒ•แƒ”แƒšแƒ˜แƒ แƒกแƒแƒ“ แƒ˜แƒงแƒ.

แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก PostgreSQL แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ›แƒ, แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• 9.1 แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜, แƒจแƒ”แƒ›แƒแƒ˜แƒฆแƒ”แƒก แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒ แƒแƒ›, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒ˜แƒ“แƒ”แƒ‘แƒ˜:

แƒแƒ› แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒ—, แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒฃแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜. แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒš แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ  แƒ’แƒแƒ“แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒจแƒ˜ (แƒ˜แƒฎ. แƒ—แƒแƒ•แƒ˜ 29), แƒ แƒแƒช แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒแƒกแƒ”แƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ–แƒ” แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ. แƒ—แƒฃแƒ›แƒชแƒ, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒแƒœ แƒ˜แƒ›แƒฃแƒœแƒฃแƒ แƒ˜ แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒกแƒ’แƒแƒœ; แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒฃแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒแƒ‘แƒ˜แƒก แƒแƒœ แƒ’แƒแƒ“แƒแƒฃแƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒ—แƒ˜แƒจแƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ’แƒแƒ›แƒแƒ แƒ˜แƒชแƒฎแƒฃแƒšแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒ™แƒ•แƒ”แƒชแƒ. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ’แƒแƒ›แƒแƒขแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ–แƒ”. แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒแƒ แƒแƒšแƒแƒ’แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜, แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜.

แƒ›แƒแƒ™แƒšแƒ”แƒ“, แƒ”แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฃ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ "แƒ“แƒแƒ•แƒแƒ แƒ“แƒ”แƒ‘แƒ", แƒ”แƒก แƒฃแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ”แƒก แƒ“แƒ แƒ˜แƒชแƒ˜แƒก แƒ—แƒฃ แƒแƒ แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ›แƒ ETL แƒžแƒ แƒแƒชแƒ”แƒกแƒ›แƒ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒแƒกแƒฌแƒแƒ แƒแƒก แƒ”แƒก แƒกแƒฌแƒแƒ แƒแƒ“ โ€žแƒจแƒฃแƒแƒ“แƒแƒœโ€œ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก โ€žแƒแƒฆแƒแƒ แƒซแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒกโ€œ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’?..

แƒ—แƒฃ แƒแƒ แƒ แƒ“แƒ แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒกแƒแƒก แƒฐแƒ’แƒแƒ•แƒก, แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— UNLOGGEDแƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒแƒกแƒ“แƒ แƒแƒก แƒแƒ  แƒฉแƒแƒ แƒ—แƒแƒ— แƒ”แƒก แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ–แƒ”, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒกแƒแƒ˜แƒ“แƒแƒœแƒแƒช แƒซแƒ•แƒ˜แƒ แƒคแƒแƒกแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก.

1.3. ON COMIT { แƒ›แƒฌแƒ™แƒ แƒ˜แƒ•แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ | แƒ•แƒแƒ แƒ“แƒœแƒ}

แƒ”แƒก แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒฅแƒชแƒ”แƒ•แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก.

on 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-แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“), แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— LIKE target_table INCLUDING DEFAULTS. แƒแƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ - LIKE target_table INCLUDING ALL - แƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒก, แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒก, แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒก,...

แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฅ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒ”แƒกแƒ›แƒแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒ—แƒฃ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒแƒก แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜ แƒ“แƒ แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ—แƒฃ แƒฏแƒ”แƒ  แƒจแƒ”แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒก แƒ“แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒแƒคแƒแƒ แƒ—แƒแƒ•แƒ”แƒ‘แƒ— แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒก - แƒœแƒแƒฎแƒ”แƒ—, แƒ แƒแƒ’แƒแƒ  แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒแƒ›แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ pg_dump.

แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, RTFM!

2. แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒแƒ—?

แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒ”แƒชแƒ˜แƒ— แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ•แƒ—แƒฅแƒ•แƒ - แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ˜แƒ’แƒ˜ COPY- แƒœแƒแƒ™แƒแƒ“แƒ˜ "แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก" แƒœแƒแƒชแƒ•แƒšแƒแƒ“ INSERT, แƒ“แƒ แƒแƒ“แƒแƒ“แƒ แƒ แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒ. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒ“แƒแƒœแƒแƒช แƒ™แƒ˜.

3. แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒฃแƒจแƒแƒ•แƒแƒ—?

แƒ›แƒแƒ“แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒแƒ“แƒ”แƒก:

  • แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ 1 แƒ›แƒ˜แƒšแƒ˜แƒแƒœแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜
  • แƒงแƒแƒ•แƒ”แƒšแƒ“แƒฆแƒ” แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ’แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒก แƒกแƒ แƒฃแƒšแƒ˜ "แƒกแƒฃแƒ แƒแƒ—แƒ˜"
  • แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ˜แƒชแƒ˜แƒ—, แƒ แƒแƒ› แƒ“แƒ แƒแƒ“แƒแƒ“แƒ แƒ แƒแƒ แƒแƒฃแƒ›แƒ”แƒขแƒ”แƒก 10K แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ

แƒแƒกแƒ”แƒ—แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ˜แƒก แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ KLADR แƒ‘แƒแƒ–แƒ โ€” แƒกแƒฃแƒš แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒงแƒแƒ•แƒ”แƒšแƒ™แƒ•แƒ˜แƒ แƒ”แƒฃแƒš แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒแƒจแƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒชแƒแƒขแƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒแƒ (แƒ“แƒแƒกแƒแƒฎแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ แƒฅแƒ›แƒ”แƒ•แƒ, แƒฅแƒฃแƒฉแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ, แƒแƒฎแƒแƒšแƒ˜ แƒกแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒฉแƒ”แƒœแƒ) แƒ—แƒฃแƒœแƒ“แƒแƒช แƒ”แƒ แƒแƒ•แƒœแƒฃแƒšแƒ˜ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒ—.

3.1. แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜

แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ แƒช แƒ™แƒ˜ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ - แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ›แƒ˜แƒ˜แƒขแƒแƒœแƒ”แƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒคแƒแƒ แƒ›แƒแƒจแƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก:

  • แƒแƒ›แƒแƒ˜แƒฆแƒ” แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒแƒช แƒแƒฆแƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก
  • แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒ แƒแƒช แƒฃแƒ™แƒ•แƒ” แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ“แƒ แƒ“แƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒแƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก
  • แƒฉแƒแƒ“แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒแƒช แƒฏแƒ”แƒ  แƒแƒ  แƒ›แƒแƒ›แƒฎแƒ“แƒแƒ แƒ

แƒ แƒแƒขแƒแƒ› แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒแƒ› แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ—? แƒ แƒแƒ“แƒ’แƒแƒœ แƒแƒกแƒ” แƒ’แƒแƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒแƒ“ (แƒ“แƒแƒ˜แƒ›แƒแƒฎแƒกแƒแƒ•แƒ แƒ” MVCC!).

แƒฌแƒแƒจแƒšแƒ dst

แƒแƒ แƒ, แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ แƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ˜แƒ—:

  • แƒแƒ›แƒแƒ˜แƒฆแƒ” (DELETE) แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜
  • แƒฉแƒแƒ“แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒ“แƒแƒœ

แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก, MVCC-แƒ˜แƒก แƒฌแƒงแƒแƒšแƒแƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ˜แƒ“แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒแƒ แƒฏแƒ”แƒ  แƒ’แƒแƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ! แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก +1M แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ 10K แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ–แƒ”แƒ“แƒ›แƒ”แƒขแƒ˜แƒ...

TRUNCATE แƒ“แƒกแƒข

แƒฃแƒคแƒ แƒ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ›แƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ›แƒ แƒ˜แƒชแƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒ—แƒ”แƒšแƒ˜ แƒขแƒแƒ‘แƒšแƒ”แƒขแƒ˜แƒก แƒ’แƒแƒฌแƒ›แƒ”แƒœแƒ“แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ˜แƒแƒคแƒแƒ“ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ:

  • แƒœแƒแƒ—แƒ”แƒšแƒ˜แƒ (TRUNCATE) แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ›แƒแƒ’แƒ˜แƒ“แƒ
  • แƒฉแƒแƒ“แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒ“แƒแƒœ

แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜แƒ, แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ... แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— 1M แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒแƒกแƒ” แƒ แƒแƒ›, แƒแƒ  แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒ˜แƒก แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜ แƒ“แƒแƒขแƒแƒ•แƒ”แƒ‘แƒ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒแƒ› แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ (แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ”แƒ แƒ— แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒแƒจแƒ˜ แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”).

แฒ แƒแƒช แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก:

  • แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— แƒ’แƒ แƒซแƒ”แƒšแƒ•แƒแƒ“แƒ˜แƒแƒœแƒ˜ แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒ
  • TRUNCATE แƒแƒฌแƒ”แƒกแƒ”แƒ‘แƒก AccessExclusive- แƒ“แƒแƒ‘แƒšแƒแƒ™แƒ•แƒ
  • แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ— แƒฉแƒแƒกแƒ›แƒแƒก แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒแƒ› แƒ“แƒ แƒแƒก แƒ•แƒ”แƒ แƒช แƒ™แƒ˜ SELECT

แƒ แƒแƒฆแƒแƒช แƒแƒ  แƒ›แƒ˜แƒ“แƒ˜แƒก แƒ™แƒแƒ แƒ’แƒแƒ“...

แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒโ€ฆ แƒ’แƒแƒ“แƒแƒ แƒฅแƒ›แƒ”แƒ•แƒโ€ฆ / แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒฉแƒแƒ›แƒแƒจแƒšแƒโ€ฆ

แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒ•แƒ แƒแƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒจแƒ”แƒ•แƒกแƒ”แƒ‘แƒ แƒชแƒแƒšแƒ™แƒ” แƒแƒฎแƒแƒš แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒ แƒฅแƒ›แƒ”แƒ•แƒ แƒซแƒ•แƒ”แƒšแƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“. แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒแƒ–แƒ˜แƒ–แƒฆแƒแƒ แƒ˜ แƒžแƒแƒขแƒแƒ แƒ แƒ แƒแƒ›:

  • แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• AccessExclusive, แƒ—แƒฃแƒ›แƒชแƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ
  • แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ’แƒ”แƒ’แƒ›แƒ/แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ แƒแƒ› แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒ, แƒกแƒแƒญแƒ˜แƒ แƒแƒ 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-แƒจแƒ˜, แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ–แƒ˜แƒ— - แƒœแƒแƒ แƒ›แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ, แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ’แƒแƒกแƒ›แƒ แƒ“แƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ”แƒ‘แƒแƒ›แƒ“แƒ” แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒแƒ˜แƒ“แƒแƒœ แƒ˜แƒชแƒ˜ - แƒ แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ แƒ–แƒฃแƒกแƒขแƒแƒ“แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ  แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ›แƒแƒกแƒ–แƒ” แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒจแƒ”แƒฎแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”?

แƒ—แƒฃ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒก แƒแƒฅแƒ•แƒก แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒก แƒงแƒ•แƒ”แƒšแƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒแƒก แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก:

-- ั†ะตะปะตะฒั‹ะต ั‚ะฐะฑะปะธั†ั‹
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;

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก ID-แƒ”แƒ‘แƒ—แƒแƒœ, แƒฉแƒ•แƒ”แƒœ แƒฏแƒ”แƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒแƒ แƒ™แƒ•แƒ˜แƒแƒ— แƒแƒœ แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ แƒ”แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜. แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ— แƒฅแƒ•แƒ”แƒจ:

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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ