ืืื"ื ืืฆืื ืืื ืืืฉืืช ืืืืคืฉืจืืช ืขืงืื ืืืจ ืืืืฆืืขืื ืฉื ืฉืืืืชืืช SQL ืืืฉืจ ืืฉ ืืืืืื ื ืฉืืืืชืืช ืืื ืืืื, ืืืฉ ืืืืช ืฉืจืชื PostgreSQL ืื ืืืจืื.
ืืืื ืคืชืจืื ืืช ืืื ืืื ืืืคืฉืจืื ืื ื ืืขืื ืืืขืืืืช ืืืืช ืืื ืฉื ืืืืข, ืืืืฆื ืื ืืงื ืขื ืืืื ืฉื ืืคืชื ืจืืื?
ืืช ืื ืื ืืขื ืืื? ื ืืชืื ืฉื ืืขืืืช ืกืคืฆืืคืืืช ืืืื ืืงืืช ืืืคืืืืืืฆืื ืฉืื ืืช ืฉืืืืชืืช SQL ืืคืชืจืื ืืขืืืช DBA ืืืคืืกืืืช ื-PostgreSQL - ืืชื ืืืื ืื
ืฉืื ืงืืจืื ืืืจืืืืงืื, ืื ื ืืืืฆื
ืืืื ืืกืคืจ ืืื ืืืฆื ืื ื ืืืืขืืื ืฉืืืืชืืช, ืืืฉืจ ืืื ืื ืฆืจืืืื "ืืืจืืจ" ืืช ืืืืฆืืขืื ืฉื ืฉืืืืชื ืืืืืช, ืืื ืืคืชืืจ ืืช ืืืขืื ืืืืื ืืื. ืืฉืืฉ ืืืืืื ื ืืงืฉืืช, ืืืชื ืฆืจืื ืืืฆืื ืืื ืืืฉืืช ืืคืชืจืื ืืืขืื ืืืืืื ืืื.
ืืืืคื ืืืื, Tensor ืขืืืจ ืืืืืื ืืืงืืืืช ืฉืื ื ืืื
ืืื ืืืืืื ืฉืืืื ืืขืืื ืืืชืคืชืื ืืจืืื, ืืฉ ืื ื 10 ืืจืืื ืคืืชืื ืืจืืื ืืืจืฅ, ืืืื ืขืื 1000 ืืคืชืืื.
ืื ื ืขืืืืื ืขื PostgreSQL ืืื 2008 ืืฆืืจื ื ืืืืช ืืืืื ืืื ืฉืื ื ืืขืืืื - ื ืชืื ื ืืงืืืืช, ืกืืืืกืืืื, ืื ืืืืืื, ื ืชืื ืื ืืืขืจืืืช ืืืืข ืืืฆืื ืืืช - ืืืชืจ ื-400TB. ืืฉ ื-250 ืฉืจืชืื ืืืืฆืืจ ืืืื, ืืืกื ืืื ืืฉ ื-1000 ืฉืจืชื ืืกื ื ืชืื ืื ืฉืื ืื ื ืืคืงืืื ืขืืืื.
SQL ืืื ืฉืคื ืืฆืืจืชืืช. ืืชื ืื ืืชืืจ "ืืื" ืืฉืื ืฆืจืื ืืขืืื, ืืื "ืื" ืืชื ืจืืฆื ืืืฉืื. ื-DBMS ืืืืข ืืื ืืืชืจ ืืื ืืขืฉืืช JOIN - ืืื ืืืืจ ืืช ืืืืืืืช ืฉืื, ืืืื ืชื ืืื ืืืฆืื, ืื ืืขืืืจ ืืืื ืืงืก, ืื ืื...
ืืื DBMSs ืืงืืืื ืจืืืื: "ืื, ืืืจ ืืช ืฉืชื ืืืืืืืช ืืืื ืืชืืจ ืืื ืืืืจ", ืืื PostgreSQL ืื ืืืื ืืขืฉืืช ืืืช. ืื ืืขืืื ืืืืืขืช ืฉื ืืคืชืืื ืืืืืืื: "ืื ืื ื ืืขืืืคืื ืืกืืื ืืช ืืื ืืืืคืืืืืืฆืื ืฉื ืืฉืืืืชืืช ืืืฉืจ ืืืคืฉืจ ืืืคืชืืื ืืืฉืชืืฉ ืืกืื ืฉื ืจืืืื."
ืืื, ืืืจืืช ืืขืืืื ืฉ-PostgreSQL ืืื ื ืืืคืฉืจ ื"ืืืฅ" ืืฉืืื ืืขืฆืื, ืืื ืืืคืฉืจ ืืืืคื ืืืฉืื ืืจืืืช ืื ืงืืจื ืืชืืืืืืฉืจ ืืชื ืืคืขืื ืืช ืืฉืืืืชื ืฉืื, ืืืืื ืืื ื ืชืงืืช ืืืขืืืช.
ืืืืคื ืืืื, ืขื ืืืื ืืขืืืช ืงืืืกืืืช ืืืืข ืืืจื ืืื ืืคืชื [ื-DBA]? "ืืื ืืืืื ื ืืช ืืืงืฉื, ื ืืื ืืืื ืืฆืื ื, ืืื ืชืืื, ืืฉืื ืงืืจื... ืืืื ืฆืจืืช!โ
ืืกืืืืช ืืืขื ืชืืื ืืืืช:
- ืืืืืจืืชื ืฉืืืืชื ืื ืืขืื
ืืคืชื: "ืขืืฉืื ืื ื ื ืืชื ืื 10 ืืืืืืช ื-SQL ืืจื JOIN..." - ืืืฆืคื ืฉืืชื ืืื ืฉืื ืืืืจื ืคืื "ืืชืืจื" ืืืขืืืืช ืืืื ืืงืื ืืื ืืืืืจืืช. ืืื ื ืืกืื ืื ืงืืจืื, ืืื ืืขืจืืช ืขื ืฉืื ืืช ืืื (10 ืืืืืืช ื-FROM ืืื) ืชืืื ื ืืชื ืช ืืืืืฉืื ืฉืืืื. [ืืืืจ ] - ืกืืืืกืืืงื ืืืืฉื ืช
ื ืงืืื ืื ืจืืืื ืืืช ืืืื ืกืคืฆืืคืืช ืขืืืจ PostgreSQL, ืืืฉืจ "ืฉืคืืช" ืืขืจื ื ืชืื ืื ืืืื ืขื ืืฉืจืช, ืฉืื ืืงืฉื, ืืืื "ืืกืงืก" ืืช ืืืืืื ืฉืื. ืื ืืชืืื ืืื ืื 10 ืจืฉืืืืช, ืืืืื ืืฉ 10 ืืืืืื, ืืื PostgreSQL ืขืืืื ืื ืืืืข ืืื, ืืื ืื ื ืฆืจืืืื ืืกืคืจ ืืช ืื ืขื ืื. [ืืืืจ ] - "ืชืงืข" ืืฉืืืื
ืืชืงื ืช ืืกื ื ืชืื ืื ืืืื ืืขืืืก ืืืืืืช ืขื ืฉืจืช ืืืฉ ืฉืืื ืื ืืกืคืืง ืืืฆืืขื ืืืกืง, ืืืืจืื ืื ืืขืื. ืืื ืืื... ืืืคืฉืื ืืฉ ืชืงืจืช ืืืฆืืขืื ืฉืืขืืื ืืืจ ืื ืืคืฉืจ ืืงืคืืฅ. - ืืกืืื
ืื ื ืงืืื ืงืฉื, ืืื ืื ืจืืืื ืืืืช ืืืืชืจ ืขืืืจ ืฉืืืืชืืช ืฉืื ืื ืฉืื ืืช (INSERT, UPDATE, DELETE) - ืื ื ืืฉื ืืืื ื ืคืจื.
ืืงืื ืชืืื ืืช
...ืืืื ืืฉืืจ ืื ืื ื ืฆืจืื ืชืืื ืืช! ืื ืื ื ืฆืจืืืื ืืจืืืช ืื ืงืืจื ืืชืื ืืฉืจืช.
ืชืืื ืืช ืืืฆืืข ืฉืืืืชื ืขืืืจ PostgreSQL ืืื ืขืฅ ืฉื ืืืืืจืืชื ืืืฆืืข ืฉืืืืชื ืืืืฆืื ืืงืกื. ืืืืงื ืืืืืืจืืชื, ืืชืืฆืื ืื ืืชืื ืฉื ืืืชืื ื, ื ืืฆื ืืืขืื ืืืืชืจ.
ืื ืฆืืืช ืขืฅ ืืื ืคืขืืื: ืฉืืืคืช ื ืชืื ืื ืืืืื ืื ืืื ืืงืก, ืื ืืืช ืืคืช ืกืืืืืช, ืฆืืจืืฃ ืฉืชื ืืืืืืช, ืืฆืืจืคืืช, ืืฆืืื ืื ืื ืืืืื ืฉื ืืืืจืืช. ืืืฆืืข ืฉืืืืชื ืืจืื ืืืืืื ืืฆืืชืื ืฉื ืขืฅ ืื.
ืืื ืืงืื ืืช ืชืืื ืืช ืืฉืืืืชืืช, ืืืจื ืืงืื ืืืืชืจ ืืื ืืืฆืข ืืช ืืืฆืืจื EXPLAIN
. ืืื ืืงืื ืืช ืื ืืชืืื ืืช ืืืืืชืืืช, ืืืืืจ ืืืฆืข ืฉืืืืชื ืขื ืืืกืืก ืืคืืขื - EXPLAIN (ANALYZE, BUFFERS) SELECT ...
.
ืืืืง ืืจืข: ืืฉืืชื ืืคืขืื ืืช ืื, ืื ืงืืจื "ืืื ืืขืืฉืื", ืื ืื ืืชืืื ืจืง ืื ืืคืื ืืืืื ืืงืืื. ืื ืืชื ืืืงื ืฉืจืช ืืขืื ืืืื ืฉื ืืฆื ืชืืช ืืจืืื ืืืงื ืฉื ืฉืื ืืืื ืื ืชืื ืื, ืืชืจืื: "ืืื! ืืื ืืฉ ืื ื ืืืฆืืข ืืืืืกืื ืึผึทืงึธืฉืึธื." ืืคื ื ืืฆื ืฉืขื, ืฉืขื - ืืืื ืฉืืจืฆืช ืืงืืืืช ืืช ืืืงืฉื ืืื ืืืืืืื, ืืืืืจืช ืืืชื ืืฉืจืช, ืื ืืขืจื ืื ืชืื ืื ืืืกืืืืกืืืงื ืฉืื ืืฉืชื ื. ืืชื ืืคืขืื ืืืชื ืืื ืืืชืจ ืืืืื - ืืืื ืคืืขื ืืืืืจืืช! ืืืชื ืื ืืืื ืืืืื ืืื, ืืื ืื ืืื ืืื.
ืขื ืื ืช ืืืืื ืื ืงืจื ืืืืืง ืืจืืข ืฉืื ืืืฆืขื ืืืงืฉื ืืฉืจืช, ืืชืื ืื ืฉืื ืืืืื
ืื ืืื ืืืื ืฉืืงืฉื ืืืฉืื ืคืืขืืช ืืืชืจ ืืืืืืื ืฉืืืจืช ืื, ืืื ืขืืฉื ืืืช "ืชืืื ื" ืฉื ืืชืืื ืืช ืฉื ืืงืฉื ืื ืืืืชืืช ืืืชื ืืื ืืืืื.
ืืื ื ืจืื ืืกืืจ ืขืืฉืื, ืื ืื ื ืืืืืื ืืืืื ืืจืืืื ืฉื... [ืืงืกื ืืฃ ืจืื]. ืืื ืื ืื ื ืื ืืืืืื ืืืืื ืฉืื ืืืจ ืขื ืื, ืืืื ืืขืืืื ืฉืื ืชืืื ืืช ืืฆืืื ืช ืื ืื ืืงื 11ms ืืืืฆืืข.
ืืื ื ืจืื ืืกืืจ - ืืื ืฉืื ืืืจ ืื ืืจืืจ ืื ืืืืช ืงืจื. ืืืฅ ืืืืื ืืืืื, ืื ืื ื ืื ืืืฉ ืจืืืื ืืืื. ืืืืืื ืฉืืกืชืืืืช ืขื "ืืืฉ" ืืื ืฉื ืืงืกื ืจืืื ืืื ืืืจื ืืื ืื ืืืืืืืืช.
ืืื ืื ืื ืื ืื ืืจืืจ, ืื ืื ืื ืื ื ืื, ืืฉ ืืขืืืช ืขืงืจืื ืืืช ืืืชืจ:
- ืืฆืืืช ืืฆืืื ืกืืื ืืืฉืืืื ืฉื ืื ืืืฉื ื ืืชืืชืื. ืืืืืจ, ืืชื ืื ืืืื ืคืฉืื ืืืืืช ืืื ืืื ืืืฉืงืข ืืกืจืืงืช ืืืื ืืงืก ืืกืคืฆืืคืืช ืืื ืื ืืฉ ืชื ืื ืืงืื ื ืชืืชืื. ืขืืื ื ืืืกืชืื ืืืืคื ืืื ืื ืืื ืืจืืืช ืื ืืฉ "ืืืืื" ืืืฉืชื ืื ืืืชื ืื, CTEs ืืคื ืื - ืืืืคืืืช ืืช ืื ืื "ืืืื ืฉืื ื".
- ื ืงืืื ืฉื ืืื: ืืืื ืฉืืฆืืื ืขื ืืฆืืืช ืืื ืืื ืืืฆืืข ืฉื ืฆืืืช ืืืื. ืื ืืฆืืืช ืืื ืืืฆืข ืืชืืฆืื, ืืืฉื, ืืืืืื ืืจื ืจืฉืืืืช ืืืื ืืกืคืจ ืคืขืืื, ืืื ืืกืคืจ ืืืืืืืช - ืืืืืจืื ืฉื ืฆืืืช ืื - ืืื ืืชืืื ืืช. ืืื ืืื ืืืืฆืืข ืืืืืื ืขืฆืื ื ืฉืืจ ืืื ืืืืื ืช ืืชืืื ืืช. ืืืืืจ, ืืื ืืืืื ืืื ืืื ืืฆืืืช ืืื ืืืฆืข ืืกื ืืื, ืืชื ืฆืจืื ืืืืคืื ืืืจ ืืื ืืฉื ื - ืฉืื, "ืืจืืฉ ืฉืื."
ืืืฆืืื ืืืื, ืืืื ื "ืื ืืืืืื ืืืืฉื ืืืืชืจ?" ืืืขื ืืืชื ืืคืฉืจื. ืืื, ืืคืืื ืืืคืชืืื ืขืฆืื ืืืชืืื ื"ืืืจืื" ืืช ืื "ืืื ืช ืชืืื ืืช ืืื ืืื ืืช ืฉืืฉ ืืืืื, ืืืชื ืกืืช...".
ืืื ืืฉ ืื ื 1000 ืืคืชืืื, ืืืชื ืื ืืืื ืืืขืืืจ ืืช ืืืืืื ืืื ืืื ืืื ืืื. ืื ื, ืืชื, ืืื ืืืืข, ืืื ืืืฉืื ืฉื ืืืจ ืื ืืืืข. ืืืื ืืื ืืืื, ืื ืืืื ืื, ืืื ืืื ืฆืจืื ืืขืืื ืขืืฉืื - ืืืืืคื ืืื ืืงืื ืืช ืื ืืกืืื ืืื?
ืชืื ืื ืืืืื
ืืื, ืืื ื ืฉืืื ืืืชืืืื ืขื ืืืขืืืช ืืืื, ืื ืื ื ืฆืจืืืื ืืืืื ืืืื ืฉื ืืชืืื ืืช.
ืงืืื ืื ืขืืจื ื "ืืจื ืืฉืืง" - ืืืื ื ืกืชืื ืืืื ืืจื ื ืืื ืืจืืืช ืื ืืืื ืงืืื.
ืืื ืืชืืจืจ ืฉืืฉ ืืขื ืืืื ืคืชืจืื ืืช "ืืืื" ืืืกืืช ืฉืืชืคืชืืื ืคืืืช ืื ืืืชืจ - ืคืฉืืื ืืืฉืืขื, ืจืง ืืื:
- ืืื ืืขืืืื ืฉื ืืฆืืืช ืขืฆืื
- ืืืื ืืืืื ืขืืืจ ืื ืืืฉื ื
- ืืกืคืจ ืืจืฉืืืืช ืฉืืืืืจื ืฉืืื ืฆืคืืืืช ืกืืืืกืืืช
- ืืืฃ ืืฆืืืช ืขืฆืื
ืืฉืืจืืช ืื ืืฉ ืื ืืช ืืืืืืช ืืฉืชืฃ ืืจืืืื ืฉื ืงืืฉืืจืื. ืืจืงืช ืืฉื ืืช ืืชืืื ืืช ืฉืื ืืืืจืช: "ืืื, ืืืกืื, ืื ื ืงืืฉืืจ, ืืฉืื ืื ืืกืืจ ืฉื."
ืืื ืืฉ ืื ืืขืืืช ืงืื ืืช.
ืจืืฉืืช, ืืืืช ืขืฆืืื ืฉื "ืืขืชืง-ืืืืง". ืืชื ืืืงื ืืชืืื ืืืืื, ืชืืงืข ืืืชื ืฉื, ืืฉืื, ืืฉืื.
ืฉื ืืช, ืืื ื ืืชืื ืฉื ืืืืช ืื ืชืื ืื ืื ืงืจืืื - ืืืชื ืืืืจืื ืฉืืืฆืืืื EXPLAIN (ANALYZE, BUFFERS)
, ืื ืื ื ืื ืจืืืื ืืช ืื ืืื. ืืื ืคืฉืื ืื ืืืืข ืืื ืืคืจืง ืืืชื, ืืืืื ืืืชื ืืืขืืื ืืืชื. ืืืฉืจ ืืชื ืงืืจื ืืจืื ื ืชืื ืื ืืืืื ืฉืืืื ืืชื ืืงืฆื ืื ื ืืื ืืช ืืืืกืง ืืืช ืืืืื ืืืืืจืื, ืืืืข ืื ืืฉืื ืืืื.
ืื ืงืืื ืืฉืืืืืช ืืฉืืืฉืืช ืืื ืืคืืชืื ืืืืฉ ืืืื ืฉื ืืคืจืืืงื ืืื. ืืืชืืืืืืืืช ืงืื ืืช ืืืื, ืื ืืื ืื ืคืขื ืืืฆื ืฉื ื, ืืืงืื ื ืืฆื ืืคืจื.
ืืื ืื ืืื "ืืืืื", ืืืืฉืื ืืืืื ื ืืืืืช ืขื ืื, ืืื ืืฉ ืืืจ ืืื ืฉืืจืืืง ืืืชื ื ืืืื ืืืฉืืจืืช ืืื. ืืื ืื ืฉืืืืืช ืื ืืชืื ืฉื Common Table Expression (CTE) ืืฆืืชืื ืืื ืืืื ืฉืื ืื ืืื InitPlan/SubPlan.
ืื ืืชื ืืืืื ืืชืืื ื ืืื, ืืื ืืืืฆืืข ืืืืื ืฉื ืื ืฆืืืช ืืืื ืืืื ืืืื ืืืืฆืืข ืืืืื ืฉื ืืืงืฉื ืืืื. ืื ืคืฉืื - ืืื ืืืฆืืจื ืฉื CTE ืื ืื ืืืคืืช ืืฆืืืช ื-CTE Scan. ืืื, ืื ืื ื ืืืจ ืื ืืืืขืื ืืช ืืชืฉืืื ืื ืืื ื ืืืื ืืื ืืจืื ืกืจืืงืช ื-CTE ืขืฆืื.
ืืื ืืื ื ืฉืืืืข ืืืื ืืืชืื ืืขืฆืื ื - ืืืืจื! ืื ืืคืชื ืืืืจ: "ืขืืฉืื ื ืืชืื ืืฉืื ื, ืื ืืืื ืกืืคืจ ืงื!"
ืืงืื ื ืขืจืืื ืืืคืืื ืืช ืืฉืืจืืชื ืืื ืืจื ื: ืืืื ืืืืืกืกืช ืขื Node.js + Express, ืขืืืกื ื-Bootstrap ื-D3.js ืขืืืจ ืืืืืจืืืช ืืคืืช. ืืืฆืืคืืืช ืฉืื ื ืืื ืืืฆืืงืืช ืืืืืืื - ืงืืืื ื ืืช ืื ืืืืคืืก ืืจืืฉืื ืชืื ืฉืืืขืืื:
- ืื ืชื ืชืืื ืืช ืืืชืืืช ืืืฉืืช
ืืืืืจ, ืืขืช ืื ื ืืืืืื ืื ืชื ืื ืชืืื ืืช ืืืื ืฉื ืืฆืจื ืขื ืืื PostgreSQL. - ื ืืชืื ื ืืื ืฉื ืฆืืชืื ืืื ืืืื - ืกืจืืงืช CTE, InitPlan, SubPlan
- ื ืืชืื ืืชืคืืืืช ืืืืจืื - ืืืคื ืืคื ื ืชืื ืื ื ืงืจืืื ืืืืืืจืื, ืืืคื ืืืืืืื ืืืงืืื, ืืืคื ืืืืืกืง
- ืงืืื ืืืืจืืช
ืืื ืื "ืืืคืืจ" ืืช ืื ืื ืืืืื, ืืื ืืจืืืช ืืช "ืืืืืื ืืืืฉื" ืืื ืืชืืื ื.
ืืฉ ืื ื ืืฉืื ืืื, ืขื ืืืืฉืช ืชืืืืจ ืืืืื. ืืื ืืืจื ืืื ืืืคืชืืื ืฉืื ื ืืืจ ืื ืขืืืืื ืขื ืืืฆืื ืืื ืฉื ืืชืืื ืืช, ืืื ืขื ืืื ืงืฆืจ ืืืชืจ. ืืจื ืืืจ ืคืจืฉื ื ืืช ืื ืืืกืคืจืื ืืืจืงื ื ืืืชื ืืืื ื ืืฉืืืื, ืืืืืฆืข ืืฉืืจื ื ืจืง ืืช ืืฉืืจื ืืจืืฉืื ื, ืืืื ืกืื ืฉื ืฆืืืช ืื: CTE Scan, CTE generation ืื Seq Scan ืืคื ืกืืื ืืืฉืื.
ืืื ืืืืฆืื ืืืงืืฆืจ ืฉืื ื ืงืืจืืื ืื ืชืื ืืช ืชืืื ืืช.
ืื ืขืื ืืืื ื ืื? ืื ืืืื ื ืื ืืจืืืช ืืืื ืืืง ืืืืื ืืืืื ืฉืื ื ืืืงืฆื ืืืืื ืฆืืืช - ืืคืฉืื "ืชืืืืง ืืืชื" ืืฆื ืชืจืฉืื ืขืืื.
ืื ืื ื ืืฆืืืขืื ืขื ืืฆืืืช ืืจืืืื - ืืกืชืืจ ืฉ-Seq Scan ืืงื ืคืืืช ืืจืืข ืืืืื ืืืืื, ืืืช ื-3/4 ืื ืืชืจืื ืฆืืืื ืขื ืืื CTE Scan. ืึฒืจึธืึธื! ืืืื ืืขืจื ืงืื ื ืืืื "ืงืฆื ืืืฉ" ืฉื CTE Scan ืื ืืชื ืืฉืชืืฉ ืืื ืืืืคื ืคืขืื ืืฉืืืืชืืช ืฉืื. ืื ืื ืืืืจืื ืืืืืื - ืื ื ืืืชืื ืืคืืื ืืกืจืืงืช ืฉืืืื ืจืืืื.
ืืื ืืืจื ืืื ืืืืืจืืืช ืืืื ืืขื ืืื ืืช ืืืชืจ, ืืืจืืืืช ืืืชืจ, ืืืฉืจ ืื ื ืืื ืืฆืืืขืื ืขื ืงืืข ืืจืืืื, ืืืฉื, ืฉืืืชืจ ืืืืฆืืช ืืืืื ืืืื Seq Scan "ืืืื". ืืชืจื ืืื, ืืื ืืคื ืื ืกืื ืฉื ืคืืืืจ, ืืจืื ืจืฉืืืืช ื ืืจืงื ืืคืื... ืืชื ืืืื ืืฉืืจืืช ืืืจืืง ืืช ืืชืืื ื ืืื ืืืคืชื ืืืืืื: "ืืืกืื, ืืื ืจืข ืืื ืืฉืืืื! ืชืืื, ืชืจืื - ืืฉืื ืื ืืกืืจ!"
ืืืืคื ืืืขื, ืืื ืืขืืจืืื ืืื "ืืืจืคืืช".
ืืืืจ ืืจืืฉืื ืฉื ืชืงืื ื ืื ืืื ืืขืืืช ืืขืืืื. ืืืื ืฉื ืื ืฆืืืช ืืืื ืืชืืื ืืช ืืฆืืื ืืืืืง ืฉื 1 ืืืงืจืืกืืคื. ืืืืฉืจ ืืกืคืจ ืืืืืจื ืืฆืืืช ืขืืื ืขื, ืืืฉื, 1000 - ืืืืจ ืืืฆืืข PostgreSQL ืืืืืงืช "ืืืืืง", ืื ืืฉืืืฉืืื ืืืืจื ื ืงืื ืืช ืืืื ืืืืื "ืืืคืฉืื ืืื 0.95ms ื-1.05ms". ืืฉืืกืคืืจื ืขืืืจืช ืืืืงืจื-ืฉื ืืืช, ืื ืืกืืจ, ืืื ืืฉืื ืืืจ [ืืืื]ืฉื ืืืช, ืืชื ืฆืจืื ืืงืืช ืืช ืืืืืข ืืื ืืืฉืืื ืืฉืืชื "ืืคืจืง" ืืฉืืืื ืืฆืืชืื ืฉื ืชืืื ืืช "ืื ืฆืจื ืืื".
ืื ืงืืื ืืฉื ืืื, ืืืจืืืช ืืืชืจ, ืืื ืืืืงืช ืืืฉืืืื (ืืืชื ืืืืจืื) ืืื ืฆืืชืื ืืื ืืืื. ืื ืขืื ืื ื ืืฉืืืขืืื ืืจืืฉืื ืื ืฉื ืื ืืืืคืืก ืืขืื 2 ืฉืืืขืืช.
ืื ืื ืงื ืืงืื ืกืื ืืื ืฉื ืืขืื - ืื ืื ื ืขืืฉืื CTE ืืืืืืื ืงืืจืืื ืื ืืฉืื. ืืืขืฉื, PostgreSQL ืืื "ืืื" ืืื ืืงืจื ืฉืื ืืืจ ืืฉืืจืืช ืฉื. ืืื ื ืืงื ืืื ื ืืช ืืจืฉืืื ืืจืืฉืื ื, ืืืืื ืืช ืืืื ืืืจืืฉืื ืืืืชื CTE.
ืื ืื ื ืืกืชืืืื ืขื ืืชืืื ืืช ืืืืื ืื - ืื ืืืืจ, ืืฉ ืื ื 3 ืืืืจืื (ืืคื ื ืชืื ืื) "ื ืฆืจืืื" ื-Seq Scan, 1 ื ืืกืฃ ื-CTE Scan, ืืขืื 2 ืืกืจืืงืช CTE ืืฉื ืืื. ืืืืืจ, ืื ืคืฉืื ื ืกืื ืืื ื ืงืื 6, ืืื ืืืืืืื ื ืงืจื ืจืง 3! CTE Scan ืื ืงืืจื ืฉืื ืืืจ ืืื ืืงืื, ืืื ืขืืื ืืฉืืจืืช ืขื ืืืืจืื ืืชืืืื. ืืืืืจ, ืืจืืจ ืฉืืฉืื ืืื ืื ืืกืืจ!
ืืืขืฉื, ืืกืชืืจ ืฉืื ื ืื ืืืชื 3 ืขืืืื ื ืชืื ืื ืฉืืชืืงืฉื ื-Seq Scan, ืชืืืื 1 ืืืงืฉ ืืช ืกืจืืงืช ื-CTE ื-1, ืืืืืจ ืืื ืืืงืจืื ืื ืืช ื-2, ืืขืื 2. ืืืืืจ, ืกื ืืื 3 ืขืืืืื ื ืงืจืื ื ืชืื ืื, ืื 6.
ืืืชืืื ื ืืื ืืืืืื ืืืชื ื ืืืื ื ืฉืืืฆืืข ืชืื ืืช ืืื ื ืขืื ืขืฅ, ืืื ืคืฉืื ืืืื ืืจืฃ ื-ืฆืืงืื. ืืงืืืื ื ืชืจืฉืื ืืื, ืืื ืฉื ืืื "ืื ืื ืืืืคื ืืืืชืืืื". ืืืืืจ, ืืื ืืฆืจื ื CTE ื-pg_class, ืืืืงืฉื ื ืืืชื ืคืขืืืื, ืืืืขื ืื ืืืื ืฉืื ื ืืืฉืงืข ืืกื ืืฃ ืืฉืืืงืฉื ื ืืืชื ืืคืขื ื-2. ืืจืืจ ืฉืงืจืืืช ืืขืจื ื-101 ืืื ืืจืื ืืืชืจ ืืงืจื ืืกืชื ืงืจืืืช ืืขืจื ื-1 ืืืืืืื.
ื ืฉืคื ื ืืืื ืื. ืื ืืืจื: "ืขืืฉืื, ื ืืื, ืืชื ืืืืข ืงืื ื ืคื! ืขืืฉืื ืืืืืื ืฉืื ื ื ืืฆืืช ืืืฉ ืขื ืืืกื ืฉืื. ืขืืฉืื ืืชื ืืืื ืืืฉืชืืฉ ืื."
ืืืืื ืืืื ืื
1000 ืืืคืชืืื ืฉืื ื ื ืฉืื ืืจืืืื. ืืื ืืื ื ืฉืืฉ ืื ื ืจืง ืืืืช ืฉืจืชืื "ืงืจืืืื", ืืื ื"ืืขืชืง-ืืืืง" ืืื ืืฆื ืืืคืชืืื ืื ื ืื ืืืื. ืืื ื ืฉืื ืื ื ืฆืจืืืื ืืืกืืฃ ืืช ืื ืืขืฆืื ื.
ืืืืคื ืืืื, ืืฉ ืืืืื ืกืื ืืจืื ืฉืืืื ืืืกืืฃ ื ืชืื ืื ืกืืืืกืืืื, ืืื ืฆืจืื ืืืคืขืื ืืืชื ืื ืืชืฆืืจื - ืื
ืจืืฉืืช, ืืื ืืงืฆื ืืืืชื ืฉืืืืชืืช ืืืืฆืขืืช ืกืืืืช ืฉืื ืืช ืืชืื ืืืชื ืืกื ื ืชืื ืื QueryIds ืฉืื ืื. ืืืืืจ, ืื ืชืขืฉื ืืืช ืงืืื SET search_path = '01'; SELECT * FROM user LIMIT 1;
ืืื SET search_path = '02';
ืืืืืชื ืืงืฉื, ืื ืืกืืืืกืืืงื ืฉื ืืืืื ืื ืืืื ืจืฉืืืืช ืฉืื ืืช, ืืื ืืืื ืืืกืืฃ ื ืชืื ืื ืกืืืืกืืืื ืืืืืื ืกืคืฆืืคืืช ืืืงืฉืจ ืฉื ืคืจืืคืื ืืงืฉื ืื, ืืืื ืืงืืช ืืืฉืืื ืืช ืืกืืืืช.
ืื ืงืืื ืืฉื ืืื ืฉืื ืขื ืืืืชื ื ืืืฉืชืืฉ ืื ืืื ืืืกืจ ืชืืื ืืืช. ืืืืืจ, ืืื ืชืืื ืืช, ืืฉ ืจืง ืืช ืืืงืฉื ืขืฆืื. ืื ืื ื ืจืืืื ืื ืืื, ืืื ืื ืื ื ืื ืืืื ืื ืืื. ืืืื ืื ื ืืืืจืื ืืืขืื ืฉื ืืขืจื ื ืชืื ืื ืืืฉืชื ื ืืืืืจืืช.
ืืืจืืข ืืืืจืื - ืืืกืจ "ืขืืืืืช". ืืืืืจ, ืื ื ืืชื ืืืชืืืืก ืืืงืจื ืกืคืฆืืคื ืฉื ืืืฆืืข ืฉืืืืชื - ืืื ืืื, ืืฉ ืจืง ืกืืืืกืืืงื ืืฆืืืจืช. ืืืจืืช ืฉืืคืฉืจ ืืขืืื ืขื ืื, ืื ืคืฉืื ืืืื ืงืฉื.
ืืื, ืืืืื ื ืืืืืื ืืืขืชืง-ืืืืง ืืืชืืื ื ืืืชืื ืืกืคื.
ืืืกืคื ืืชืืืจ ืืืืฆืขืืช SSH, ืืืฆืจ ืืืืืจ ืืืืืื ืืฉืจืช ืขื ืืกื ืื ืชืื ืื ืืืืฆืขืืช ืชืขืืื, ืืื tail -F
"ื ืืื" ืืืื ืืงืืืฅ ืืืืื. ืื ืืคืืืฉื ืืื ืื ื ืืงืืืื "ืืจืื" ืืืื ืฉื ืงืืืฅ ืืืืื ืืืื, ืฉืืฉืจืช ืืืืฆืจ. ืืขืืืก ืขื ืืฉืจืช ืขืฆืื ืืื ืืื ืืืื, ืื ืื ืื ื ืื ืื ืชืืื ืฉืื ืืืจ ืฉื, ืื ืื ื ืจืง ืืฉืงืคืื ืืช ืืชืขืืืจื.
ืืืืืื ืฉืืืจ ืืชืืื ื ืืืชืื ืืช ืืืืฉืง ื-Node.js, ืืืฉืื ื ืืืชืื ืื ืืช ืืืกืคื. ืืืืื ืืืืืื ืืื ืืฆืืืงื ืืช ืขืฆืื, ืื ืื ืืืื ื ืื ืืืฉืชืืฉ ื-JavaScript ืืื ืืขืืื ืขื ื ืชืื ื ืืงืกื ืืคืืจืื ืืืฉ, ืฉืื ืืืืื. ืืชืฉืชืืช ื-Node.js ืขืฆืื ืืคืืืคืืจืื ืขืืจืคืืช ืืืคืฉืจืช ืื ืืขืืื ืืงืืืช ืืื ืืืืช ืขื ืืืืืจื ืจืฉืช, ืืืื ืขื ืื ืืจืื ื ืชืื ืื.
ืืืชืื, ืื ื "ืืืชืืื" ืฉื ื ืงืฉืจืื: ืืจืืฉืื "ืืืงืฉืื" ืืืืื ืขืฆืื ืืืงืืช ืืืชื ืืขืฆืื ื, ืืืฉื ื ืืฉืืื ืืขืช ืืขืช ืืช ืืืกืืก. "ืืื ืืืืื ืืจืื ืฉืืกืืื ืขื oid 123 ืืกืื", ืืื ืื ืื ืืืืจ ืืืื ืืืคืชื, ืืื ืืืื ื ืืื ืืฉืืื ืืช ืืกื ืื ืชืื ืื, "ืื ืื OID = 123 ืืืื?" ืืืื ืื ืื ื ืฉืืืืื ืืื ืคืขื ืืช ืืืกืืก ืื ืื ืื ื ืขืืืื ืื ืืืืขืื ืขื ืขืฆืื ื.
"ืืฉ ืจืง ืืืจ ืืื ืฉืื ืืงืืชื ืืืฉืืื, ืืฉ ืื ืฉื ืืืืจืื ืืืืื ืคืื!.." ืืชืืื ื ืืคืชื ืืช ืืืขืจืืช ืืื ืืฉืจืฆืื ื ืื ืืจ 10 ืฉืจืชืื. ืืื ืงืจืืื ืืืื ืชื ื, ืฉื ืืชืขืืจืจื ืืื ืืขืืืช ืฉืงืฉื ืืืชืืืื ืืืชื. ืืื ืืืืื ืืจืืขืื ืืจืืฉืื ืงืืืื ื ืืื ืื ืืืืจ - ืื ืืืขืจืืช ืขืืื, ืืืื ืจืฆื, ืืืืื ืืื ื ืื.
ืืช ืื ืื ืฆืจืื ืืืืกืืฃ, ืืจืืืช ืื ืชืื ืื ืืืืื ืืคืขืืื. ืืืขืฉื, ืื ืฉืื ืื ื ืืคืงืืื, ืื ืฉืื ืื ื ืืืืืื ืืืชืืืื ืืืชื, ืื ืื ืฉืื ืื ื ืืฉืชืืฉืื ืื. ืื ื ืืฉืชืืฉืื ืื ื-PostgreSQL ืืืืกืื ื ืชืื ืื. ืืฉืื ืืืจ ืืื ื ืืืืจ ืืืชืจ "ืืฆืงืช" ืืชืืื ื ืชืื ืื ืืืฉืจ ืืืคืขืื COPY
ืขืืืื ืื.
ืืื ืคืฉืื "ืืฉืคืื" ื ืชืื ืื ืื ืื ืืืืช ืืืื ืืืืืื ืฉืื ื. ืื ืื ืืฉ ืื ืืขืจื 50 ืืงืฉืืช ืืฉื ืืื ืืืื ืฉืจืชืื, ืื ืื ืืคืืง 100-150GB ืฉื ืืืื ืื ืืืื. ืืื, ืืืื ื ืฆืจืืืื ืืืืืจืืช "ืืืชืื" ืืช ืืืกืืก.
ืจืืฉืืช, ืขืฉืื ื ืืืช ืืืืงื ืืคื ืืื, ืื ืืืืื, ืืฃ ืืื ืื ืืชืขื ืืื ืืงืืจืืฆืื ืืื ืืืื. ืื ืื ืืฉื ื ืื ืืื ืื ืืชืืื, ืื ืืืืื ืคืจืกืืช ืืจืกื ืืืฉื ืฉื ืืืคืืืงืฆืื - ืืืืจ ืืื ืกืืืืกืืืงืืช ืืืฉืืช.
ืฉื ืืช, ืืืื ื (ื ืืืฆื ื) ืืืื ืืืื ืืืืจ ืืืชืื ืืืืฆืขืืช COPY
. ืืืืืจ, ืื ืจืง COPY
ืื ืืื ืืืืจ ืืืชืจ ื INSERT
, ืืืคืืื ืืืจ ืืืชืจ.
ืื ืงืืื ืืฉืืืฉืืช - ืืืืชื ืืืืืช ืื ืืืฉ ืืจืืืจืื, ืืืชืืื, ืืืคืชืืืช ืืจืื. ืืืืืจ, ืืื ืื ื ืืื ืฉืืืืช ืืชืืืืกืืชืืช. ืื ืื ืืฉ ืื ืืืื ืฉืืฉ ืื ืืื FKs, ืืืชื ืืืืจ ืืืื ื ืืกื ืื ืชืื ืื ืฉ"ืื ื ืจืฉืืืช ืืืื ืฉืืคื ื ืขื ืืื FK, ืืืฉื, ืืงืืืฆืช ืจืฉืืืืช", ืื ืืฉืืชื ืืื ืืก ืืืชื, PostgreSQL ืื ื ืฉืืจ ืืืจ ืืืื ืืื ืืงืืช ืืช ืื ืืืขืฉืืช ืืช ืื ืืืืฉืจ SELECT 1 FROM master_fk1_table WHERE ...
ืขื ืืืืื ืฉืืชื ืื ืกื ืืืื ืืก - ืจืง ืืื ืืืืืง ืฉืืจืฉืืื ืืื ืงืืืืช ืฉื, ืฉืื "ืชื ืชืง" ืืช ืืืคืชื ืืืจ ืืื ืขื ืืื ืกืชื.
ืืืงืื ืจืฉืืื ืืืช ืืืืืช ืืืขื ืืืืื ืืงืกืื ืฉืื, ืื ืื ื ืืงืืืื ืืช ืืืชืจืื ืื ืืกืฃ ืฉื ืงืจืืื ืืื ืืืืืืืช ืฉืืื ืืชืืืืกืช ืืืืื. ืืื ืื ืื ื ืื ืฆืจืืืื ืืช ืื ืืืื - ืืืฉืืื ืฉืื ื ืืื ืืืงืืื ืืื ืฉืืืชืจ ืืืื ืฉืืืชืจ ืืืจ ืขื ืืื ืคืืืช ืขืืืก. ืื FK - ืืืื!
ืื ืงืืื ืืืื ืืื ืฆืืืจื ืืืืืื. ืืชืืืื, ืืืืขื ื ืืืชื ืืืกื ืื ืชืื ืื - ืืืจื ืืื, ืื ื ืื ืืื, ืืฉืืืืขื ืจืฉืืื, ืืขืฉืืช ืืช ืื ืืืืื ืืืืื "ืคืืืก ืืื" ืืืฉ ืืืืง. ืืืื, ืื ื ืื, ืืื ืืืชื ืืืจ ืจืข - ืืชื ืืื ืืก ืจืฉืืื ืืืช, ืืื ื ืืืฅ ืืงืจืื ืืืืชืื ืืฉืื ืืืจ ืืืืื ืืืจืช. ืืชืจื ืืื, ืื ืจืง ืฉืืชื ืงืืจื ืืืืชื, ืืชื ืื ืขืืฉื ืืืช ืืื ืคืขื.
ืืขืช ืืืืื ื ืฉืืฉ ืืื ืืืื ืฉืื ืืชื ืคืฉืื ืกืืคืจืื ืืช ืืกืคืจ ืืืงืฉืืช ืฉืขืืจื ืืจื ืืืจื ืกืคืฆืืคื: +1, +1, +1, ..., +1
. ืืืชื, ืืืืคื ืขืงืจืื ื, ืื ืฆืจืื ืืช ืื - ืืื ืืคืฉืจื ืกืืื ืืืืืจืื ืขื ืืืกืคื ืืืฉืืื ืืืกื ืื ืชืื ืื ืืืื ืืืช +10
.
ืื, ืืืงืจื ืฉื ืืขืืืช ืืกืืืืืช, ืืฉืืืืช ืืืืืืช ืฉืื ืขืฉืืื "ืืืชืคืจืง", ืืื ืื ืืงืจื ืืืขื ืื ืืฆืืืืชื - ืื ืืฉ ืื ืฉืจืช ืจืืื, ืืฉ ืื ืกืืืื ืืืงืจ, ืืฉ ืื ืืืื ืขืกืงืืืช, ืืืื ื- ืืขืจืืช ืงืืฆืื... ืืืืคื ืืืื, ืื ืื ืฉืืื ืืช ืื. ืืืืื ืืคืจืืืืงืืืืืืช ืฉืืชื ืืงืื ืืืคืขืืช ืืจืืืจืื/FK ืืื ื ืฉืืื ืืช ืืืืฆืื ืฉืืชื ืืืงื.
ืื ืืืชื ืืืจ ืขื hashing. ืืงืฉื ืืกืืืืืช ืขืคื ืื, ืืชื ืืืฉื ืืื ืืืื ืืกืืื ืืืืืจ, ืืืชื ืืช ืื ืืืืืจ ืืื ืืกืคืจ ืืช ืื ืืืืื. ืืื ืืกืืจ ืขื ืฉืืืื ืืืงืืื ืืืืข ืืืืื ืืื ืฉื ื ืฉืจืืฆื ืืืงืืื ืืช ืืืชื ืืืืจ - ืืืชื ื ืืกืืื, ืืื ืืืจ ืจืข. ืืื, ืื ืืชื ืืืื ืืืขืืืจ ืืช ืืืฆืืจื ืฉื ืืื ืืืืื ืืืงืื (ืืืืก ืืืกื ืื ืชืื ืื), ืขืืืฃ ืืขืฉืืช ืืืช.
ืื ืืื ืคืฉืื ืืืฉืื ืขืืืจื ื ืืืฉืชืืฉ ื-MD5 ืืืืงืกื - ืืงืฉื, ืชืืื ืืช, ืชืื ืืช,... ืื ืื ื ืืืฉืืื ืืช ืื ืืฆื ืืืกืคื, ื"ืฉืืคืืื" ืืช ืืืืื ืืืืื ืืืกื ืื ืชืื ืื. ืืืจื ื-MD5 ืืืืืืฆื ืืืืืืช ืืืคืฉืจืื ืื ื ืื ืืืืื ืืืชื ืืฉืืืืช ืืคืฉืจืืืช.
ืืื ืืื ืืืงืืื ืืช ืื ืื ืืืืืจืืช, ืืืื ื ืฆืจืืืื ืืฉื ืืช ืืช ืืืื ืืืงืืื ืขืฆืื.
ืืื ืืืจื ืืื ืืชื ืืืชื ื ืชืื ืื? ืืฉ ืื ื ืืืืฉืื ืืขืจื ื ืชืื ืื, ืื ืื ื ืืืืงืื ืืืชื ืืืื ืืืืืืช, ืืื ืขืืชืง ืืืชื - ืชืืืื ืืจืืฉืื, ืืื ืืฉื ื, ืืฉืืืฉื... ืื ืื ื ืื, ืื ื ืจืื ืฉืื ืื ื ืืืชืืื ืืจื ื ืชืื ืื ืืื ืืฉืืืฉื ืฉืืืื ืืจืฆืฃ. ืื ื ืขืื. ืืื ื ืืชื ืืขืฉืืช ืืืช ืืืจ ืืืชืจ? ืคืืืช!
ืืื ืืขืฉืืช ืืืช, ืื ืืกืคืืง ืจืง ืืคืจืง ืืช ืืืจืืืืช ืืืื ืืืงืืื ืื ืืื. ืืกืชืืจ ืฉืืฉ ืื ื ืฉืืืืืช, ืืงืฉืืช, ืชืื ืืืช, ืืกืืืืช, ... ืขืคืืช ืืฉืจืฉืืจืื ื ืคืจืืื - ืืื ืื ื ืืืชืืื ืืื ืืืงืืื. ืืกืคืืง ืืฉืืื ืื ืฉืืืจ ืขื ืขืจืืฅ COPY ืคืชืื ืื ืืืื ืขืืืจ ืื ืืืืช ืืขื ืื ืคืจื.
ืืืืืจ, ืืฆื ืืืกืคื ืชืืื ืืฉ ื ืื, ืฉืืชืืื ืื ื ืืืื ืืืชืื ืืช ืื ืชืื ืื ืฉืื ื ืฆืจืื. ืืื ืืื ืฉืืกื ืื ืชืื ืื ืืจืื ืืช ืื ืชืื ืื ืืืื, ืืืืฉืื ืื ืืชืงืข ืืืืชื ื ืืืชืืื ืฉื ืื ืชืื ืื ืืืื, ืืฉ ืืืคืกืืง ืืช ืืืขืชืงื ืืืจืืืื ืืื ืืกืืืืื. ืืืืื ืชื ื ืืชืงืืคื ืืืขืืื ืืืืชืจ ืืืืชื ืืขืจื 100ms - ืื ืื ื ืกืืืจืื ืืืชื ืืืื ืคืืชืืื ืืืชื ืฉืื ืืืืชื ืฉืืืื. ืืื ืืื ืื ื ืืกืคืืง ืืจืืื ืืืช ืืืืื ืืื ืฉืืืื, ืื ืื ืื ื ืขืืฉืื ืืืืจื ืขื ืืืื ืืกืืื.
ืื ืืกืฃ, ืืืืื ื ืฉืขืืืจ ืคืจืืคืื ืขืืืก ืืื, ืื ืฆืืืจื, ืืืฉืจ ืจืฉืืืืช ื ืืกืคืืช ืืงืืืฆืืช, ืืื ืจืขื. ืืจืืข ืืงืืืกื ืืื INSERT ... VALUES
ืืขืื 1000 ืจืฉืืืืช. ืื ืืฉืื ืืื ืืฉ ืื ืฉืื ืืชืืื ืืืืื, ืืื ืืฉืืจ ืฉืื ืกืื ืืืชืื ืืฉืื ืืืืกืง ืืืื.
ืืื ืืืืคืืจ ืืืจืืืืช ืืืื, ืคืฉืื ืื ืชืฆืืืจ ืฉืื ืืืจ, ืื ืืืฆืฅ ืืืื. ืืื ืืื ืืชืจืืฉ ืืฆืืฆื ืืืืกืง (ืืืจืื ืืืื, ื-Stream API ื-Node.js ืืืคืฉืจ ืื ืืืืืช ืืืช) - ืืื ืืช ืืืืืืจ ืืื. ืืฉืชืงืืื ืืืจืืข ืฉืืื ืฉืื ืืืื ื, ืืชืื ืื ืืืชืืจ ืฉื ืฆืืจ. ืืืืื ืฉืืื ืขืืืก, ืงื ืืช ืืคื ืื ืืื ืืืืจืืื ืืืชืื ืื.
ืืคื ื ืฉืืฆืื ื ืืืฉื ืื ืืจืืฉืื ื ืชืื ืื, ืืื ืื ื ืคืขืืืืช ืืชืืื ืฉื ื-4K, ืืืืจื ืื ืืืจืื ื ืืช ืืขืืืก ืคื 4. ืืขืช ืื ืืืื ืขืื ืคื 6 ืืืื ืืกืื ื ืชืื ืื ืื ืืืจืื ืืืฉืื - ืขื 100MB/s. ืืืขืช ืื ื ืืืืกื ืื ืืืื ืื ื-3 ืืืืืฉืื ืืืืจืื ืื ืื ืคื ืฉื ื-10-15TB, ืืชืงืืื ืฉืชืื ืฉืืืฉื ืืืืฉืื ืืืื ืื ืืคืชื ืืืื ืืคืชืืจ ืื ืืขืื.
ืื ืื ื ืืืื ืื ืืช ืืืขืืืช
ืืื ืคืฉืื ืืืกืืฃ ืืช ืื ืื ืชืื ืื ืืืื ืื ืืื, ืฉืืืืฉื, ืจืืืื ืื, ืืื ืื ืืกืคืืง - ืฆืจืื ืืืืื ืืืชื. ืื ืืื ืืืืืื ื ืชืืื ืืืช ืฉืื ืืช ืืืื.
ืืื ืืืืืื ืื ืื ืืืชื ื ืืชื ืื ืื ืืืื, ืขืืื ื ืงืืื ืื ืืขืฉืืช "ืงืื ืืืชืจ". ืืงืืื ืื, ืืชื ืฆืจืื ืืืืืื ืืื ืชืืจืื ืืช ืืืืจ "ืืงืื" ืืื.
ืืืืื ื ืฉืืืฉ ื ืงืืืืช ืืคืชื:
- ืื ืฉืื ืืงืฉื ืื
ืืืืืจ ืืืืื ืืคืืืงืฆืื ืืื "ืืืืขื": ืืืฉืง ืืื ืืจื ื, ืืืืจื, ืืขืจืืช ืชืฉืืื ืื ืืฉืื ืืืจ. - ืืืคื ืื ืงืจื
ืืืืื ืฉืจืช ืกืคืฆืืคื? ืื ืื ืืฉ ืื ืืื ืฉืจืชืื ืชืืช ืืคืืืงืฆืื ืืืช, ืืคืชืืื ืืื "ืืื ืืืคืฉ" (ืื "ืืืืกืง ืจืงืื", "ืืืืืจืื ืืืฃ", ืืขืื ืืืจืช), ืื ืืชื ืฆืจืื ืืืคื ืกืคืฆืืคืืช ืืฉืจืช. - ืืื ืืืขืื ืืื ืืืื ืืืืื ืืฆืืจื ืืื ืื ืืืจืช
ืืื ืืืืื "ืื" ืฉืื ืื ื ืืงืฉื, ืื ื ืืฉืชืืฉืื ืืืื ืกืื ืืจืื - ืืืืจืช ืืฉืชื ื ืืคืขืื: SET application_name = '{bl-host}:{bl-method}';
- ืื ื ืฉืืืืื ืืช ืฉื ืืืจื ืืืืืืื ืืขืกืงื ืืื ื ืืืืขื ืืืงืฉื, ืืืช ืฉื ืืฉืืื ืื ืืืคืืืงืฆืื ืฉืืืื ืืืชื.
ืืืืจ ืฉืขืืจื ื ืืช "ืืืขืืื" ืฉื ืืืงืฉื, ืืฉ ืืืืฆืื ืืืชื ืืืื - ืืฉื ืื ืื ื ืืืืืจืื ืืช ืืืฉืชื ื log_line_prefix = ' %m [%p:%v] [%d] %r %a'
. ืืืขืื ืืื ืื, ืืืื
- ืืื
- ืืืื ืชืืืื ืืขืกืงืืืช
- ืฉื ืืกืืก ืื ืชืื ืื
- IP ืฉื ืืืื ืฉืฉืื ืืงืฉื ืื
- ืืฉื ืืฉืืื
ืืื ืืื ื ืฉืื ืื ืืืื ืืขื ืืื ืืืกืชืื ืขื ืืืชืื ืขืืืจ ืืงืฉื ืืืช ืืื ืฉืจืชืื ืฉืื ืื. ืื ืืขืชืื ืงืจืืืืช ืืฉ ืื ืืฆื ืฉืื ืืืฉืื ืืื ืืชืงืืงื ืืืืชื ืืืื ืคื ืืฉื. ืืื ืื ืื ืื ืืืชื ืืืืจ, ืชืกืชืื ืขื ืื ืืื ืืืฉืจืชืื ืืืื.
ืื ืื ื ืืืืจื "ืฉืจืช ืืื - ืืื ืืื" ืืชืืจืจ ืฉืื ืืกืคืืง ืื ื ืืื ื ืืชืื.
ืืืืง ืืื ืืืื ืืจืืฉืื ืืื "ืึดืืขืึนื" - ืฆืืจื ืืงืืฆืจืช ืฉื ืืฆืืช ืืชืืื ืืช, ื ืงืืื ืืื ืืืื ืืืงืืืจืื ืืืกืคืจืืื. ืืืืชืื ืืฉื ื ืืื ืืืืฉืื ืื ืืฉืืื, ืืืืชื ืืฉืืืฉื ืืื ืฆืืืช ืืชืืื ืืช ืืกืคืฆืืคืืช ืฉืืจื ืื ื ืืืขืืืช.
ืืฉืขืืจื ื ืืืืคืขืื ืกืคืฆืืคืืื ืืชืื ืืืช, ืงืืืื ื ืฉื ื ืืชืจืื ืืช ืืืช ืืืช:
- ืืคืืชื ืืจืืื ืืืกืคืจ ืืืืืืืงืืื ืื ืืชืื
ืื ืื ื ืฆืจืืืื ืื ืชื ืืช ืืืขืื ืืืจ ืื ืืคื ืืืคื ืฉืืืืชืืช ืื ืชืืื ืืืช, ืืื ืืคื ืขืฉืจืืช ืชืื ืืืช. - ืฆืืจ ืืื
ืืืืืจ, ืขื ืืื ืกืืืื ื"ืขืืืืืช" ืืชืื ืกืขืืฃ ืืกืืื, ื ืืชื ืืืฆืื ืืช ืืืจืื ืฉืืื ืืืืื ืืืื. ืืืื ืืชื ืืืื ืืืืื ืฉืื ืืฉ ืื ืืืืฉืื ืืคืืก ืฉืงืืจื, ืืืฉื, ืคืขื ืืฉืขื, ืืื ืื ืฆืจืื ืืงืจืืช ืคืขื ืืืื, ืืชื ืฆืจืื ืืืฉืื ืื ืืฉืชืืฉ - ืื ืืจื ืืื ืืืื, ืืืื ืื ืฆืจืื ืืืืืช ืืื ืื ืฆืจืื. ืืืื ืขืื ืฉืืืช ื ืืชืื ืื ืืกืคืจืืช, ืืืืืืืืช ืืจืืื.
ืืฉืืืืช ืื ืืชืจืืช ืืืืกืกืืช ืขื ืืืื ืืืงืืืจืื ืฉืื ื ืืืืฆืื ืืืชืืื ืืช: ืืื ืคืขืืื ืืชืจืืฉ ืืคืืก ืืื, ืืืื ืืืืื ืืืืืืฆืข, ืืื ื ืชืื ืื ื ืงืจืื ืืืืืกืง ืืืื ืืืืืืจืื...
ืื, ืืืฉื, ืืชื ืืืืข ืืืฃ ืื ืืชืื ืฉื ืืืืจื, ืชืจืื - ืืฉืื ืืชืืื ืืงืจืื ืืืชืจ ืืื ืืืืกืง. ืืืืกืง ืืฉืจืช ืื ืืืื ืืืชืืืื ืขื ืื - ืื ืงืืจื ืืื ื?
ืืชืืืื ืืืืื ืืคื ืื ืขืืืื ืืืืืืื ืืื ืชืชืืืืื ืขืืฉืื - ืืขืืืก ืขื ืืืขืื ืื ืืืืกืง, ืื ืกื ืืืงืฉืืช... ืืืื ื ืืช ืื, ืืกืชืืื ื ืขื "ืืขืืืื", ืชืืงื ื ื ืืืฆืืื ืืจืกื ืืืฉื ืฉื ืืืคืืืงืฆืื.
ืืืื ืืชื ืืืื ืืจืืืช ืืคืืืงืฆืืืช ืฉืื ืืช ืฉืืืืขืืช ืขื ืืืชื ืชืื ืืช ืืชืื ืืงืฉื ืืื SELECT * FROM users WHERE login = 'Vasya'
. Frontend, Backend, Processing... ืืืชื ืชืืื ืืืืข ืืขืืืื ืืงืจื ืืช ืืืฉืชืืฉ ืื ืืื ืื ืืืฆืจ ืืืชื ืืื ืืจืืงืฆืื.
ืืืจื ืืืคืืื ืืื ืืจืืืช ืืื ืืืืคืืืงืฆืื ืื ืืื ืขืืฉื. ืืืืืื, ื-frontend ืืื ืื, ืื, ืื, ืืื ืคืขื ืืฉืขื (ืฆืืจ ืืืื ืขืืืจ). ืืืื ื ืฉืืืช ืืฉืืื: ื ืจืื ืฉืื ืื ืืชืคืงืื ืฉื ื-frontend ืืขืฉืืช ืืฉืื ืคืขื ืืฉืขื...
ืืืืจ ืืื ืื, ืืื ื ืฉืืกืจ ืื ื ืืฆืืืจ ืกืืืืกืืืงื ืืคื ืฆืืชื ืชืืื ืืช. ืืืืื ื ืืืชืืื ืืืช ืจืง ืืช ืืืชื ืฆืืชืื ืฉืขืืฉืื ืืฉืื ืขื ืื ืชืื ืื ืฉื ืืืืืืืช ืขืฆืื (ืงืืจืืื/ืืืชืืื ืืืชื ืืคื ืืื ืืงืก ืื ืื). ืืืขืฉื, ืจืง ืืืื ืืื ื ืืกืฃ ืืืกืืช ืืชืืื ื ืืงืืืืช - ืืื ืฉืืืื ืืฆืืืช ืืื ืืืื ืื ื?, ืืืื ื ืืืงื (ืฉืืจืืช ืืืกืจื ืขื ืืื ืืกื ื).
ืืื ืื ืืื ืืงืก ืืชืืื ืขื ืืฆืืืช, ืืชื ืืืืฉ ืืงืฉื ืืืื, ืืื ืขืฃ ืขื ืคื ื ืืืื ืืงืก, ื ืืคื ื-Seq Scan... ืกืื ื ืช ืืช ืื ืืจืฉืืืืช ืืืื ืืืช. ืืื ืืชื ืฆืจืื 100 ืืืืืื ืจืฉืืืืช ืืกืื ื ืืช ืืืื? ืืื ืื ืขืืืฃ ืืืขืืืช ืืช ืืืื ืืงืก?
ืืืืจ ืฉื ืืชืื ื ืืช ืื ืืชืืื ืืืช ืฆืืืช ืืืจ ืฆืืืช, ืืื ื ืฉืืฉ ืืื ืืื ืื ืืืคืืกืืื ืืชืืื ืืืช ืฉืกืืืจ ืืืื ืฉืืืจืื ืืฉืืืื. ืืื ืืืื ื ืืื ืืืืจ ืืืคืชื: "ืืืจ, ืืื ืืชื ืงืืื ืื ืงืืจื ืืคื ืืื ืืงืก, ืืื ืืืืื ืืื ืื ืืชืง" - ืืืื, ืืฉ ืจืฉืืื ืืืช.
ืื ืื ืฉืืชื ืฉืืืืชืืช ืื ืจืื ื ืชืงื ืืืคืืก ืืื: "ืชื ืื ืืช ืืืืื ื ืืืืจืื ื ืฉื ืืืกืื, ืืชืืจืื ืฉืื." ืืื ืืื ืื ืืื ืืงืก ืืคื ืชืืจืื, ืื ืฉืืื ืชืืจืื ืืืื ืืงืก ืฉืื ืืฉืชืืฉืช, ืื ืืชื ืืืจืื ืืืืืง ืขื ืืืชื "ืืืจืคื".
ืืื ืื ืื ื ืืืืขืื ืฉืืืืืจ ื"ืืจืคื" - ืื ืืื ืื ืืืืจ ืืื ืืืคืชื ืื ืขืืื ืืขืฉืืช. ืืืชืื, ืืฉืคืืชืืื ืชืืื ืืช ืขืืฉืื, ืืืื ืฉืื ื ืจืืื ืืื ืชืืื ื ืืคื ืขื ืืืคืื, ืฉืื ืื ืืื ืืืืจืื ืื: "ืืฉ ืื ืืขืืืช ืคื ืืฉื, ืืื ืื ื ืคืชืจืืช ืืื ืืืื".
ืืชืืฆืื ืืื, ืืืืช ืื ืืกืืื ืฉืืื ืฆืืจื ืืคืชืืจ ืืขืืืช ืืืชืืื ืืืขืช ืืจืื ืืฉืืขืืชืืช. ืื ืกืื ืืืืื ืฉืืฉ ืื ื.
ืืงืืจ: www.habr.com