рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рдЖрдлреНрдиреЛ DBA рд╡рд╛ рд╡реНрдпрд╡рд╕рд╛рдп рдорд╛рд▓рд┐рдХрд▓реЗ PostgreSQL рд╕рд▓реНрд▓рд╛рд╣рдХрд╛рд░рд▓рд╛рдИ рд╕реЛрдзреНрдиреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдкреНрд░рд╢реНрди рд▓рдЧрднрдЧ рд╕рдзреИрдВ рдЙрд╕реНрддреИ рд╣реБрдиреНрдЫ: "рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдХреНрд╡реЗрд░реАрд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрди рдХрд┐рди рдпрддрд┐ рд▓рд╛рдореЛ рд╕рдордп рд▓рд╛рдЧреНрдЫ?"
рдкрд░рдореНрдкрд░рд╛рдЧрдд рдХрд╛рд░рдгрд╣рд░реВрдХреЛ рд╕реЗрдЯ:
- рдЕрдХреБрд╢рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдердо
рдЬрдм рддрдкрд╛рдИрдВ рджрд╢реМрдВ рд╣рдЬрд╛рд░ рд░реЗрдХрд░реНрдбрд╣рд░реВрдорд╛ рдзреЗрд░реИ CTE рдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ - рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рддрдереНрдпрд╛рдЩреНрдХ
рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд░рд╣реЗрдХреЛ рдбреЗрдЯрд╛рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рддрд░рдг рдкрд╣рд┐рд▓реЗ рдиреИ ANALYZE рджреНрд╡рд╛рд░рд╛ рдкрдЫрд┐рд▓реНрд▓реЛ рдкрдЯрдХ рд╕рдЩреНрдХрд▓рди рдЧрд░рд┐рдПрдХреЛ рднрдиреНрджрд╛ рдзреЗрд░реИ рдлрд░рдХ рдЫ рднрдиреЗ - рд╕реНрд░реЛрддрд╣рд░реВрдорд╛ "рдкреНрд▓рдЧ"
рд░ рдЕрдм рдкрд░реНрдпрд╛рдкреНрдд рд╕рдорд░реНрдкрд┐рдд CPU рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рдкрд╛рд╡рд░ рдЫреИрди, рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдореЛрд░реА рдирд┐рд░рдиреНрддрд░ рдкрдореНрдк рднрдЗрд░рд╣реЗрдХреЛ рдЫ, рд╡рд╛ рдбрд┐рд╕реНрдХрд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд╕рдмреИ "рдЪрд╛рд╣рдирд╛рд╣рд░реВ" рдкреВрд░рд╛ рдЧрд░реНрди рд╕рдХреНрджреИрдиред - рдЕрд╡рд░реБрджреНрдз рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдмрд╛рдЯ
рд░ рдпрджрд┐ рдмреНрд▓рдХрд┐рдЩрд▓рд╛рдИ рд╕рдорд╛рддреНрди рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЧрд╛рд╣реНрд░реЛ рдЫ рднрдиреЗ, рдЕрд░реВ рд╕рдмреИ рдХреБрд░рд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛, рдЬреБрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдЕрд╡рд╢реНрдп рдкрдирд┐, рддреБрд░реБрдиреНрддреИ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рд╣реБрдиреНрдЫ (рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдмрдлрд░рд╣рд░реВ) ...) рд╡рд╛ .
рддрд░, рд╕реЛрд╣реА рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдЭреИрдВ,
"рдпреЛрдЬрдирд╛ рдмреБрдЭреНрдиреБ рдПрдЙрдЯрд╛ рдХрд▓рд╛ рд╣реЛ, рд░ рдпрд╕рдорд╛ рдирд┐рдкреБрдг рд╣реБрди рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛рдорд╛ рдЕрдиреБрднрд╡ рдЪрд╛рд╣рд┐рдиреНрдЫ, ..."
рддрд░ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╣реА рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ рддрдкрд╛рдИрдВ рдпреЛ рдмрд┐рдирд╛ рдкрдирд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ!
рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ? рдпреЛ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐:
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"рддрд░ рд╕реБрд░реБрдмрд╛рдЯ рдпреЛрдЬрдирд╛ рдкрдвреНрдиреБ рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рд░ рдЕрдиреМрдареЛ рдЫ:
- рдиреЛрдбрдорд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реБрдиреНрдЫ рдЙрдкрд╡реГрдХреНрд╖ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдпреЛрдЧрдлрд▓
рдЕрд░реНрдерд╛рддреН, рдХреБрдиреИ рдЦрд╛рд╕ рдиреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдХрддрд┐ рд╕рдордп рд▓рд╛рдЧреНрдпреЛ, рд╡рд╛ рдбрд┐рд╕реНрдХрдмрд╛рдЯ рддрд╛рд▓рд┐рдХрд╛рдмрд╛рдЯ рдпреЛ рдкрдарди рдХрддрд┐ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рднрдпреЛ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рдПрдЙрдЯрд╛рд▓рд╛рдИ рдЕрд░реНрдХреЛрдмрд╛рдЯ рдШрдЯрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред - рдиреЛрдб рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдЫ рд▓реВрдкрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдЧреБрдгрди рдЧрд░реНрдиреБрд╣реЛрд╕реН
рд╣реЛ, рдШрдЯрд╛рдЙ "рддрдкрд╛рдИрдВрдХреЛ рдЯрд╛рдЙрдХреЛрдорд╛" рдЧрд░реНрди рд╕рдмреИрднрдиреНрджрд╛ рдЧрд╛рд╣реНрд░реЛ рдЕрдкрд░реЗрд╢рди рд╣реЛрдЗрди - рдЖрдЦрд┐рд░, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп рдиреЛрдбрдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рдФрд╕рддрдХреЛ рд░реВрдкрдорд╛ рд╕рдВрдХреЗрдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рддреНрдпрд╣рд╛рдБ рд╕рдпреМрдВ рд╣реБрди рд╕рдХреНрдЫрдиреНред - рдЦреИрд░, рдпреА рд╕рдмреИ рдорд┐рд▓реЗрд░ рд╣рд╛рдореАрд▓рд╛рдИ рдореБрдЦреНрдп рдкреНрд░рд╢реНрдирдХреЛ рдЬрд╡рд╛рдл рджрд┐рдирдмрд╛рдЯ рд░реЛрдХреНрдЫ - рддреНрдпрд╕реЛ рднрдП рдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдХрдордЬреЛрд░ рд▓рд┐рдЩреНрдХ?
рдЬрдм рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░рд╛ рд╕рдпреМрдВ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдпреЛ рд╕рдмреИ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдпреМрдВ, рд╣рд╛рдореАрд▓реЗ рдорд╣рд╕реБрд╕ рдЧрд░реНрдпреМрдВ рдХрд┐ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рдпреЛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

