αααΆαααΆααααααα αΆαααΈαα·ααΈααΆααααααα½αα ααα½ααααα’αα»ααααΆα ααΆαααΆαααααΎαααΆααααααα½α SQL αα ααααααααΆααα½αααααΆααααΆααααα»ααα½αααααα αΎαααΆααααΆαααΈααα PostgreSQL ααΆαααααααααααΌαααΆααααα½ααα·αα·αααα
ααΎαααααααααΆααα αα αααααα’αααΈαααααααα’αα»ααααΆαα±ααααΎαααααΎαααΆαααα·ααΆαααααααααΆαααααααααααααααααααα·αααααΆα α αΎαααΎααΆααααΎα±ααααΈαα·αααααα’αααα’αα·ααααααααααααΆααΆααααα½αααΆααα»ααααααααααΆ?
α’αααααΆα αΆααα’αΆαααααα? ααΆααα·ααΆαα’αααΈαααα αΆααΆααααΆαα αα·ααα αα ααααααααααΎαααααα·αααααΆααααααα αααα½α SQL αα·αααΆααααααααΆααααα αΆ DBA ααααααΆαα αααα»α PostgreSQL - α’αααααα’αΆα αααααα
ααααααααααααα»αααΊ Kirill Borovikov αααα»αααααΆα
ααααααααααα»αααΉαααααΆααα’αααααΈαααααααααΎααααααΎαααααα·αααααΆααααα½α αα ααααααα’ααααα·αα αΆαααΆα α "ααααΎαααΎαααΆα ααααα‘αα" ααΆαα’αα»αααααααααα½ααααα½α ααα»αααααααααααΆααααα αΆααΆααααΌαα αα ααααααααΆαααααΎααΆααααΆα α αΎαα’αααααααΌαααααααααα½αα ααα½α αα·ααΈααΆααααααααααααααααΆα αααα αΆαααααααα
ααΆααΌαα
Tensor αααααΆααα’αα·αα·αααα½αααΆαααΆααααααααΎαααΊ
ααΎααααΈααΆααΆααΆαα½αααααΆααα’ααααααΎαααΆα αα·αα’αα·ααααααΆααααααΆ ααΎαααΆααααααααααα’αα·ααααααα ααα½α 10 αα ααΌααΆαααααααα αααααΆαα αααΎαααααα αααα»ααα½αααα α’αααα’αα·αααααα 1000.
ααΎαααΆαααααΎααΆαααΆαα½α PostgreSQL ααΆααααΈααααΆα 2008 α αΎαααΆααααααΌααααα»αααΌαα ααα½αααα αααΎαααα’αααΈαααααΎαααααΎαααΆα - αα·ααααααα’αα·αα·αα αααα·αα· ααΆααα·ααΆα αα·ααααααααΈααααααααααααααΆαααΆααααα - α αααΎαααΆα 400TB. ααΆααααΆαααΈααααααα αα 250 αα αααα»αααΆαααα·ααααα½α α αΎαααα»ααα ααΆααααΆαααΈαααααΌαααααΆααα·αααααααααα αα 1000 αααααΎααααα½ααα·αα·αααα
SQL ααΊααΆααΆααΆαααααΆαα α’ααααααααΆαα·αααα "αααα" α’αααΈαα½αααααα½αααααΎαααΆααα ααα»αααα "α’αααΈ" αααα’αααα
αααααααα
ααΆαα DBMS ααΉαααΆααααα
αααΆααααΈαααααααααΎα JOIN - ααααααααΆααααΆααΆαααααα’ααα αααααααααααααααΌαααΆαα α’αααΈααΉαααααααΆαααα·αα·αααα α’αααΈαααααΉααα·α...
DBMSs αα½αα ααα½αααα½αααααααααΆααααα½αα "αα ααααΆααααΆααΆαααΆααααΈαααααα αααα»ααα½ααααααα" ααα»αααα PostgreSQL αα·αα’αΆα ααααΎααΆααΆαααα αααβααΆβααα αβααΉαβαααα½αβααααβα’αααβα’αα·ααααααβααΆαβαα»αβααα "ααΎαβα ααβαααα ααβαααααα·ααΈβαααααΎαβααααα·αααααΆαβαααα½α ααΆααΆαβα’αα»ααααΆαβα±ααβα’αααβα’αα·ααααααβααααΎβααααα»αβαα½αβα ααα½αα"
ααα»αααααααααΈααΆααΆααα·ααααααΆ PostgreSQL αα·αα’αα»ααααΆαα±αα "ααΆααααα " ααααααααααααα½αα―ααααααααααΆα’αα»ααααΆααααΆαααα’α₯αααα αα ααΎαα’αααΈααααααα»αααΎαα‘αΎααα αααα»αααΆαααα αααα’αααααααΎαααΆααααα½αααααα’ααα αα·ααααααααααααΆααΆααααα αΆα
ααΆααΌαα
ααΎαααα αΆαα»ααΆαα’αααΈαααααααα’αααα’αα·αααααα [αα
DBA] αααααααααΆαα½α? βαα
ααΈααα ααΎαααΆααααααααααΎαα αΎα α’αααΈααααααααΆαααΊααΊαααΆαα½αααΎαα’αααΈααααααααΆααααα»ααααα½α α’αααΈαα½ααααα»αααΎαα‘αΎα... αααα αΆαα½αα
ααα½α!β
α ααα»ααααΊααααΎααααααααααΌα ααααΆα
- αααα½ααααααααΆααααα½αααααΆαααααα·αααααΆα
α’αααα’αα·ααααααα "α₯α‘αΌαααααααα»ααααα»ααααααα±ααααΆααααΌαααΆααΆαα ααα½α 10 αα αααα»α SQL ααΆαααα JOIN ... " - α αΎαααααΉαααΆααααααααααααααΆααααΉαααΆαααααα·αααααΆααααα’ααααΌαα ααα» "ααααΆα" α αΎαααΆααααΉαααα½αααΆαα’αααΈααααααααΆααααΆαααΆαααα ααα ααα»ααααα’ααααΌαα ααα»αα·αααΎαα‘αΎαααα αΎαααααααααααΆαα½ααααααΆαααΆααααααααα½ααααααα (10 ααΆααΆααααα»ααα½α FROM) ααααααααααααΌαααααααααααα α»ααα½αα ααα½αα [α’ααααα ] - αααα·αα·αα·αααΆααααααα
α ααα»α αααααΊααΆαααααααααΆαα·ααααααααΆαα PostgreSQL αα ααααααα’ααα "α αΆαα" αααα»ααα·αααααααααααα½ααα ααΎαααΆαααΈααα ααααΎααΆαααααΎαα»α α αΎαααΆ "αα½αααα" αα»αααααΌααααααααααααα’αααα αααααΆαααααΆαααΈαααα·ααα·αααΆααααααααααΆα ααα½α 10 αα αααα»αααα α αΎααααααααααΆα 10 ααΆαααΆαα ααα»αααα PostgreSQL αα·αααΆααααΉαα’αααΈααΏαααααα α αΎαααΎαααααΌαααααΆααααΆα’αααΈααΆα [α’ααααα ] - "ααα" ααΎααααΆα
α’αααβααΆαβααα‘αΎαβααΌαααααΆαβαα·ααααααβαα αα·αβαααα»αβααααΆααβααΎβαααΆαααΈαβαααααΎβααααα αααβαα·αβααΆαβααααΎαααΆαβαααααααααΆααβααβααΆα α’αααα αα αΆα α¬βααααΎαααΆαβααααβααααΎαααΆαα α αΎααααα αΎαααΆααΆααα’αα ... ααααααααΆαα½αααΆααα·ααΆαααΆααααααααα ααΆαααΎ αααα’ααααα·αα’αΆα αααααΆααααααα - ααΆααααααααΆαα
αααααΊααΆα ααα»α αα·ααΆα ααα»αααααα½αααααΆααααααααααα»ααααααΆαααααα½ααααααααααααα (αααα αΌα α’αΆααααα αα»α) - αααααΊααΆαααααΆαααααααΆα ααααα‘αααα½αα
ααΆαααα½αααΆααααααΆα
... α αΎααααααΆααα’αααΈααααααααααΎα ααααΌαααΆααααααΆα! ααΎαααααΌαααΎαα’αααΈααααααα»αααΎαα‘αΎααα ααΆααααα»ααααΆαααΈαααα
αααααΆαααααα·ααααα·αααα½ααααααΆαα PostgreSQL ααΊααΆαααααΆααααααα½ααααααααΆαααΆαααααα·ααααα·αααα½ααα
αααα»αααααΆαα’αααααα ααΆα
αααΆααααΆααααΆααΆαααα½ααααααααΆαααα ααΆααααααααααΆααα·ααΆααααα’ααααααα
ααααααΆα ααααΌαααΆαααααΎαααΆααΆαααααα·αααααΆααααα»αα
ααααΆαααααααΆαααΈαα½ααααΊααΆααααα·ααααα·ααΆααα½αα ααΆαααΆααααα·ααααααααΈααΆααΆα α¬αα·αα·αααα ααΆααααΆααααααΈαααΈα ααΆαααααΆααααΆααΆαααΈα ααΆαα αΌααα½α ααΆααααααααααααΆ α¬ααΆααα·αααΆαααααα αΌαααΆαααααΎαααΎαα ααΆαααααα·ααααα·αααα½αααΆαααααααααΉαααΆαααΎαααΆααααααΆαααααααααΆααααα
ααΎααααΈααα½αααΆααααααΆααααα½α αααααααΆαααΆααααα½ααααα»αααΊα’αα»ααααααα
ααααΈαααααααΆααα EXPLAIN
. ααΎααααΈααα½αααΆαααΆαα½αααΉααα»ααααααααα·αααΆααα’αα αααααΊααΆααΆαααααα·ααααα·αααα½ααα
ααΎααΌαααααΆα - EXPLAIN (ANALYZE, BUFFERS) SELECT ...
.
αααααα’αΆαααααα αα αααα’αααααααΎαααΆαααΆ ααΆααΎαα‘αΎα "αα ααΈααα αα·αα₯α‘αΌαααα" ααΌα αααα ααΆαααααααααααΆααααααΆαααααα α»ααααα»ααααααααα»αααααα ααααα·αααΎα’ααααααααΆαααΈααααααααΆααααα»ααααααααααααα·ααα αααααααα αΌαααααΆααααααΆαααααΆααααααΌααα·αααααα α αΎαα’αααααΎαα βα’αΌ! αα ααΈαααααΎαααΆαααΆαα’αα»ααααααΊααα ααααΎα" ααααααααα αα½ααααααα»α - αααααααααα’ααααααα»αααααΎαααΆα αα·αααα½αααΆαααααΎαααααΈαααααα ααα» ααΆαααΆαααα‘αααα αααΆαααΈααααα·α αααα»ααα·αααααα αα·ααααα·αα·ααΆααααΌαααααα’αααααΆαααααΆααααααΌαα α’αααβαααβααΆβααΎααααΈβααααΆααβααα α»α - α αΎαβααΆβαααβαααΆαβααΏα! α αΎαα’ααααα·αα’αΆα αααααΆαααΆα ααα»α’αααΈ? ααΊ αααΆαβααΊαα
ααΎααααΈαααααΈα’αααΈαααααΆαααΎαα‘αΎααα·αααααΆαααα
αααααααΎααααΌαααΆαααααα·ααααα·αα
ααΎαααΆαααΈααα ααα»αααααααΆαααΆαααααα
ααααα·αααΎααΆααΉαααΆααααΎαα½αα ααα½αααααΎαααΆαααΌαααΆααααααααααααα’αααααΆαααααΆααααΆ αααααΆααΉαααΎαα‘αΎα "ααΌααα" αααααααΆαααααααΎααα α αΎαααααααα½αααΆααΆαα½αααααΆαα αααα»ααααααα ααα».
α’αααΈαα αΆααααΌα
ααΆααα’α₯α‘αΌαααα ααΎααα
ααΎααααααα ααα»αα
ααΈααα... [ text footcloth]α ααα»ααααβααΎαβαα·αβα’αΆα
βαα·ααΆαβα’αααΈβα’αααΈβααΆβααΆαβαα αααα
βααΈβααΆαβαα·αβααΆβααΆβααΆβααααααβααβααα’βαα½αβαααααβααΆβα
αααΆαβααα 11ms ααΎααααΈβααααα·ααααα·α
α’αααΈαβα αΆααβααΌα βααΆβααα’ ααα»ααααβαα·αβααΆαβα’αααΈβα αααΆααβααΆααβααΆβααΎβα’αααΈβααΆαβααΎαβα‘αΎαβαα·αβααααΆααα αααα ααΈαααααααΆααΌαα ααΎααα·αααΆαα·αααΎαα’αααΈααΆααα’ααα αααααΆαααααΆααααα‘ααααΎα "ααΆα αα αα" ααα’αααααααααααΆααΆααΌαα αα·αα’αΆα ααΎαααΎαααα
ααα»αααααααααΈααΆααΆαα·αα αααΆααααααα αααααΈααΆααΆααΆαααΆααα’αΆαααα’α½αααααα ααααΆααααα αΆααΆααΌαααααΆαααΆα αααΎααααα
- ααααΆααα ααα’α»ααααα αΆα ααααΌαααααααΆααααααααΆαααααΆααααΌα αα αααααααΆααα αααααΊα’ααααα·αα’αΆα ααα±ααααΎαααΆααΎααααΌαα αααΆααααααααΆααα»ααααΆαααΎααΆααααααααααααααααα·αααααααα ααααα·αααΎααΆαααααααααααΆαααα αααααααΆα ααΎαααααΌαααααΎααα αααΆαααααΆα αΆααααΎααααΈααΎαααΆααΎααΆα "αα»ααΆα" αα·αα’αααααΆααααααααα CTEs αα ααΆααααα»α - α αΎαααααΆααα’ααααα "αα αααα»ααααα·αααααααΎα" α
- α ααα»α ααΈααΈαα αααααααΆαααααααΌαααΆαα ααα’α»ααααα αΆααα ααΎααααΆααααΊ αααααααΆααααα·ααααα·ααααΆαααααα½α. ααααα·αααΎααααΆαααααααααΌαααΆαααααα·ααααα·ααΆααααααααα§ααΆα ααα ααααα·ααα»αααΆαααααααααααααΆααΆααΆαα αααΎααα αααα ααα½αααααα·ααα»α-ααααααααααΆααααα-ααΎαα‘αΎααα αααα»ααααααΆαα ααα»ααααβαααααααΆβααααα·ααααα·βααααΆααΌβαααα½αα―αβαα ααβααααβαααα»αβααααααααβααβαααααΆαα αααααΊααΎααααΈαααααΈαααααααααααααΆαααααααααΌαααΆαα’αα»ααααααα»α α’αααααααΌααα»ααααααα½αααααα½αααα - ααααααα "αα αααα»αααααΆαααααα’ααα" α
αααα»αβααααΆαααΆαβαααβααα ααΌαβαααβααΆ "ααΎβα’αααβααΆβααΆβαααβαααααβαααα»α?" ααααΎααααα·αα’αΆα αα αα½α ααα ααΌα ααααααΌααααΈααα’αααα’αα·αααααααααα½αα―αααααααααα αααα»α "ααααα ααααΆα" αααα βααΆααααααΉαα’αααΈαααααΆα ααΊααΆαα·αααααααααααΌαααααα αααα·αααααβ¦β.
ααα»ααααααΎαααΆαα’αααα’αα·αααααα 1000 ααΆαα α αΎαα’ααααα·αα’αΆα αααααΌααααα·αααααααααα ααΆαααα½αααααααΆαααααΆαααα αααα»α α’ααα ααΆααβααΉα ααα»ααααβα’αααβαα βααΈαααβαααβααΉαβα αΎαα αααα ααααΆααΆααααΉαααα α¬ααα’αα ααα»ααααααΆααααααΌαααααΎααΆαα₯α‘αΌαααα α αΎαααΎααΆααααΉαααα½ααααα·αααααααααα α―ααΆ?
ααΆαααΎαααΎααααααΆα
ααΌα
ααααα αΎα ααΎαααΎαααΉαααΆ ααΎααααΈαααααααΆααααα αΆααΆααααα ααΎαααααΌαααΆα ααΆαααΎαααΎαααααα’αααααααΆα.
ααααΌαααΎαααΆααα
"ααΆααααααΈααααΆα" - ααΌαααααΎααα
ααΎα’ααΈαααΊαα·αααΎααααΈααΎαααΆααΎααΆαα
ααα»ααααααΆααΆαααααααααΆαααΆααΆααααααααααΆα "ααααααααΆαα" αα·α
αα½α
αααα»ααααααΆαααΆαα’αα·ααααααα
αααΎα α¬αα·α
ααΆαααα - ααΆααααααααα ααΆααααα½αααα»αααααα
- αααααααΆααααΎαααΆαααααΆαααααα½ααααα node
- αααααααΆααα»ααααααΆαααααααΆαααααΆααααΌα
- α ααα½ααααααααααΆαααααααΌαααΆαααΆααααααααααΌαααΆαααααΉααα»αααΆααααα·αα·
- αα½ααααααααΆαααααα½αα―α
ααααΆαααααααααααΆααααααααΆααααα»αααΆαα ααααααααααααααΆααααααααααΆαααααααα α’αααβααΆαβαααβαααααΆαβααααβα’αααβαα βααΈβααα α αΎαβαα·ααΆαβααΆβα βΒ«βα α αααΆααΆ αααβααΆβααα ααΆαβα’αααΈβαα»αβαα βααΈαααΒ»α
ααα»ααααααααΆααααα αΆααΌα
ααΆα
αααααα
ααΈαα½α ααα·ααΆαααα αααΎααα "α αααα-αα·αααααΆαα" α α’αααβααβααΎβαα½αβαα»αβααβαα·αβαα βααΈβααα α αΎαβααααβα αΎαβααααβαααβα
ααΈααΈα, αα·αααΆαααΆααα·ααΆαααΎα
ααα½ααα·αααααααααααΆαα’αΆαααα - ααα·ααααααα’αΆααααααΌα
ααααΆααααα·ααααα EXPLAIN (ANALYZE, BUFFERS)
ααΎααα·αααΎαααΆαα
ααΈαααααα ααΆααααααΆαααααα·αααΉαααΈααααααααααα½αααΆ ααα αα·αααααΎααΆαααΆαα½ααα½αααα αα
αααα’αααα’αΆααα·ααααααα
αααΎα α αΎαααΉαααΆα’ααααααα ααααΆαααα»ααααα
ααααΆα αα·αααααΆαααααααΆαααα·αααααΉαααααΌα ααααααΆααααααΆαααΆααααααΆααααΆααα
α ααα»α α’αα·αααααΆαααΈααΈααΊααΆαα’αα·ααααααααααααααααααααααα ααΆαααααααααΆα α·αααααΊααΌα ααΆαα ααΆααΆααΆαααα’ααααα·αααΎαααααΆααααααΆααα½ααααααα α αΎααααααΌααααα·ααα αααα»α Perl α
ααα»αααααααααΊααΆ "α’αααααα
ααααα" ααΆααα’αα ααΎαα’αΆα
ααααα
ααΆαα½αααΆ ααα»ααααααΆαααΏααα½ααααααααΎα±ααααΎαααΆαα
ααααΈααααΆααααααααααΆαααααΆααα ααΆαααααααΊααΆααα α»ααααα»αααΆααα·ααΆααα Common Table Expression (CTE) αα·αααααΆααααΆαααααααααααααΌα
ααΆ InitPlan/SubPlan ααΆααΎαα
ααααα·αααΎα’αααααΏααΆααΌαααΆαααα ααααααααααΆααααα·ααααα·ααα»αααααααΆααααΈαα½ααααΊααααΆααααααααΆααααα·ααααα·ααα»αααααααΎααΆααααΌαα ααΆααΆαααα - αααααααΆααααΆααααααΎα CTE ααααα·αααααΌαααΆαααα ααααΈααααΆαα CTE Scan ααα. ααΌα αααα ααΎαβαααβααΉαβα ααααΎαβααααΉαααααΌαβα ααααβααααααβαααβααΆαβααααα CTE αααα½αβααΆβααΆαβα αααΆαβαααβααΌαβαααβα αΎαα
αααβαααβααΎαβααΆαβααΉαβααΆβαααβαααβααααΌαβαααααβαααα½αβα―αβα αΎα α ααΊ! α’αααα’αα·αααααααααααααΌααα·ααΆαααΆα "α₯α‘αΌααααααΎαααΉααααααααααααα½αα―α ααΆααΉαααΆααααα½αααΆαα!"
ααΎαααΆααααααααααααΆαααααΆααααααΆααααααα αααααα ααααΌαααα’ααααΎ Node.js + Express ααΆαααααΎ Bootstrap αα·α D3.js αααααΆααααααΆααααΆααααααααααα’αΆαα α αΎαααΆαααααΉααα»αααααααΎαααΆαααΆααα»αααα·ααααααααα - ααΎαααΆαααα½αααααΌααααΌααααα»ααααααα 2 αααααΆα αα
- αααααα·ααΈααααααααΆαααααΆαααααα½α
αααβααΊβα₯α‘αΌαβαααβααΎαβα’αΆα βαααβαααααΆαβααΆβαα½αβααΈβααααααβαααβαααααΎαβααα PostgreSQL α - ααΆααα·ααΆαααααΉαααααΌαααααααΆααααΆααααα - CTE Scan, InitPlan, SubPlan
- ααΆααα·ααΆαααααΆααααα ααααα·ααααααα’αΆαααα - αααααααααααααααα·ααααααααααΌαααΆαα’αΆαααΈα’αααα αα αΆα, ααααααααΈααααΆαααααααΆααααΌαααααΆα, ααΈααΆα
- ααα½αααΆαααΆαα
αααΆααααΆαα
ααΌα ααααααΎααααΈαα»α "ααΈα" ααΆααα’ααααααα αααα»ααααααα ααα»ααα»ααααααΎααααΈααΎα "αααααααΆααααααααααα»α" ααααΆαααα αααα»αααΌαααΆαα
ααΎαααα½αααΆαα’αααΈαα½αααΌα
ααα ααααα½ααααα
αΌαααΆαααααα·α
ααΆαααααααααααα ααα»ααααααΆααααααΆ α’αααα’αα·ααααααααααααΎααααααααΎααΆαααΆαα½αααααΆααααααααααααααΆαααααααα αΎα ααα»ααααααΆαα½αααΉαααααΈααΆααααα αααααΆααααΈααΆαααΆααα’αα ααΎαααΆαααααααααΆααα’αααα½α
α αΎα α αΎααααααΆαα
ααααα αα·αααααΆα α αΎααα
αααααΆα ααΎααα»ααααα½αααΈαα½αααα»ααααα ααΎααααΆααααααααααΆαααα CTE Scan ααααΆαα CTE α¬ Seq Scan ααΆααααααΆαα½αα
ααα½αα
αααααΊααΆααααΆαα’ααααααΆαααααααΎαα α ααααΌαααααΆα.
ααΎααΆαα’αααΈααααααααΆααααα½α? ααΆααΉαααΆαααΆαααΆααααα½ααααα»αααΆαααΎαααΆααΎα
αααααααααααααΆααα»αααααααΎαααααΌαααΆααααα
αααα
ααααΆααααΆ - α αΎαααααΆαααα "αα·αααΆ" αα
α
αα ααα ααααΌαααΆαα
ααα·α.
ααΎαα
ααα’α»ααα
ααααΆααα αΎαααΎα - ααΆααααααΆ Seq Scan ααΆαα
αααΆαααααα·α
ααΆααα½αααΆααα½ααααααααααΆααα»α α αΎα 3/4 ααααα
αααααααΌαααΆαααααα CTE Scan α αααααα! αααααΊααΆαααααα
αααΆαααΌα
αα½αα’αααΈ "α’ααααΆααααΎα" αα CTE Scan ααααα·αααΎα’αααααααΎαα½αααΆαααΆαααααααα
αααα»ααααα½αααααα’αααα αα½αααΆαα·αααΏααα - αα½αααΆα’ααααΆαααΌααααΈααααΆααααααααΆααΆαααααααΆα
ααα»ααααααΆααααααΆ ααααΆααααΆαααααααααΊαα½αα±ααα αΆααα’αΆαααααα αααα»αααααΆαααΆα αα ααααααααΎαα ααα’α»ααα ααααααα½αααααΆαα α αΎαααΎαα§ααΆα αααααΆ α αααΎαααΆαααΆαααααααΆααααααααααΆαα½αα ααα½α Seq Scan "αααΆα" α ααΎαααΈααααα ααα ααΆααααααα Filter αα½αα ααα½ααα ααΆααααα»α αααααααααΆααΆα αααΎαααααΌαααΆααααααα ααααααα ααΆαααΆ... α’αααα’αΆα αααααΌαααΆαααααα ααΆααα’αααα’αα·αααααααααααααΆαα α αΎααα·ααΆαααΆ βVasya α’αααΈααααααααΆαααΊα’αΆααααααααααΆααα’ααα! αααααααΎα - ααΆαα’αααΈαα½ααα»α!β
ααΆααααααΆααΆα "αα»ααα½α
" αα½αα
ααα½αααΆαααααααα
ααΏαααααΌααααααΎααα½ααααααααΊαααα αΆααααααα αααααααΆααααααΆααααΈαα½αααα αααα»ααααααΆαααααΌαααΆαα ααα’α»ααααα αΆαααΆαα½αααΉαααΆαααααΉαααααΌααα 1 ΞΌsα α αΎααα ααααααα ααα½αααααααααααΆααααΎαααΈα§ααΆα ααα 1000 - αααααΆααααΈααΆαααααα·ααααα· PostgreSQL ααΆααααα αα "αα αααα»αααΆαααααΉαααααΌα" αααααΆαααααα αααααααΆαααα‘αααααα·αααΎαααα½αααΆααααααααΆααα»α "ααααααααΆαα½ααααΆα 0.95ms αα·α 1.05ms" α αα ααααααααΆαααΆαααα ααΈααααΌαα·ααΆααΈ ααΆαα·αα’αΈαα ααα»αααααα ααααααααΆα’αα [milli] αα·ααΆααΈαα½α α αΎα α’αααααααΌαααααααααααΆαααααα αααα»αααααΈαα ααα "ααααΆα" ααααΆααα ααααΆαααα "α’ααααααααααΎααααΆααααα»ααααΆα" αααααααΆαα
α
ααα»α
ααΈααΈαααααααα»αααααΆαααΆααααααΊααΆαα
ααα
αΆαααααΆα (ααααα»αααΆααααα) αααα»αα
ααααααααΆααααΆαααααα ααΆααααΎα±ααααΎαα
αααΆαααΎ 2 αααααΆα αααααΌαααααααΌ ααΌαααΉα 4 αααααΆα ααααα
ααΆααΆααααα½αααΆαααααα»αααΆαααα½αααΆααααα αΆαααααα - ααΎαααααΎ CTE α αΎαααααααααΆα’αΆαα’αααΈαα½ααα αααα»αααΆα ααΆααα·α PostgreSQL ααΊ "ααααΆα" α αΎαααΉααα·αα’αΆαα’αααΈαααααααΆαααα ααΈαααααα αααααΆααααααΎααααααααααααΆααααΌαααΈααΆ α αΎααα½αααααααΌαααΈ CTE ααΌα ααααΆα
ααΎααααα‘ααααΎααααααΆαα αΎαααα - ααΆα
ααααα ααΎαααΆα 3 buffers (ααααααα·αααααα) "ααααΎααααΆαα" αα
αααα»α Seq Scan, 1 ααααα
αααα»α CTE Scan αα·α 2 ααααα
αααα»α CTE Scan ααΈααΈαα αααααΊααααα·αααΎααΎαααααααα’αααΈαααΆααα’ααα‘αΎαααΎαααΉαααα½αααΆα 6 ααα»ααααααΈαα»αααααΌααααααααααΎαα’αΆαααααΉααα 3 ααα»ααααα! CTE Scan αα·αα’αΆαα’αααΈααΈααααααααΆαα ααα»ααααααααΎαααΆααααααααΆααααΆαα½αα’αααα
αα
αΆαααααΎαααΆαα αααααΊααΆαα’αααΈαα½ααα»ααα
ααΈααα!
ααΆααα·ααα ααΆααααααΆ αααααΊααΆαααααααΆαα 3 αααα·αααααααααααααΌαααΆαααααΎαα»αααΈ Seq Scan ααΈαα½αααΆαααααΎαα»αααΆαααααα CTE ααΎαααΈ 1 α αΎααααααΆααααααα 1 αα·α 2 αααααααΌαααΆαα’αΆαα±ααααΆαα αααααΊααα»αααΆααα’αα 2 αααααααααΌαααΆαα’αΆααα·αααααααα·αααα 3 α
α αΎαααΌαααΆααααααΆαααΆαααΎααα
ααααΆααααααΉαααΆααΆαααααα·ααααα·αααααααΆααα½ααα·ααααααΆααΎαααΎααααα ααα»ααααααααΆααααααΆααααααααααΆα ααα·α
αααΈααααΌα α αΎαααΎαααα½αααΆαααααΆααααΆαααΌα
ααα ααΎααααΈα±ααααΎααααααΆ "α’αααΈαααααΆαααααΈααααααααααΌα" α αααααΊαα
ααΈαααααΎαααΆααααααΎα CTE ααΈ pg_class α αΎαααΆαααααΎαα»αααΆααΈααα α αΎααααααααΆααααααΎαααααΎαααααΆααα’ααααααΌαααΆαα
αααΆαααΎααΆααΆαα
ααααααααΎαααααΎαα»αααΆααΆααΎαααΈααΈαα ααΆα
αααΆααααΆααααΆααΆαα’αΆαααΆαα»ααΈ 2 ααΆααααααααααααΆαααΆαα’αΆαααΆαα»ααΈ 101 ααΈαα»αααααΌααααααααα
ααΎααααααα αΎαα
αααα½ααααα αα½αβααβααΆαβαα·ααΆαβααΆ βα₯α‘αΌαβααα ααΈα’αΌ α’αααβααααΆααβαα»αα αααΌβα αΎα! α₯α‘αΌαααααααα·αααααααααααΎαααΊααααΉαααααΌααα
ααΎα’ααααααααααα’αααα α₯α‘αΌαβα’αααβα’αΆα
βααααΎβααΆβααΆαΒ»α
ααΆαααααα½αααααα½ααααααα ααα»
α’αααα’αα·αααααα 1000 ααααααΎααααααα αΎαααα ααα»ααααβααΎαβααΆαβαααβααΆ ααΎαβααΆαβααβαααΆαααΈαβαα "ααααα»ααα" ααΆααααβααα»ααααα α αΎαβααΆαβα ααααβαα·αααααΆααβααΆααβα’ααβαααβαα βααΎβαααααβααβα’αααβα’αα·ααααααβααΊβαα·αβααΆαβαααα½αβααΆααβααβαααα ααΎαααΆαααΉαααΆααΎαααααΌααααααΌαααΆααααααα½αα―αα
ααΆααΌαα
ααΆααααΌαα»ααααααααΆααααα’αΆα
αααααΌααααα·αα· ααααααΆαααΆααααα ααΆααααααΌαααΆαααααΎα±ααααααααααα»αααΆααααααααααα - ααα
ααΈαα½α ααΆααααααα
αααα½αααΌα
ααααΆαααααααΎαααααααΆααααααααααααΆαα
αααα»αααΌαααααΆααα·ααααααααΌα
ααααΆα QueryIds αααααααααΆ. αααααΊααααα·αααΎα’αααααααΎααααΌα SET search_path = '01'; SELECT * FROM user LIMIT 1;
α αΎααααααΆαααα SET search_path = '02';
αα·αααααΎααΌα
ααααΆ αααααΆαααααααα·αα·αααααΌαα»ααααααΉαααΆααααααααααΆαααααααααΆ α αΎααααα»αααΉααα·αα’αΆα
αααααΌααααα·αα·ααΌαα
ααΆαα·ααααα
αααα»αααα·ααααααααααααααΎααα ααααα·ααα·αααΈαααααααΆαααα
α ααα»α ααΈααΈααααααΆααΆααααΎαααΈααΆαααααΎααααΆααααΆααΊ ααααααααααΆα. αααβααΊβα’ααβααΆαβααααααβαα ααΊβααΆαβααβααααΎβα αααΉαβα―αα ααΎαβααΎαβααΆβααΆαβα’αααΈβαααβααβα α»α ααα»ααααβααΎαβαα·αβαααβααΈβααΌαα ααα»βααα α αΎααα ααΈαααααΎααααααααα αααα αΆαααααα»ααα·αααααααααααααΆααααααΌααααΆαααΆαααα ααα
α αΎααααα α»αααααα - ααααα "ααΆααα·α". αααααΊα’ααααα·αα’αΆα αααααααΆαααααΈααΆααααΆααααααΆαααααα·ααααα·αααα½αααΆααα - αα·αααΆααα ααΆααααααα·αα·ααα»αααα»αααααα ααααΈααΎα’αΆα ααααΎααΆαααΆαα½ααααααααα ααΆαα·αααΆααααΆαααααΆααααΆααα
ααΌα
ααααα αΎα αα½αααΎαααΆααααααα
α
α·αααααααα»αααααΉαααΆαα
αααααα·αααααΆαα α αΎαα
αΆααααααΎαααααα α’ααααααααΌα.
α’ααααααααΌαααααΆααααΆαααα SSH αααααΎαααΆααααααΆαααα»ααααα·ααΆααα
αααΆαααΈαααααΆαα½αααΌαααααΆααα·αααααααααααααΎαα·ααααΆαααααα αα·α tail -F
"ααα" αα
ααΆαα
αααα»αα―αααΆααααααα ααα»α ααΌα
αααααα
αααα»ααααααααα ααΎαααα½αααΆα "αααα
αα" ααααααααα―αααΆααααααα ααα»ααΆααααΌαααααααΆαααΈααααααααΎαα ααΆααααα»ααα
ααΎαααΆαααΈααααααα½αα―αααΊαα·α
αα½α
αααα»α αααααΆαααΎααα·ααααα’αααΈαα
ααΈααα ααΎαααααΆαααααααα»αααΎαα
ααΆα
αααααα»αααααα
α αΆααααΆααααΈααΎαααΆαα αΆααααααΎααααααα ααα»α αααααΆαααα αααα»α Node.js αα½α α αΎα ααΎαααΆααααααααααα’ααααααααΌααα αααα»αααΆα α αΎααα αα αααα·ααααΆαααααΆαααΆααααΆαα»α αα·αααααααα½αα―α αααααααΆααΆααααα½αααααΎ JavaScript ααΎααααΈααααΎααΆαααΆαα½ααα·ααααααα’ααααααααααΆαααααααααααα αααααΆαααααα ααα»α α αΎαα αααααΆαα ααΆαααααααα Node.js αααα½αααΆααΆαααα·ααΆ backend α’αα»ααααΆαα±ααα’αααααααΎααΆααααΆαααΆααααα½α αα·αααΆααααα½αααΆαα½αααΆαααααΆαααααααΆα α αΎαααΆααΆααα·αααΆαα½αααΉαααααααΈααα·ααααααααΆαα½αα
ααΌα ααααα αΎα ααΎα "ααΆααααααΆα" ααΆααααααΆααααΈα: ααΈαα½α "ααααΆαα" αααααα ααα»ααααααα½αα―α α αΎαααααΆαα αααα½αααΎα αα·αααΈααΈαααΎααααΈαα½αααΌαααααΆαααΆαααααΆααα "ααα»αααααααααα ααα»αααα αΆαααΆαααααΆαααααΆα oid 123 ααααΌαααΆαααΆααΆαα" ααα»ααααααααα·αααΆααααα’αααΈαααααΆααα’αααα’αα·αααααααα α αΎαααΆααΆααΆαααα’αααα»αααΆααα½αααΌαααααΆααα·ααααααααΆ "ααΎ OID = 123 ααΆα’αααΈ?" ααΌα ααααβα αΎα ααΎαβαα½αβααΆβαααααΆααβααΌαβα’αααΈβαααβααΎαβαα·αβααΆααβααΉαβα’αααΈβαααα½αβααΎαα
βααΆαααΏααααα½αααααααα’ααααα·αααΆααα·α ααΊααΆααααα»ααα½αααααααααΌα
ααααΈ!..β ααΎαααΆαα
αΆααααααΎααααααΎαααααααααααα αα
ααααααααΎαα
αααααα½ααα·αα·ααααααΆαααΈαααα
ααα½α 10α ααΆααααααΆαααααα»ααα
αααα»αααΆααααααΉαααααααΎα ααααααα αΆαα½αα
ααα½αααΆαααΎαα‘αΎαααααα·ααΆααααααααΆαα ααα»αααααααα»αααα‘α»αααααΈααΆαααΈ XNUMX ααΎαααα½αααΆααα½ααααααααΆααααΆααααα½ααα·αα·ααα - αααααΆαααααααααααααααΎαααΆαααα»ααααααααααααΆα
ααααΆαααΆαααααααααΆααΆαααΆαα»αααΆαα
ααΆααα’αααααααααΌαααΆααααααα ααα αΌααα·ααααααααΆαααα ααα αα·ααααααα ααΆααα·ααα
α’αααΈαααααΎααααα½ααα·αα·ααα α’αααΈαααααΎαα’αΆα
αααααααΆαααΆα ααΊααΆα’αααΈαααααΎαααααΎααααΆααα ααΎαααααααΎ PostgreSQL ααΆαααααααααα»ααα·αααααααααααα α αΎαααααΆαα’αααΈααΏαααΆααααα»αααΆα "α
αΆαα" αα·αααααααα
αααα»αααΆααΆαααααα·ααααα·αααααααα COPY
αα
α‘αΎαα
ααα»ααααααααΆαααα "α αΆαα" αα·αααααααα·ααααααΆαα αα αααα·ααααΆααααααΎαααα αααααΆαααααααα·αααΎα’αααααΆαααααΎαααα αα 50k αααα»ααα½ααα·ααΆααΈαα ααΎαααΆαααΈααααα½ααα αααααΆααΉααααααΎααααααα ααα» 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 write ops α αΎαααΆααα·ααΈααα ααΎαααΆαααΆαααααααααΆααααα»α 4 ααα α₯α‘αΌαααααα½αααααΆαααΈαα ααααΎα 6 ααααααααααΆαααααΌαααααΆααα·αααααααααααΆααααα½ααα·αα·αααααααΈ - αα αΌαααα 100MB/s α α αΎαα₯α‘αΌααααααΎααααααΆαα»ααααααα ααα»αααααΆαααααααα 3 ααα α»αααααααααα»αααα·ααΆααααα αα 10-15TB ααααααααΉαααΆαααα»αααααααααααΉααα XNUMX ααα’αααα’αα·ααααααααΆαα½αααΉαα’αΆα αααααααΆααααα αΆααΆαα½αα
ααΎααααααΈαααα αΆ
ααα»ααααααΆααααααΌααα·ααααααααΆααα’αααααααΊααα’ ααΆααααααααα ααΆααααααα ααα»αααααα·ααααααααααΆαααα - α αΆαααΆα αααααΌααααα αααααΆαααααΆαααααααΊααΆαααααΆααααααααααΆααΆααααΆααααα»ααα½αααααα
ααα»ααααβααα»αααβααΆααααΆαβααΆααβααΊβαα·αα’αΆα
βαααααααααβααΆαβαα ααααΌαβααΎαβααααΌαααβααααΎ ββααΌα
βααΆαβαααβββα α αΎαααΆααααΌα α’αααααααΌααααααα
α
α·αααααΈαααααααα’αααααΉααααα
αααΏα "ααΌα
ααΆα" αααα
ααΎαααΆααααααα ααα»α ααααΆααα ααα½αααΈα
- ααααΆ ααΆαααααΎααααΎαααα
αααααΊααΈαααααα·ααΈα’αααΈαααααΆααΆα "ααααα"α α ααα»α αααααΆααααα ααααα αααααα·ααΈααΆαααααα ααααααααααΌααΆαα α¬α’αααΈααααααααα - αααααΆααααααααα ααΆβααΆαβααΎαα‘αΎα
αα ααΎ server ααΆααααΆαααα½αααΆ? αααααΆαααααααα·αααΎα’αααααΆααααΆαααΈαααααΆα αααΎααα ααααααααααα·ααΈαα½α α αΎαααααΆααααααα½α "αααα½α" (αααααΆααα "ααΆαααα½α" "α’αααα αα αΆαααα ααααΆα" αααα αΆαα½αα ααα½ααααααααα) αααα’αααααααΌααααααααΆαααΆαα·αααααΎαααΆαααΈαααα - αααα αααα αΆααΆααααα αΆααααα½αααΆααΆααααααααΆααα½αα¬ααααααααα
ααΎααααΈαααααΈ "α’αααααΆ" ααααΎααααΎααααΎα ααΎαααααΎα§ααααααααααααΆα - αααααα’ααααααααα½αα SET application_name = '{bl-host}:{bl-method}';
- ααΎαααααΎααααααααααααΆαααΈααααααα·ααααΆα’αΆααΈααααααααααααΎααΉαααααα αα·αααααααααα·ααΈααΆααααα α¬αααααα·ααΈααααααα½α
ααααΎαααΆα
αααααΆααααΈααΎαααΆαααααααΆαα "ααα
αΆαα" ααααααΎααα ααΆααααΌαααα
αααα
ααΆαααααααα ααα» - αααααΆααααΆαααα ααΎαααααααα
ααΆααααααααα’ααα log_line_prefix = ' %m [%p:%v] [%d] %r %a'
. αααααΆααα’ααααααα
αΆααα’αΆαααααααααα ααααΆ
- Π²ΡΠ΅ΠΌΡ
- ααααΎαααΆα αα·αααΆααααααα’ααααααααΆαααααα·ααααα·ααΆα
- αααααααΌαααααΆααα·αααααα
- IP ααααα’ααααααααΆαααααΎααααΎαααα
- αα·αααααααα·ααΈααΆααααα
αααααΆααααααΎαααΆαααΉαααΆααΆαα·ααα½αα±ααα
αΆααα’αΆααααααααααΆααααΆαααααα»αααΆαααΎαααΆαααΆααααΆαααααααααΆααααααΎαα½ααααΆααααΆαααΈααααααααααααΆα ααΆαα·αααΉαααΆαααααααα’αααααΆαααααΆαααΆαααααααααα·ααΈαα½αααααΎαααΆαααααΎαααααΆαα
ααΈααα αα·αααΈαααα ααα»αααααααααΈααΆααΆααΌα
ααααΆααααα ααΌααααα‘ααααΎαααααααααΆαααΈαααααΆαααααα
ααΌα αααααααααΊααΆααΆαααΆαα "αααΆαααΈααααα½α - αα½ααααα" ααΆαααααα ααΆαααααααααΆαααααααΆααααΎααααααΆααααΆααα·ααΆαααΆαα½αα
ααααααα·ααΆαααααΌαααΊααΌα ααααΆα "ααααΌ" - ααααααααααααααααΆααααα αΆααααααΆα αααααααΆααααΌα ααΆαααααα ααΆαααΆααααΈααΈαααΊααΆαααααα·ααΈ α¬αα·ααΈααΆααααα α αΎαααΆαααΆααααΈααΈααΊααΆααααΆαααααααΆαααΆααααΆααααααααααΆαα±ααααΎαααΆααααα αΆα
αα βαααβαααβααΎαβααααΆααααΈβααΈβα§ααΆα αααβααΆααααΆααβαα βααααΌ ααΎαβααα½αβααΆαβα’αααααααααααβααΈαβαααα»αβαααβααβαα½αα
- ααΆαααΆαααααααα
αααΎαααα
ααα½αααααα»αααααΆααααΆααα·ααΆα
ααΎαααααΌααα·ααΆααααα αΆ αα·ααααααααααα½α α¬αααααΆαααΆααααΆαααα ααα»αααααααααααΌααΆαααα·αα - αααααΆαααααααααΆ
αααααΊαααααΆααααααα "ααΆααα·α" αα αααα»ααααααααΆααααΆαααα½α α’αααα’αΆα αααα αΆαααΌαααΆααααααα½ααααα αααααααα α αΎααα ααΈαααα’αααα’αΆα αααααΆαααΆααααα·αααΎα’αααααΆαααααΌαα½αα ααα½ααααααΎαα‘αΎαα§ααΆα ααα αααααααα»ααα½ααααα ααα»ααααααΆαα½αααααΎαα‘αΎααααααααα»ααα½ααααα α’ααααα½ααααα·αα’αααΈα’αααΈααααα»α - ααΎα’αααααΆααΆα’ααααααα α αΎαα ααα»α’αααΈ αααα ααααΆααΆαα½ααααα ααΈαααα αα·ααα½α αααααΊααΆαα·ααΈααΆαααααααααΆααα·ααΆαααααα·ααααααΆααα ααΆαααααααα
αα·ααΈααΆαααααααααα
ααααααααΊααα’ααααΎααΌα
ααΆαααααααΎααααααα
ααααΈαααααΆαα ααΎααααΌααααααααΎαα‘αΎαααα»ααααΆααα ααα»α αα·ααααααααααααα»ααααΆα αα·ααααααααααΌαααΆαα’αΆαααΈααΆα αα·αα
ααα½αααα»ααααΆαααΈα’αααα
αα
αΆα...
ααΈααααα ααΆα§ααΆα ααα α’αααααααααααα·ααΆααααααΆαααααΆαααΈα ααΎα - α’αααΈαα½ααααα»αα αΆααααααΎαα’αΆαα αααΎαααααα ααΎααΆαα ααΆααα ααΎαααΆαααΈααααα·αα’αΆα αααααααααααΆααΆααα - ααΎα’αααααΆα’αΆαααΈααΆ?
α αΎαβα’αααβα’αΆα
βααααααβααΆαβαα½αβααβααΆβαα½α α αΎαβαααααα
βα
α·αααβααΆβααΎβα’αααβααΉαβαααβααααΆαβα’αααΈβα₯α‘αΌαβααα - ααααα»αβαα
βααΎ processor α¬ disk α¬βα
ααα½αβααααΎβααα»α... ααΎαβααΆαβααααααβααΆ αααα‘ααβααΎα "ααααΌα" αααβααΆαβαα½ααα»αβααΆ α αΎα ααΆαααΆααα
ααααααααααΈαααααααα·ααΈα
α αΎαααααΆααα’αααα’αΆα
ααΎααααααα·ααΈαααααααααΆαααααααΆααααααΆαα½αααααΌααΌα
ααααΆααΈααααΎααΌα
ααΆ SELECT * FROM users WHERE login = 'Vasya'
. Frontend, backend, processing... α αΎαα’ααααααααααΆα ααα»α’αααΈααΆαααΆααααΎαααΆαααΉαα’αΆαα’αααααααΎααααΆαα ααααα·αααΎααΆαααα·αααΆααααααΆαα½αααΆααα
αα·ααΈαααα»αααΊααααΌαααΎαααααΆααααΈαααααα·ααΈααΆααΎααΆααααΎα’αααΈα α§ααΆα ααα αααααααΆααα»αααΊααα ααα ααα α αΎαααααααααααα»ααα½ααααα (αααααΆαααααααααΆαα½α)α α αΎααααα½αααΎαα‘αΎαααααΆααα ααΆα αΆααααΌα ααΆαα·ααααααΆααΆαααΆααααα Frontend ααΎααααΈααααΎα’αααΈαα½ααααααααα»ααα½ααααα...
αα½ααααααααααα ααΎαααΉαααΆααΎαααααααΆααααααΌααααα»α αααα·αα·ααΆαααααΆαααααααΆα. ααΎαααΆα
ααααα‘ααααΈαααααΆαααααααΆααααΆααααααααααααΎα’αααΈαα½αααΆαα½αααΉααα·ααααααααααΆααΆαααααααα½αα―α (α’αΆα/ααααααα½αααΆααΆααα·αα·ααααα¬α’αα)α ααΆααα·ααα
αα·αααααΆααααα½αααα»ααααααααααααΌαααΆαααααααααΆαααααα
ααΉαααΌαααΆααα»α - ααΎααααΆαααααααΆαααααΎαααα»ααααΆααααααααααΆ?αα·αα
ααα½αααα»ααααΆαααααΌαααΆααααααα
αα (αα½ααααααααΌαααΆαααα
αααααααααα)α
α’ααααα·αααΆααα·αα·αααααααααααα ααΎα αΆααα α’αααααααΎααααΎαα ααΆ ααΆα ααααΆααααααααααα ααααΆααα αΌααα αααα»α Seq Scan... α’αααααΆαααααα ααααΆαααααααααααΆααΆααα’αα ααΎαααααααα½αα α ααα»α’αααΈααΆαααΆα’αααααααΌαααΆααααααααααΆαααααΆααααα 100 ααΆααααα»ααα½ααααα? ααΎααΆαα·ααααααΎαααΆααααα»αααΆααααα αΌαααααααααααα?
αααααΆααα·ααΆαααααΆαααααααΆαααΆααα’αααααααααΆαα ααΎαααΆαααΉαααΆααΆααα
ααΆααααααααααααααΆαα½αα
ααα½ααα
αααα»ααααααΆααααααααααΆααΎααα
αα½αα±ααααααααα α αΎαααΆααΆααΆαααα’αααα»αααΆαααααΆααα’αααα’αα·ααααααααΆ "αα·αααα’αΎα αα
ααΈαααα’αααα’αΆαααααΌαααααα·αα·αααα αααααΆαααααααααα α αΎααααααΆααααααΆααα
αα" - ααΆαααα½αααΆααααααααααΆαα½αα
ααα»ααααααααααααΆαααααααααααα½ααααα ααααΆααΆααα½ααααααααααΌαααα "αααααα±αααααα»αααΌαααΆααααααΆαα·αα α»αααααααααααΆαα Vasya αααααΆααΆαααα·α ααααααααααΆα " α αΎαααααα·αααΎα’ααααα·αααΆααα·αα·ααααααΆαααΆαααα·α αααα α¬αα·αααΆαααΆαααα·α αααααα αααα»ααα·αα·αααααααα’αααααΆαααααΎααααα αααααα αΆαααΎ "αα»ααα½α " ααΌα ααααΆα
ααα»ααααααΎαααΉαααΆαααααΊααΆ "αα»ααα½α " ααΌα ααααα ααα»α’αααΈαα·αααααΆααα’αααα’αα·ααααααααααΆααα’αααΈα’αααΈαααααΆαααα½αααααΎα ααΌα ααααα αΎα αα αααααΎααααααΆαα₯α‘αΌαααα α’αααα’αα·ααααααααααααΎαααΎαααΌαααΆααααααααααα’αΆαααΆαα½αααΉααααααΉαααααΆαα ααααα½αααααααΆααααΆααααααΆααααΆ βα’αααααΆααααα αΆαα ααΈααα αα·αααΈααα ααα»αααααα½αααααααΌαααΆααααααααΆαααΆααα·ααΈαααα αΎαβα
ααΆααααααααα·ααΆααααααα·ααααααααααααΌαααΆαααΎααααΈαααααααΆααααα αΆαα ααΎαααααΌα αα·αα₯α‘αΌααααααΆαααααΆααα α»ααααΆαααααΆααα αααααΊααΆααααααα§ααααααααααΎαααΆαα
ααααα: www.habr.com