เบเปเบฒเบเบฒเบกเบเบฅเบฒเบชเบชเบดเบเบเบตเปเบเบนเปเบเบฑเบเบเบฐเบเบฒเบเปเบฒเบกเบฒเปเบซเป DBA เบเบญเบเบฅเบฒเบงเบซเบผเบทเปเบเบปเปเบฒเบเบญเบเบเบธเบฅเบฐเบเบดเบเบเปเบฒเบกเบฒเปเบซเปเบเบตเปเบเบถเบเบชเบฒ PostgreSQL เปเบเบทเบญเบเบชเบฐเปเบซเบกเบตเบชเบฝเบเบเบฝเบงเบเบฑเบ: "เปเบเบฑเบเบซเบเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเปเบเปเปเบงเบฅเบฒเบเบปเบเบซเบผเบฒเบเปเบเบทเปเบญเปเบซเปเบชเปเบฒเปเบฅเบฑเบเปเบเบเบฒเบเบเปเปเบกเบนเบ?"
เบเบธเบเบเบฐเปเบเบเบตเบเบญเบเปเบซเบเบเบปเบ:
- เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเบตเปเบเปเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบ
เปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบเบฑเบเบชเบดเบเปเบเปเบเบปเปเบฒเบฎเปเบงเบก CTEs เบซเบผเบฒเบเบเบฑเปเบเปเบเปเบฅเบเบฐเบชเบญเบเบชเบฒเบกเบชเบดเบเบเบฑเบเบเบฑเบเบเบถเบ - เบชเบฐเบเบดเบเบดเบฅเปเบฒเบชเบฐเปเบซเบก
เบเปเบฒเบเบฒเบเปเบเบเบขเบฒเบเบเบปเบงเบเบดเบเบเบญเบเบเปเปเบกเบนเบเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบฒเบเบเบฒเบเบเบตเปเปเบเบฑเบเบเปเบฒเปเบเบ ANALYZE เบเบตเปเบเปเบฒเบเบกเบฒ - "เบชเบฝเบ" เบเปเบฝเบงเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ
เปเบฅเบฐเบเปเปเบกเบตเบเบฐเบฅเบฑเบเบเบฒเบเบเบญเบกเบเบดเบงเปเบเบตเปเบเบตเปเบญเบธเบเบดเบเบเบปเบเบเบฝเบเบเปเบเบญเบ CPU, gigabytes เบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบเปเบเบทเบเบชเบนเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ, เบซเบผเบทเปเบเปเบเบเปเปเบชเบฒเบกเบฒเบเบฎเบฑเบเบชเบฒ "เบเปเบญเบเบเบฒเบ" เบเบฑเบเบซเบกเบปเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบ. - เบเบฒเบเบเบฑเบเบเบงเบฒเบ เบเบฒเบเบเบฐเบเบงเบเบเบฒเบเปเบเปเบเบเบฑเบ
เปเบฅเบฐเบเปเบฒเบเบฒเบเบเบฑเบเบเบงเบฒเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเบฒเบเบเบตเปเบเบฐเบเบฑเบเปเบฅเบฐเบงเบดเปเบเบฒเบฐ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบชเปเบฒเบฅเบฑเบเบชเบดเปเบเบญเบทเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ เปเบเบโเบเบฒเบโเบชเบญเบโเบเบฒเบกโ, เบเบตเปเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบเปเบฒเปเบเป
เปเบเป, เบเบฑเปเบเบเบตเปเปเบเปเบเปเบฒเบงเปเบงเปเปเบเปเบญเบเบฐเบชเบฒเบเบเบฝเบงเบเบฑเบ,
"เบเบฒเบเปเบเบปเปเบฒเปเบเปเบเบเบเบฒเบเปเบกเปเบเบชเบดเบฅเบฐเบเบฐ, เปเบฅเบฐเปเบเบทเปเบญเปเบซเปเปเบเบฑเบเปเบเบปเปเบฒเบเบฒเบเบกเบฑเบเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฐเบชเบปเบเบเบฒเบเบเบตเปเปเบเปเบเบญเบ ... "
เปเบเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเปเบกเบตเบกเบฑเบเบเปเบฒเบเปเบฒเบเปเบเปเปเบเบทเปเบญเบเบกเบทเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก!
เปเบเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบเบเบเบปเปเบงเปเบเปเบฅเปเบงเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเปเบเบงเปเบ? เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบ:
Index Scan using pg_class_relname_nsp_index on pg_class (actual time=0.049..0.050 rows=1 loops=1)
Index Cond: (relname = $1)
Filter: (oid = $0)
Buffers: shared hit=4
InitPlan 1 (returns $0,$1)
-> Limit (actual time=0.019..0.020 rows=1 loops=1)
Buffers: shared hit=1
-> Seq Scan on pg_class pg_class_1 (actual time=0.015..0.015 rows=1 loops=1)
Filter: (relkind = 'r'::"char")
Rows Removed by Filter: 5
Buffers: shared hit=1
เบซเบผเบทเปเบเบฑเปเบเบเบตเป:
"Append (cost=868.60..878.95 rows=2 width=233) (actual time=0.024..0.144 rows=2 loops=1)"
" Buffers: shared hit=3"
" CTE cl"
" -> Seq Scan on pg_class (cost=0.00..868.60 rows=9972 width=537) (actual time=0.016..0.042 rows=101 loops=1)"
" Buffers: shared hit=3"
" -> Limit (cost=0.00..0.10 rows=1 width=233) (actual time=0.023..0.024 rows=1 loops=1)"
" Buffers: shared hit=1"
" -> CTE Scan on cl (cost=0.00..997.20 rows=9972 width=233) (actual time=0.021..0.021 rows=1 loops=1)"
" Buffers: shared hit=1"
" -> Limit (cost=10.00..10.10 rows=1 width=233) (actual time=0.117..0.118 rows=1 loops=1)"
" Buffers: shared hit=2"
" -> CTE Scan on cl cl_1 (cost=0.00..997.20 rows=9972 width=233) (actual time=0.001..0.104 rows=101 loops=1)"
" Buffers: shared hit=2"
"Planning Time: 0.634 ms"
"Execution Time: 0.248 ms"
เปเบเปเบเบฒเบเบญเปเบฒเบเปเบเบเบเบฒเบเปเบเบเปเปเบเบงเบฒเบก "เบเบฒเบเปเบเปเบ" เปเบกเปเบเบกเบตเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเบซเบผเบฒเบเปเบฅเบฐเบเปเปเบเบฑเบเปเบเบ:
- เบเบทเบเบชเบฐเปเบเบเบขเบนเปเปเบ node เบเบปเบเบฅเบงเบกเปเบเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบปเปเบเปเบกเปเบเปเบญเบ
เบเบฑเปเบเปเบกเปเบ, เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบงเปเบฒเบกเบฑเบเปเบเปเปเบงเบฅเบฒเบซเบผเบฒเบเบเบฒเบเปเบเปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเปเปเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบ, เบซเบผเบทเบซเบผเบฒเบเบเบฒเบเปเบเบเบตเปเปเบเปเบเบญเบเบเบฒเบเบญเปเบฒเบเบเบตเปเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเปเบเปเบเปเบฒเปเบญเบปเบฒเบเปเปเบกเบนเบเบเบฒเบเปเบเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบฅเบปเบเบซเบเบถเปเบเบเบฒเบเบญเบตเบเบญเบฑเบเบซเบเบถเปเบ. - เบเปเบญเบเบเบฒเบเปเบงเบฅเบฒ node เบเบนเบเบเปเบงเบ loops
เปเบกเปเบเปเบฅเปเบง, เบเบฒเบเบซเบฑเบเบฅเบปเบเบเปเปเปเบกเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบชเบฑเบเบชเบปเบเบเบตเปเบชเบธเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบ "เบขเบนเปเปเบเบซเบปเบง" - เบซเบผเบฑเบเบเบฒเบเบเบตเปเบเบฑเบเบซเบกเบปเบ, เปเบงเบฅเบฒเบเบฐเบเบดเบเบฑเบเปเบกเปเบเบชเบฐเปเบเบเปเบเบเบชเบฐเปเบฅเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบซเบเบถเปเบเบเบญเบ node, เปเบฅเบฐเบชเบฒเบกเบฒเบเบกเบตเบซเบผเบฒเบเบฎเปเบญเบเบเบญเบเบเบงเบเปเบเบปเบฒ. - เบเบต, เปเบฅเบฐเบเบฑเบเบซเบกเบปเบเบเบตเปเบฎเปเบงเบกเบเบฑเบเบเปเบญเบเบเบฑเบเบเปเปเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบญเบเบเปเบฒเบเบฒเบกเบเบปเปเบเบเป - เบเบฑเปเบเบเบฑเปเบเปเบ "เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบญเปเบญเบเปเบญเบเบตเปเบชเบธเบ"?
เปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฒเบเบฒเบกเบญเบฐเบเบดเบเบฒเบเบชเบดเปเบเบเบฑเบเปเบปเบเบเบตเปเปเบซเปเบเบฑเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบงเบเปเบฎเบปเบฒเบซเบผเบฒเบเบฎเปเบญเบเบเบปเบ, เบเบงเบเปเบฎเบปเบฒเบฎเบนเปเบงเปเบฒเบเบฒเบเบเบฒเบเบเบญเบเบกเบฑเบเปเบเบดเปเบเบเบทเปเบเบงเบเบตเป:
เปเบฅเบฐเบเบฑเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ ...
เปเบเบทเปเบญเบเบกเบท
เปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฐเบเบฒเบเบฒเบกเบฅเบงเบเบฅเบงเบกเบเบธเบเบเบปเบเปเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเบเปเบงเบเปเบซเปเปเบเบปเปเบฒเปเบเบงเปเบฒ "เปเบเบเบงเบเบเปเบฒเบเบดเบเบดเบเบฝเบเปเบฅเบฐเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบ" เบเบฒเบกเปเบเบเบเบฒเบเปเบฅเบฐเบเบฒเบเบฎเปเบญเบเบเป. เบเบต, เปเบฅเบฐเปเบเปเบเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเปเบฒเบเบเบฑเบเบเบธเบกเบเบปเบ.
เบเบปเบโเปเบฅเบฐโเบเปเบฒโเปเบเป -
เบเบฒเบเปเบเบดเปเบเปเบซเบฑเบเปเบเบเบเบฒเบ
เบกเบฑเบเบเปเบฒเบเบเบตเปเบเบฐเปเบเบปเปเบฒเปเบเปเบเบเบเบฒเบเปเบเปเบงเบฅเบฒเบเบตเปเบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป?
Seq Scan on pg_class (actual time=0.009..1.304 rows=6609 loops=1)
Buffers: shared hit=263
Planning Time: 0.108 ms
Execution Time: 1.800 ms
เบเปเปเปเบกเปเบเปเบเป.
เปเบเปเปเบเบเบเบตเป, เปเบเบฎเบนเบเปเบเบเบซเบเปเปเปเบกเบทเปเบญเบเบปเบงเบเบตเปเบงเบฑเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบทเบเปเบเบเบญเบญเบ, เบกเบฑเบเบเบฐเปเบเปเบเบเบงเปเบฒ:
เปเบเปเบเปเบฒเปเบเบเบเบฒเบเบชเบฑเบเบชเบปเบเบซเบผเบฒเบ, เบฅเบฒเบงเบเบฐเปเบเบปเปเบฒเบกเบฒเบเปเบงเบ piechart เบเบฒเบเปเบเบเบขเบฒเบเปเบงเบฅเบฒ เปเบเบ nodes:
เบเบต, เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบกเบตเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเบเบตเปเบชเบธเบเบเบตเปเบฅเบฒเบงเบเปเบฒเบฅเบฑเบเบฎเบตเบเบฎเปเบญเบเบเบตเปเบเบฐเบเปเบงเบ เบเบฒเบเบฐเบฅเบฒเบเบเบงเบฒเบกเบเบทเบเปเปเบฒ:
เบเบปเบงเบขเปเบฒเบ, เบกเบตเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเบเปเปเปเบเบฑเบเปเบฅเบทเปเบญเบเปเบฅเบฑเบเปเบเปเบญเบเป เปเบกเบทเปเบญเปเบเบเบเบฒเบเปเบเปเบถเปเบเบญเบฒเบเบกเบตเบซเบผเบฒเบเบเบงเปเบฒเปเบถเปเบเบฎเบฒเบเบเบปเบงเบเบดเบ:
เบเปเปเบเบถเบเปเบเบเบชเปเบฒเบ
เบเบต, เบเปเบฒเปเบเบเบชเปเบฒเบเบเบฑเบเบซเบกเบปเบเบเบญเบเปเบเบเบเบฒเบเปเบฅเบฐเบเบธเบเปเบเบฑเบเบเบงเบเบเบญเบเบกเบฑเบเปเบเปเบเบทเบเบงเบฒเบเปเบงเปเปเบฅเปเบงเปเบฅเบฐเปเบซเบฑเบเปเบเป, เปเบเบฑเบเบซเบเบฑเบเบเบถเปเบเบเปเปเปเบเบฑเปเบเปเบซเปเบเบงเบเปเบเบปเบฒเบเบฑเบเบเบนเปเบเบฑเบเบเบฐเบเบฒเปเบฅเบฐเบญเบฐเบเบดเบเบฒเบเปเบ "เบเบฒเบชเบฒเบฅเบฑเบเปเบเบ"?
เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเปเบเบฑเบโเบเปเบฒโเบเปเปโเบกเบนเบโเบเบนเปโเบโเปโเบถโเบเบญเบโเบญเบฒเบโเปเบโเบฑโเบชโเปเบเบโเปเบเบฐโเบเปเบฒโเบเบฑเปเบโเบเปเบฒเบงโ.
เปเบเบฃเปเบเบฃเบกเบชเบญเบเบเบฒเบกเปเบเบเปเบเบงเบเปเปเปเบเบง
เบเบฝเบงเบเบตเป, เบเปเบฒเบเปเบฒเบเปเบญเบปเบฒเบเบฒเบเบชเบญเบเบเบฒเบกเบเบปเปเบเบชเบฐเบเบฑเบเปเบชเปเปเบเบเบเบฒเบเบงเบดเปเบเบฒเบฐ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบงเปเบฒเปเบเปเปเบงเบฅเบฒเบซเบผเบฒเบเบเบฒเบเปเบเปเบเบเปเบฒเบเบฐเปเบซเบผเบเบเบตเปเปเบเปเบฅเบฐเบเบปเบ - เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
...เบซเบผเบทโเปเบกเปเบโเปเบเปโเปเบเบฑเปเบโเบเบตเปโ:
เบเบฒเบเบเปเบฝเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบเบปเปเบฒเปเบเบเบฒเบเบฎเปเบญเบเบเป
เบเปเบฒเบเปเบฒเบ "เปเบเบ" เบเปเปเบเบฝเบเปเบเปเบเปเบฒเบฎเปเบญเบเบเปเบเบฑเบเปเบเบเบเบฒเบ, เปเบเปเบเบฑเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบญเบเบกเบฑเบเบเบฒเบเปเบชเบฑเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบเบเบฑเบเบเบถเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบญเบเบกเบฑเบเปเบเบเบฒเบเปเบฅเบทเบญเบเบซเบเบถเปเบ:
- เบเปเบงเบเบเบฒเบเบเบปเบเปเบเบเบกเบนเบเบเปเบฒเปเบเบเบฒเบเบชเบญเบเบเบฒเบก
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเบปเบเบเปเบฝเบงเบเบฑเบเบเบทเปเบเบเบฒเบเบเบญเบเบเปเบฒเบเปเบฅเบฐเบเบฒเบเบชเปเบฒเบเปเบเบฃเปเบเบฅเปเบเบทเปเบกเบญเบตเบSELECT 'const', 'param'::text;
- เบเปเบงเบเบเบฒเบเบเปเบฝเบเบเปเบฒเบเปเบฒเบ PREPARE/EXECUTE
เปเบเบทเปเบญเปเบฎเบฑเบเบเบฒเบกเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเบนเปเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบ, เปเบกเบทเปเบญเบเบฒเบเบชเปเบงเบ parametric เบชเบฒเบกเบฒเบเบเบทเบเบฅเบฐเปเบฅเบตเบ - เบเบปเบงเบขเปเบฒเบ, เปเบกเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบเปเบเบชเปเบงเบ.DEALLOCATE ALL; PREPARE q(text) AS SELECT 'const', $1::text; EXECUTE q('param'::text);
เบฎเบงเบเบฎเบงเบกเปเบเบเบเบฒเบ
เบงเบฒเบ, เบงเบดเปเบเบฒเบฐ, เปเบเปเบเบเบฑเบเบเบฑเบเปเบเบทเปเบญเบเบฎเปเบงเบกเบเบฒเบ! เปเบเบเบเบฒเบเบเบฐเบเบฑเบเบเบปเบเบเบทเบเปเบเบฑเบเปเบงเป เปเบฅเบฐเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบทเบเปเบเบซเบฒเบเบงเบเบกเบฑเบเปเบเปเปเบเบเบฒเบเบซเบผเบฑเบ:
เปเบเปเบเปเบฒเบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเปเบซเปเบเบปเบเบญเบทเปเบเปเบซเบฑเบเปเบเบเบเบฒเบเบเบญเบเบเปเบฒเบ, เบขเปเบฒเบฅเบทเบกเบเบงเบเปเบเบดเปเบเบเปเบญเบ "เบซเปเบฒเบกเปเบเบตเบเปเบเปเปเบเปเบเปเบก".
เปเบเบเบปเบเบเบงเบฒเบกเบเปเปเปเบเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเปเบเบตเบเบเบทเปเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบงเบดเปเบเบฒเบฐเปเบเบเบเบฒเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com