рдЕрдирд┐ рдпрд╕рдХреЛ рдЕрд░реНрде рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреНрдЫ...
рдЙрдкрдХрд░рдг
рдпрд╕рдорд╛, рд╣рд╛рдореАрд▓реЗ рдпреЛрдЬрдирд╛ рд░ рдЕрдиреБрд░реЛрдзрдХреЛ рдЖрдзрд╛рд░рдорд╛ "рдХрд╕рд▓рд╛рдИ рджреЛрд╖ рджрд┐рдиреЗ рд░ рдХреЗ рдЧрд░реНрдиреЗ" рднрдиреЗрд░ рдмреБрдЭреНрди рдорджреНрджрдд рдЧрд░реНрдиреЗ рд╕рдмреИ рдкреНрд░рдореБрдЦ рдореЗрдХрд╛рдирд┐рдХрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗрдХрд╛ рдЫреМрдВред рд░, рдЕрд╡рд╢реНрдп рдкрдирд┐, рд╣рд╛рдореАрд▓реЗ рд╕рдореБрджрд╛рдпрд╕рдБрдЧ рд╣рд╛рдореНрд░реЛ рдХреЗрд╣реА рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдЧрд░реЗрдХрд╛ рдЫреМрдВред
рднреЗрдЯреНрдиреБрд╣реЛрд╕реН рд░ рдЖрдирдиреНрдж рд▓рд┐рдиреБрд╣реЛрд╕реН -
рдпреЛрдЬрдирд╛рд╣рд░реВрдХреЛ рджреГрд╢реНрдпрддрд╛
рдХреЗ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗ рдпреЛрдЬрдирд╛ рдмреБрдЭреНрди рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреНрдЫ?
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
рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╣реЛрдЗрдиред
рддрд░ рдпрд╕реНрддреИ рд╣реЛ, рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдкрдорд╛, рдЬрдм рдкреНрд░рдореБрдЦ рд╕реВрдЪрдХрд╣рд░реВ рдЕрд▓рдЧ рдЧрд░рд┐рдиреНрдЫ, рдпреЛ рдзреЗрд░реИ рд╕реНрдкрд╖реНрдЯ рд╣реБрдиреНрдЫ:

рддрд░ рдпрджрд┐ рдпреЛрдЬрдирд╛ рдЕрдЭ рдЬрдЯрд┐рд▓ рдЫ рднрдиреЗ, рдорджреНрджрдд рдЖрдЙрдиреЗрдЫ рд╕рдордп рд╡рд┐рддрд░рдг рдкрд╛рдЗрдЪрд╛рд░реНрдЯ рдиреЛрдбрд╣рд░реВ рджреНрд╡рд╛рд░рд╛:

рдЦреИрд░, рд╕рдмреИрднрдиреНрджрд╛ рдХрдард┐рди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рдК рдЙрджреНрдзрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рд╣рддрд╛рд░рд┐рдиреНрдЫред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░:

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЧреИрд░-рддреБрдЪреНрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВ рдЫрдиреН рдЬрд╣рд╛рдБ рдпреЛрдЬрдирд╛рдХреЛ рдПрдХ рднрдиреНрджрд╛ рдмрдвреА рддрдереНрдпрд╛рддреНрдордХ рдЬрд░рд╛ рд╣реБрди рд╕рдХреНрдЫ:


рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕рдВрдХреЗрддрд╣рд░реВ
рдареАрдХ рдЫ, рдпрджрд┐ рдпреЛрдЬрдирд╛рдХреЛ рд╕рдореНрдкреВрд░реНрдг рд╕рдВрд░рдЪрдирд╛ рд░ рдпрд╕рдХрд╛ рдХрдордЬреЛрд░реАрд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдкрд╖реНрдЯ рд░ рджреЗрдЦрд┐рдиреЗ рдЧрд░реА рд░рд╛рдЦрд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдХрд┐рди рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓рд╛рдИ рддреА рдХреБрд░рд╛рд╣рд░реВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдирдЧрд░реНрдиреЗ рд░ рд╕рд░рд▓ рдЕрдВрдЧреНрд░реЗрдЬреАрдорд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирдЧрд░реНрдиреЗ?
рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдпреА рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ рдордзреНрдпреЗ рджреБрдИ рджрд░реНрдЬрди рд╕рдЩреНрдХрд▓рди рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВред
рдкрдЩреНрдХреНрддрд┐-рджрд░-рдкрдЩреНрдХреНрддрд┐ рдХреНрд╡реЗрд░реА рдкреНрд░реЛрдлрд╛рдЗрд▓рд░
рдЕрдм, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░рд┐рдБрджреИ рдЧрд░реЗрдХреЛ рдпреЛрдЬрдирд╛рдХреЛ рдореВрд▓ рдкреНрд░рд╢реНрдирд▓рд╛рдИ рдУрднрд░рд▓реЗ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдкрд░реЗрдЯрд░рдорд╛ рдХрддрд┐ рд╕рдордп рдЦрд░реНрдЪ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рднрдиреЗрд░ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫтАФрдпрд╕рд░реА:

тАжрд╡рд╛ рдпреЛ рдЬрд╕реНрддреИ рдкрдирд┐:

рдХреНрд╡реЗрд░реАрдорд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрджреИ
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд▓рдЧрдХреЛ DETAIL рд▓рд╛рдЗрдирдмрд╛рдЯ рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдХреНрд╡реЗрд░реА рдорд╛рддреНрд░ рд╣реЛрдЗрди рддрд░ рдпрд╕рдХреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрдирд┐ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпрд╕рд▓рд╛рдИ рдердк рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
- рдХреНрд╡реЗрд░реАрдорд╛ рдорд╛рдирд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдХреЛ рд╕рд╛рде
рдЖрдлреНрдиреИ рдЖрдзрд╛рд░рдорд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░ рдердк рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐SELECT 'const', 'param'::text; - PREPARE/EXECUTE рдорд╛рд░реНрдлрдд рдорд╛рдирд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдХреЛ рд╕рд╛рде
рдкреНрдпрд╛рд░рд╛рдореЗрдЯреНрд░рд┐рдХ рднрд╛рдЧрд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреЗ рдмреЗрд▓рд╛рдорд╛ рдЕрдиреБрд╕реВрдЪрдХрдХреЛ рдХрд╛рдо рдЕрдиреБрдХрд░рдг рдЧрд░реНрди - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╡рд┐рднрд╛рдЬрди рдЧрд░рд┐рдПрдХрд╛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдХрд╛рдо рдЧрд░реНрджрд╛DEALLOCATE ALL; PREPARE q(text) AS SELECT 'const', $1::text; EXECUTE q('param'::text);
рдпреЛрдЬрдирд╛рд╣рд░реВрдХреЛ рдЕрднрд┐рд▓реЗрдЦ
рдЯрд╛рдБрд╕реНрдиреБрд╣реЛрд╕реН, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВрд╕рдБрдЧ рд╕рд╛рдЭрд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН! рддрдкрд╛рдИрдВрдХрд╛ рдпреЛрдЬрдирд╛рд╣рд░реВ рдЕрднрд┐рд▓реЗрдЦрдорд╛ рд░рд╣рдиреЗрдЫрдиреН, рд░ рддрдкрд╛рдИрдВ рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдлрд░реНрдХрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
рддрд░ рдпрджрд┐ рддрдкрд╛рдИрдВ рдЖрдлреНрдиреЛ рдпреЛрдЬрдирд╛ рдЕрд░реВрд▓реЗ рдирджреЗрдЦреВрдиреН рднрдиреНрдиреЗ рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, "рдЕрднрд┐рд▓реЗрдЦрдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирдЧрд░реНрдиреБрд╣реЛрд╕реН" рдмрдХреНрд╕ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реНред
рдпрд╕рдкрдЫрд┐рдХрд╛ рд▓реЗрдЦрд╣рд░реВрдорд╛, рдо рдпреЛрдЬрдирд╛рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрджрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗ рдЪреБрдиреМрддреА рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреЗрдЫреБред
рд╕реНрд░реЛрдд: www.habr.com
