ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² MySQL
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
MySQL β Π²Π΅ΡΡΠΌΠ° ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΡΠ°Π²Π½Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π² ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ /Π·Π°ΠΏΡΠΎΡΠ°Ρ . Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠ°Π·Π²ΠΈΡΡΠΉ (Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅Π΄ΠΎΡΠ°Π·Π²ΠΈΡΡΠΉ) ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ, ΡΡΠΎ Π½Π° ΡΠ»ΠΎΠΆΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠ°Ρ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°Π΅Ρ Π²ΡΠΈΡΡΡΡ.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΊΡΡΠ³ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Β«ΡΠΈΡΠΎΠΊΠΈΠΌΠΈΒ» ΠΈ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ Π΄ΠΎ 10m Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π΄ΠΎ 20Gb, Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Π½ΠΈΠΌ. ΠΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΉ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΏΠΎ 100 Π±Π°ΠΉΡ, ΠΈ ΠΏΡΡΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Π½Π΅ΠΉ β ΡΡΠΎ ΡΡΠ°ΡΡΡ Π½Π΅ Π΄Π»Ρ ΠΠ°Ρ. NB: Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π΄Π²ΠΈΠΆΠΎΠΊ MySQL innodb/percona β Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ MySQL.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½ΡΠΆΠ½ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΈ/ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΎΠ±ΡΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² (select_type=simple), Π±Π΅Π· Π΄ΠΆΠΎΠΉΠ½ΠΎΠ², ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ.
ΠΡΠ±ΡΠΎΡΠΈΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ Π΄Π»Ρ ΠΎΡΠ΅Π½Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°Π±Π»ΠΈΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΡΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ type=all (ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ) Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² β ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Ρ 40-ΠΊΠ° Π·Π°ΠΏΠΈΡΡΠΌΠΈ. MySQL ΠΈΠΌΠ΅Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² (index merge), Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π±Π΅Π· order by. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΡΠΌΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΡΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ index merge β ΡΠ»ΡΡΠ°ΠΈ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ Ρ OR.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅: ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΡΡΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌ Ρ explain. Π§Π°ΡΡΠΎ ΡΠ°ΠΌ Π·Π°ΠΏΡΠΎΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡ.
ΠΠΎΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ β ΠΎΡ ΡΠΎΠ»ΡΡΡΡ ΡΠ°Π±Π»ΠΈΡ ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌ
ΠΡΠ°ΠΊ Π·Π°Π΄Π°ΡΠ°: ΠΏΡΡΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ, Π½ΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°ΡΡΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΊ using index, ΠΊΠ°ΠΊ ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠΌΡ Π²ΡΠ±ΠΎΡΡ.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΡΠ°Π·Π½ΠΈΡΡ Π² ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ°Π·Π½ΡΡ Π±Π°Π·Π°Ρ . ΠΡΠ»ΠΈ PostgreSQL/Oracle ΠΊΠ΅ΡΠΈΡΡΡΡ ΠΏΠ»Π°Π½Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² (ΠΊΠ°ΠΊ Π±Ρ prepare for some timeout), ΡΠΎ MySQL ΠΏΡΠΎΡΡΠΎ ΠΊΠ΅ΡΠΈΡΡΠ΅Ρ Π‘Π’Π ΠΠΠ£ Π·Π°ΠΏΡΠΎΡΠ° (Π²ΠΊΠ»ΡΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²) ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ°. Π’ΠΎ Π΅ΡΡΡ Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· β ΡΠΎ, Π΅ΡΠ»ΠΈ DDD Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΡ ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° AAA Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ (Π² ΡΠΌΡΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ), ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²Π·ΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΊΠ΅ΡΠ°. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΏΠΎΡΠ½ΠΎΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅.
Spark SQL. ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ± ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ, Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ Ρ Π΄ΠΎΡΠ΅Π» Π΄ΠΎ ΠΆΠΈΠ·Π½ΠΈ ΡΠ°ΠΊΠΎΠΉ.
ΠΠΎ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΡΡΡΠ΅ΡΠΈΡΡΡΡ Ρ Big Data ΠΈ Spark, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΌΠ½Π΅ Π΄ΠΎΠ²Π΅Π»ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠ°ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ SQL Π·Π°ΠΏΡΠΎΡΡ, ΡΠ½Π°ΡΠ°Π»Π° Π΄Π»Ρ MSSQL, ΠΏΠΎΡΠΎΠΌ Π΄Π»Ρ Oracle, ΠΈ Π²ΠΎΡ ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ ΡΠΎ SparkSQL.
Π Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π‘Π£ΠΠ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Ρ ΠΎΡΠΎΡΠΈΡ ΠΊΠ½ΠΈΠ³, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈ Β«ΡΡΡΠΊΠΈΒ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΡΡΡΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° Π·Π°ΠΏΡΠΎΡΠ°, ΡΠΎ Π΄Π»Ρ Spark ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΊΠ½ΠΈΠ³ Ρ Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π». ΠΠ° Π³Π»Π°Π·Π° ΠΏΠΎΠΏΠ°Π΄Π°Π»ΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ°ΡΡΠΈ ΠΈ Π½Π°Π±ΠΎΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ, ΠΏΡΠΈΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ΅ΡΠ΅Π· RDD/Dataset API, Π° Π½Π΅ ΡΠΈΡΡΠΎΠΌΡ SQL. ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠ°Π»ΠΎΠ½Π½ΡΡ ΠΊΠ½ΠΈΠ³ Π½Π° ΡΠ΅ΠΌΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ SQL ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ½ΠΈΠ³Π° ΠΠΆ. ΠΡΡΠΈΡ Β«Oracle. ΠΡΠ½ΠΎΠ²Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΒ». Π§ΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎ Π³Π»ΡΠ±ΠΈΠ½Π΅ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΊΠΈ Ρ ΠΈ ΠΈΡΠΊΠ°Π». ΠΠΎΡΠ΅ΠΌΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π» ΠΈΠΌΠ΅Π½Π½ΠΎ SparkSQL, Π° Π½Π΅ API, Π»Π΅ΠΆΠ°ΡΠΈΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π΅? Π’ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ Ρ ΡΠ°Π±ΠΎΡΠ°Ρ.
ΠΠ»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠΎΠ² Π½Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ , Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»ΠΎΠΉ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈ ΡΠ°ΡΡΡ Π²ΠΈΡΡΠΈΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Hadoop, Π° ΠΈΡΠΎΠ³ΠΎΠ²ΡΠ΅ Π²ΠΈΡΡΠΈΠ½Ρ β Π² Oracle. ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΎΠ±ΡΠΈΡΠ½ΡΠΉ ΡΠ»ΠΎΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° Spark. ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ETL, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡ Ρ ΡΠΎΠ½ΠΊΠΎΡΡΡΠΌΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Big Data, Π½ΠΎ Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°ΠΊΠΎΠΌΡΡ Ρ SQL ΠΈ ETL ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ, Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠΈΠΉ ΠΏΠΎ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠΎΡΠΈΠ΅ ETL ΡΡΠ΅Π΄ΡΡΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Informatica, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ETL ΠΏΡΠΎΡΠ΅ΡΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Spark. Π ΡΠΈΠ»Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ SparkSQL Π·Π°ΠΏΡΠΎΡΡ.
ΠΠΎΡ Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΈΡΡΠΎΡΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π²ΠΈΠ΄Π° Β«Π ΠΏΠΎΡΠ΅ΠΌΡ Π·Π°ΠΏΡΠΎΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ/ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ/ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² Oracle?Β». ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΎΠΊΠ°Π·Π°Π»ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ: Β«ΠΠΎΡΠ΅ΠΌΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?Β». Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π‘Π£ΠΠ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Ρ ΡΠ°Π±ΠΎΡΠ°Π» Π΄ΠΎ ΡΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π»Π΅Π·ΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ²Π΅Ρ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ.
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠΏΡΡΠ΅Π½ΠΈΡ
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Spark 2.3.0.
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π·Π½Π°ΠΊΠΎΠΌ Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ Spark, ΠΈ ΠΎΠ±ΡΠΈΠΌΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π‘Π£ΠΠ. ΠΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, ΡΡΠ°Π·Π° Β«ΠΏΠ»Π°Π½ Π·Π°ΠΏΡΠΎΡΠ°Β» ΡΠΎΡΠ½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΡ.
Π’Π°ΠΊΠΆΠ΅ Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΠΏΡΡΠ°Π΅ΡΡΡ Π½Π΅ ΡΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠ΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° Spark Π½Π° ΡΡΡΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ Π²Π΅ΡΠ΅ΠΉ, Π²Π΅ΡΡΠΌΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ°, Π½ΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΡΡΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡΡΠΎ ΠΊΡΠ°ΡΠΊΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΡΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ.
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ
ΠΠ°ΡΠ½Π΅ΠΌ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, ΡΡΠΎΠ±Ρ ΠΈΠ·ΡΡΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ°Π΄ΠΈΠΈ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ° Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΡΠ°Π·Π±ΠΎΡ SQL, ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠ»Π°Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° β Spark Catalyst.
Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΠ»Π°Π½Π° Π·Π°ΠΏΡΠΎΡΠ° (df.explain(true)) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ Π²ΡΠ΅ ΡΡΠ°Π΄ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΡΠΎΡ:
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°Π΄ΠΈΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, WholeStageCodegen) Π²ΡΡ ΠΎΠ΄ΡΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ, Π½ΠΎ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ (ΡΠ°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΡΡΠ°Π΄ΠΈΠΈ) ΠΎΠΏΠΈΡΠ°Π½Ρ Π² Mastering Spark Sql.
Π§ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Β«ΠΈΠ·Π½ΡΡΡΠΈΒ» ΠΈ Β«ΡΠ½ΠΈΠ·Ρ Π²Π²Π΅ΡΡ Β», ΡΠΎ Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈ, ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ ΠΊ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π²Π΅ΡΡ Ρ.
ΠΠΈΠ΄Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠΎΠ²:
ΠΠ΅ΡΠ²ΡΠ΅ Π·Π°ΡΠΎΡΠ΅Π½Ρ Π½Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡΠ° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΉ ΠΈΠ· where Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°ΠΏΠ°Ρ , Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠ΅Π΄Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΈ Ρ.Π΄.
CBO ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΡΠΎΠΊ, ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΠΈΡ ΠΏΠΎΠ΄ ΡΠΈΠ»ΡΡΡΡ, ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ Ρ Π΄ΠΈΠ·Π°ΠΉΠ½-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ Π½Π° CBO Π΄Π»Ρ Apache Spark ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ: ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ JIRA Π·Π°Π΄Π°ΡΠ° Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»ΡΠΆΠΈΡΡ ΠΊΠΎΠ΄ Optimizer.scala.
ΠΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ Π²ΡΠ΄Π΅ΡΠΆΠΊΠ° ΠΈΠ· Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ:
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ , ΡΠ°ΠΊ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΎΡΠ΅Π½ΠΊΠΈ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠ°, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ CBO ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ΅ Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ΅ β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ, Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΡΠΎΠ»Π±ΡΠ°Ρ ΡΠ°Π±Π»ΠΈΡ.
ΠΠ»Ρ ΡΠ±ΠΎΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡ SQL ΠΊΠΎΠΌΠ°Π½Π΄ ANALYZE TABLEβ¦ COMPUTE STATISTICS, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π½Π°Π±ΠΎΡ ΡΠ°Π±Π»ΠΈΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, API ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ExternalCatalog, ΡΠΎΡΠ½Π΅Π΅ ΡΠ΅ΡΠ΅Π· HiveExternalCatalog.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ CBO ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½, ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΏΠΎΡ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½ Π½Π° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈ Π½ΡΠ°Π½ΡΠΎΠ² RBO.
ΠΠΈΠ΄Ρ ΠΈ Π²ΡΠ±ΠΎΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ join
ΠΠ° ΡΡΠ°Π΄ΠΈΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ±ΠΎΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ join. ΠΠ° Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² Spark Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ (ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ°ΡΡ Ρ ΠΊΠΎΠ΄Π° Π² SparkStrategies.scala).
Broadcast hash join
ΠΠ°ΠΈΠ»ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΠΎΡΠΎΠ½ join Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ°Π»Π° (ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΡΡΠΈ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ spark.sql.autoBroadcastJoinThreshold Π² SQLConf). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π°Π½Π½Π°Ρ ΡΡΠΎΡΠΎΠ½Π° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π½Π° Π²ΡΠ΅ executor’Ρ, Π³Π΄Π΅ ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ hash join Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ outer join ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ outer ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π΅Π΄ΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π² ΡΠ»ΡΡΠ°Π΅ outer join Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ Π΄Π°Π½Π½ΡΡ .
Sort merge join
Π‘ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ spark.sql.join.preferSortMergeJoin Π΄Π°Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡΠΈ Π΄Π»Ρ join ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠ· ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π°, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ inner join.
Shuffle hash join
Π ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅, Π»ΠΈΠ±ΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π²ΡΠ±ΠΎΡΠ° sort merge join ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Catalyst ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ shuffle hash join. ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅, ΡΡΠΎ Spark Ρ Π²Π°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ hash map Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ (ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΡΠΈΡΠΈΠΉ Π·Π°Π΄Π°Π΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ spark.sql.shuffle.partitions)
BroadcastNestedLoopJoin ΠΈ CartesianProduct
Π ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΊΠ»ΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΠΎ like) ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΠΊΠ»ΡΡΠΈ Π΄Π»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°Π±Π»ΠΈΡ, Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΏ, Π»ΠΈΠ±ΠΎ CartesianProduct.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ Π² join’Π°Ρ
Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ join Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ shuffle ΡΠ°Π±Π»ΠΈΡ ΠΏΠΎ ΠΊΠ»ΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ΄ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ join Π²Π°ΠΆΠ΅Π½ (Π΅ΡΠ»ΠΈ Π±ΡΡΡ Π·Π°Π½ΡΠ΄ΠΎΠΉ, ΡΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ CBO, ΠΈ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° JOIN_REORDER_ENABLED).
ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ shuffle ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°Π±Π»ΠΈΡ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΊΠ»ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ΄ΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ Π·Π°Π±ΡΠ²Π°ΡΡ ΠΏΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ join, Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Broadcast Hash Join.
Π’ΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ:
ΠΠ΄Π΅ΡΡ ΠΌΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ Π΄Π²Π΅ ΡΠ°Π±Π»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, ΠΏΠΎ ΠΏΠΎΠ»Ρ actual_date ΠΈ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ ΡΠ²Π½ΡΠΉ ΡΠΈΠ»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΏΠ°ΡΡΠΈΡΠΈΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ balance.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° Π·Π°ΠΏΡΠΎΡΠ°, ΡΠΈΠ»ΡΡΡ ΠΏΠΎ Π΄Π°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΠΊ customer, ΠΏΡΠΈΡΠ΅ΠΌ Π½Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ΅ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ Π΄ΠΈΡΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΡΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½Π° ΠΏΠ°ΡΡΠΈΡΠΈΡ.
ΠΠΎ ΡΡΠΎΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ΅ inner join Π½Π° left outer, ΠΊΠ°ΠΊ ΡΡΡ ΠΆΠ΅ ΠΎΡΠ²Π°Π»ΠΈΠ²Π°Π΅ΡΡΡ push predicate Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ customer, ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΡΠ΅ΠΊΡΠΎΠΌ.
ΠΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ ΡΠΈΠΏΠΎΠ²
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠ±ΠΎΡΠ° ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΡΠΈΠΏΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π² ΡΡ Π΅ΠΌΠ΅ ΡΠΈΠΏ ΠΏΠΎΠ»Ρ party_type β string.
Π ΡΡΠ°Π²Π½ΠΈΠΌ Π΄Π²Π° ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΠ»Π°Π½Π°, ΠΏΠ΅ΡΠ²ΡΠΉ β ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΏΠΎ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΌΡ ΡΠΈΠΏΡ (Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ int to string), Π²ΡΠΎΡΠΎΠΉ β ΠΊΠΎΠ³Π΄Π° ΠΏΠΎ ΡΠΈΠΏΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΡ Π΅ΠΌΠ΅.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΈ Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π΄Π°ΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ, Π±ΡΠ΄Π΅Ρ ΡΠΈΠ»ΡΡΡ Π½Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ. ΠΡΠΈΠΌΠ΅Ρ:
ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ
ΠΠ½ΠΎΠ³ΠΎ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Β«ΡΡΡΠΊΠ°Ρ Β», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ½ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Catalyst, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ (Π½Π°ΡΡΠΎΡΡΠΈΡ ΠΈ Π±ΡΠ΄ΡΡΠΈΡ ) ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΡΡ ΠΈΠ· SQLConf.scala.
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎΠΈΠΌΠΎΡΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΡΠΊΠ»ΡΡΠ΅Π½.
Π Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ Π½Π΅Π³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ join’ΠΎΠ².
ΠΡΠ°ΡΠΊΠΈΠ΅ ΠΈΡΠΎΠ³ΠΈ
Π£Π΄Π°Π»ΠΎΡΡ Π·Π°ΡΡΠΎΠ½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ, Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ ΠΆΠ΄ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ ΡΠΎ ΡΡΠΎΠΈΠΌΠΎΡΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΡΡΠΎΡΠ° Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ β ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ· Parquet ΠΈ Orc ΡΠ°ΠΉΠ»ΠΎΠ², ΡΡΠ΄Ρ ΠΏΠΎ jira ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π΅Π»ΠΎ ΠΈΠ΄Π΅Ρ ΠΊ ΠΏΠ°ΡΠΈΡΠ΅ΡΡ, Π½ΠΎ ΡΠ°ΠΊ Π»ΠΈ ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅?
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ SQL Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠΎΠ·ΡΡΠΊ ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΏΡΠ΅ΡΡΡΠΏΠ½ΠΈΠΊΠΎΠ²
ΠΠ΅ΠΉΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Appbooster
ΠΠΎΠ»Π°Π³Π°Ρ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Ruby on Rails ΠΈ Postgres Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π²ΠΎΠΎΡΡΠΆΠ΅Π½ΠΈΡ Π½Π° Π±ΡΠΊΠ΅Π½Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠΌΠ°Π½Π΅Π½ΡΠ½ΠΎΠΉ Π±ΠΎΡΡΠ±Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΡΠΎΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡΡ/ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΡΠΊΠΎΡΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅. Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ ΠΎΠΏΡΡΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΡΡΠ΅ΠΌΡ ΠΊΠΈΡΠ°ΠΌΠΈ Π² ΠΊΠ΅ΠΉΡΠ΅, Π³Π΄Π΅ Π½Π° Π²Ρ ΠΎΠ΄Π΅ ΡΡΡΠ°Π΄Π°Π»ΠΈ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ, Π° Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π΄ΠΎ ΠΌΠ΅Π½Ρ Π±Π΅Π·ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π»Π°Π½ΡΠ»ΠΈΠ²ΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ².
ΠΠΎΠ»Π½ΠΎΡΡΡΡ Π²ΡΡ ΠΈΡΡΠΎΡΠΈΡ Π·Π°ΠΉΠΌΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠ΅ΠΉ. ΠΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ, Π³Π΄Π΅ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠΎΠΌ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ PMDSC Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΏΠΎΠ΄Π΅Π»ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² postgres ΠΈ Π½Π°ΠΏΠΎΠΌΠ½Ρ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΡΠ°ΡΠΎΠΉ ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π°ΠΊΡΡΠ°Π»ΡΠ½Π°.
Π‘Π΅ΠΉΡΠ°Ρ, ΡΠΏΡΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ, βΠ·Π°Π΄Π½ΠΈΠΌ ΡΠΌΠΎΠΌβ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ Π½Π° Π²Ρ ΠΎΠ΄Π΅ Π² ΡΡΠΎΡ ΠΊΠ΅ΠΉΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π» ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π²ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎΡ ΠΏΠΎΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΠΊΠΎΡΠ΅Π΅ Π΄Π»Ρ ΡΠΌΠ΅Π»ΡΡ ΠΈ Π½Π΅ ΡΠ°ΠΌΡΡ ΠΎΠΏΡΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠ΅ΠΌ Π΄Π»Ρ ΡΡΠΏΠ΅Ρ-ΡΠ΅Π½ΡΠΎΡΠΎΠ² Π²ΠΈΠ΄Π°Π²ΡΠΈΡ ΡΠ΅Π»ΡΡΡ Ρ Π³ΠΎΠ»ΡΠΌ SQL.
ΠΠ²ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
ΠΡ Π² Appbooster Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π§ΡΠΎΠ±Ρ Π»Π΅Π³ΠΊΠΎ Π²ΡΠ΄Π²ΠΈΠ³Π°ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π³ΠΈΠΏΠΎΡΠ΅Π·Ρ ΠΌΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΊΠ΅Π½Π΄ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ· Π½ΠΈΡ ΡΡΠΎ Rails API ΠΈ Postgresql.
ΠΠ΅ΡΠΎΠΉ ΡΡΠΎΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ° 2013 Π³ΠΎΠ΄Π° β ΡΠΎΠ³Π΄Π° ΡΠΎΠ»ΡΠΊΠΎ-ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΡΠ΅Π» rails 4.1.0.beta1. Π‘ ΡΠ΅Ρ ΠΏΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π²ΡΡΠΎΡ Π² ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΡΡΡΠΈΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Π² Amazon EC2 c ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² Amazon RDS (db.t3.xlarge Ρ 4 vCPU ΠΈ 16 GB RAM). ΠΠΈΠΊΠΎΠ²ΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΠΎΡ ΠΎΠ΄ΡΡ Π΄ΠΎ 25k RPM, ΡΡΠ΅Π΄Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π΄Π½ΡΠΌ 8-10k RPM.
Π‘ ΠΈΠ½ΡΡΠ°Π½ΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΠΎΡΠ½Π΅Π΅ Ρ Π΅Ρ ΠΊΡΠ΅Π΄ΠΈΡΠ½ΠΎΠ³ΠΎ Π±Π°Π»Π°Π½ΡΠ° ΠΈ Π½Π°ΡΠ°Π»Π°ΡΡ ΡΡΠ° ΠΈΡΡΠΎΡΠΈΡ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ½ΡΡΠ°Π½Ρ Postgres ΡΠΈΠΏΠ° βtβ Π² ΠΠΌΠ°Π·ΠΎΠ½ RDS: Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΡΠ΅Π΄Π½ΠΈΠΌ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½ΠΈΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎ Ρ Π²Π°Ρ Π½Π° ΡΡΠ΅ΡΡ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡΡΡ ΠΊΡΠ΅Π΄ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΠΈΡΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π² ΡΠ°ΡΡ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ β ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΏΠ»Π°ΡΠΈΠ²Π°ΡΡ Π·Π° ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΡΠΎΠΌ Π·Π° ΡΡΠΎ ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ»Π°ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ AWS ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² ΡΡΠ°ΡΡΠ΅ Π½Π°ΡΠ΅Π³ΠΎ CTO.
Π ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ Π΄Π΅Π½Ρ, Ρ Π½Π°ΠΏΠΈΡΠ°Π» Π² Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΌ ΡΠ°ΠΌΠΌΠ°ΡΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ°Π» ΡΡΡΠΈΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ Π² ΡΠ°Π·Π½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° βΠΏΠΎΠΆΠ°ΡΡβ. ΠΡΠ»ΠΈ ΡΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ, ΡΠΎ Π±ΠΈΠ·Π½Π΅Ρ Π·Π°Π΄Π°ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»ΡΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠ³ΠΎΡΠ΅Π²ΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ. Π ΡΠΎΡ ΠΆΠ΅ Π΄Π΅Π½Ρ Ρ ΠΏΠΎΠ΄ΠΎΡΠ΅Π» ΠΊ Π³Π»Π°Π²Π½ΠΎΠΌΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΎΠ±ΡΡΡΠ½ΠΈΠ» ΡΠ°ΡΠΊΠ»Π°Π΄ ΠΈ ΠΏΠΎΠΏΡΠΎΡΠΈΠ» Π²ΡΠ΅ΠΌΡ Π½Π° ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΡΠΈΠ½ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠΆΠ°ΡΠΎΠ² ΠΈ ΡΠ΅ΠΌΠΎΠ½Ρ. ΠΠΎΠ»ΡΡΠΈΠ² Π΄ΠΎΠ±ΡΠΎ, Ρ Π½Π°ΡΠ°Π» ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Newrelic Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΠΊΠ»ΠΈΠΊΠ° Π·Π° ΡΡΡΠΊΠΈ. ΠΠ°ΡΡΠΈΠ½Π° Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° ΡΠ°ΠΊ:
ΠΠ΅Π»ΡΡΠΌ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π° ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Postgres. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΡΠ΅ΠΌΡ ΠΎΡΠ²Π΅ΡΠ° Π΄ΠΎΡ ΠΎΠ΄ΠΈΠ»ΠΎ Π΄ΠΎ 1000 ms ΠΈ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΡΡΠ»ΡΠ»Π° Π½Π°Π΄ ΠΎΡΠ²Π΅ΡΠΎΠΌ. ΠΠ½Π°ΡΠΈΡ Π½Π°Π΄ΠΎ ΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ SQL Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ.
PMDSC β ΠΏΡΠΎΡΡΠ°Ρ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ ΡΠΊΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ SQL Π·Π°ΠΏΡΠΎΡΠΎΠ²
Play it!
Measure it!
Draw it!
Suppose it!
Check it!
Play it!
ΠΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΠ°Ρ Π²Π°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ. ΠΠΎΠ³Π΄Π° ΠΊΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠΈΡ ΡΡΠ°Π·Ρ Β«ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ SQL Π·Π°ΠΏΡΠΎΡΠΎΠ²Β» β ΡΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΡΡΡΠΏ Π·Π΅Π²ΠΎΡΡ ΠΈ ΡΠΊΡΠΊΡ Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π»ΡΠ΄Π΅ΠΉ. ΠΠΎΠ³Π΄Π° ΡΡ ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠΈΡΡ Β«ΠΠ΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠ·ΡΡΠΊ ΠΎΠΏΠ°ΡΠ½ΡΡ Π·Π»ΠΎΠ΄Π΅Π΅Π²Β» β ΡΡΠΎ ΡΠΈΠ»ΡΠ½Π΅Π΅ Π²ΠΎΠ²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π° Π½ΡΠΆΠ½ΡΠΉ Π»Π°Π΄. ΠΠΎΡΡΠΎΠΌΡ Π²Π°ΠΆΠ½ΠΎ Π²ΠΎΠΉΡΠΈ Π² ΠΈΠ³ΡΡ. ΠΠ½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ ΠΈΠ³ΡΠ°ΡΡ Π² Π΄Π΅ΡΠ΅ΠΊΡΠΈΠ²Π°. Π― ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ» ΡΠ΅Π±Π΅ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΏΡΠ΅ΡΡΡΠΏΠ½ΠΈΠΊΠΈ, Π»ΠΈΠ±ΠΎ ΡΠ΅Π΄ΠΊΠΈΠ΅ Π±ΠΎΠ»Π΅Π·Π½ΠΈ. Π ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ» Π² ΡΠΎΠ»ΠΈ Π¨Π΅ΡΠ»ΠΎΠΊΠ° Π₯ΠΎΠ»ΠΌΡΠ°, ΠΠ΅ΠΉΡΠ΅Π½Π°Π½ΡΠ° ΠΠΎΠ»ΠΎΠΌΠ±ΠΎ ΠΈΠ»ΠΈ ΠΠΎΠΊΡΠΎΡΠ° Π₯Π°ΡΡΠ°. ΠΡΠ±ΠΈΡΠ°ΠΉ Π³Π΅ΡΠΎΡ Π½Π° ΡΠ²ΠΎΠΉ Π²ΠΊΡΡ ΠΈ Π²ΠΏΠ΅ΡΠ΅Π΄!
Measure It!
ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» PgHero. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ pg_stat_statements Π΄Π»Ρ Postgres. ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π² /queries ΠΈ ΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ Π²ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΡΡΠΊΠΈ. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Total Time β Π΄ΠΎΠ»Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡ β ΡΠ΅Π½Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π² ΠΏΠΎΠΈΡΠΊΠ΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅ΠΌΡΡ . Average Time β ΡΠΊΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π·Π°ΠΏΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. Calls β ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π±ΡΠ»ΠΎ Π·Π° Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. PgHero ΡΡΠΈΡΠ°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌΠΈ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ 100 ΡΠ°Π· Π·Π° ΡΡΡΠΊΠΈ ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ 20 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄. Π‘ΠΏΠΈΡΠΎΠΊ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅, ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΏΠΈΡΠΊΠ° Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΡ ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².
ΠΠ΅ΡΡΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈ ΡΠΌΠΎΡΡΠΈΠΌ Π΄Π΅ΡΠ°Π»ΠΈ Π·Π°ΠΏΡΠΎΡΠ°, ΡΡΡ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΅Π³ΠΎ explain analyze. EΡΠ»ΠΈ planning time ΡΠΈΠ»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ execution time, Π·Π½Π°ΡΠΈΡ Ρ ΡΡΠΈΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΠΈ ΠΌΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΡΠ΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅ΠΌΠΎΠΌ.
Π PgHero Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ explain.depesz.com ΠΊΠΎΠΏΠΈΡΡΡ ΡΡΠ΄Π° Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· explain analyze.
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅ΠΌΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Index Scan. ΠΠ° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΈΠ΄Π½ΠΎ ΡΡΠΎ ΡΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π°Π±ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ β Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΊΡΠ°ΡΠ½ΡΠΌ. ΠΡΠ»ΠΈΡΠ½ΠΎ! ΠΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ ΡΠ»Π΅Π΄Ρ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈ Π½Π°ΡΠ»ΠΈ Π²Π°ΠΆΠ½ΡΡ ΡΠ»ΠΈΠΊΡ! ΠΡΠ°Π²ΠΎΡΡΠ΄ΠΈΠ΅ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ!
Draw it!
ΠΠ°ΡΠΈΡΡΠ΅ΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ ΡΠ΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. ΠΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ β ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ Π»ΠΎΡΠ΅ΡΠ΅ΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΈΠ³ΡΠ°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Π²Π°Π»ΡΡΡ. ΠΠ΅Π»Π°Π΅ΡΡ ΡΡΠ°Π²ΠΊΡ, Π·Π°Π³Π°Π΄ΡΠ²Π°Π΅ΡΡ ΡΠΈΡΠ»ΠΎ ΠΎΡ 0 Π΄ΠΎ 100 ΠΈ Π·Π°Π±ΠΈΡΠ°Π΅ΡΡ Π²Π΅ΡΡ Π±Π°Π½ΠΊ, Π΅ΡΠ»ΠΈ ΡΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π±Π»ΠΈΠΆΠ΅ Π²ΡΠ΅Ρ ΠΊ ΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ» Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π». ΠΡ Π½Π°Π·Π²Π°Π»ΠΈ ΡΡΠΎ βΠΡΠ΅Π½Π°β, Π° ΡΠΎΠ·ΡΠ³ΡΡΡΠΈ Π½Π°Π·Π²Π°Π»ΠΈ βΠΠΈΡΠ²Π°ΠΌΠΈβ.
Π Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΠΎΠ»ΠΎ ΠΏΡΡΠΈΡΠΎΡ ΡΡΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΎ Π±ΠΈΡΠ²Π°Ρ . Π ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΌΡ ΠΈΡΠ΅ΠΌ Π±ΠΈΡΠ²Ρ Π² ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°Π²ΠΊΠ° Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π±Π°Π»Π°Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΡΡΠ°ΡΡΡ Π±ΠΈΡΠ²Ρ β ΠΆΠ΄Ρ ΠΈΠ³ΡΠΎΠΊΠΎΠ². ΠΠΈΠ΄ΠΈΠΌ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² (Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΎΡΠ°Π½ΠΆΠ΅Π²ΡΠΌ) ΡΠΎΠ²ΡΠ΅ΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
ΠΠ½Π΄Π΅ΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅ΠΌΠΎΠΉ ΡΠ°ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π±ΠΈΡΠ²Ρ ΠΏΠΎ ΠΏΠΎΠ»Ρ created_at. ΠΠ°ΠΏΡΠΎΡ ΠΏΡΠΎΠ±Π΅Π³Π°Π΅Ρ ΠΏΠΎ 505330 Π·Π°ΠΏΠΈΡΡΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ 40, Π° 505290 ΠΎΡΡΠ΅ΠΈΠ²Π°Π΅Ρ. ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ.
Suppose it!
ΠΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌ Π³ΠΈΠΏΠΎΡΠ΅Π·Ρ. Π§ΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π½Π°ΠΉΡΠΈ ΡΠΎΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈΠ· ΠΏΡΡΠΈΡΠΎΡ ΡΡΡΡΡ? ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅ ΡΡΠ°Π²ΠΊΠ°, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π±ΠΈΡΠ² ΡΠΎ ΡΡΠ°ΡΡΡΠΎΠΌ βΠΆΠ΄Ρ ΠΈΠ³ΡΠΎΠΊΠΎΠ²β β ΠΏΠ°ΡΡΠΈΠ°Π» ΠΈΠ½Π΄Π΅ΠΊΡ.
ΠΠ°ΡΡΠΈΠ°Π» ΠΈΠ½Π΄Π΅ΠΊΡ β ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΏΠΎΠ΄ ΡΡΠ»ΠΎΠ²ΠΈΠ΅: ΠΏΠΎΠ»Π΅ ΡΡΠ°ΡΡΡ ΡΠ°Π²Π½ΠΎ βΠΆΠ΄Ρ_ΠΈΠ³ΡΠΎΠΊΠΎΠ²β ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»Π΅ ΡΡΠ°Π²ΠΊΠ° β ΡΠΎΠ²Π½ΠΎ ΡΠΎ ΡΡΠΎ Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠ΅Π½Ρ Π²ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡ: ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ 40 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ ΠΈ Π½Π΅ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ ΡΠ΅ Π±ΠΈΡΠ²Ρ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΡΡΠ³ΡΠ°Π½Ρ ΠΈ Π½Π΅ Π½ΡΠΆΠ½Ρ Π½Π°ΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ β ΠΈΠ½Π΄Π΅ΠΊΡ index_arena_battles_on_created_at, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅ΠΌΡΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 40 ΠΠ±, Π° ΡΠ°Π±Π»ΠΈΡΠ° Ρ Π±ΠΈΡΠ²Π°ΠΌΠΈ ΠΎΠΊΠΎΠ»ΠΎ 70 ΠΠ±. ΠΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π»ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ.
Check it!
ΠΡΠΊΠ°ΡΡΠ²Π°Π΅ΠΌ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Ρ Π½ΠΎΠ²ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ Π·Π° ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ ΠΎΡΠΊΠ»ΠΈΠΊ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ° Ρ Π±ΠΈΡΠ²Π°ΠΌΠΈ.
ΠΠ° Π³ΡΠ°ΡΠΈΠΊΠ΅ Π²ΠΈΠ΄Π½ΠΎ Π²ΠΎ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΡ Π²ΡΠΊΠ°ΡΠΈΠ»ΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ. ΠΠ΅ΡΠ΅ΡΠΎΠΌ 6 Π΄Π΅ΠΊΠ°Π±ΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 10 ΡΠ°Π· Ρ
50ms. ΠΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅ΠΌΡΠΉ Π² ΡΡΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΡΠ°ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΈΠ΄ΠΈΡ Π² ΡΡΡΡΠΌΠ΅. ΠΡΠ»ΠΈΡΠ½ΠΎ!
Prison Break
Π‘ΠΏΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ ΠΌΡ ΠΏΠΎΠ½ΡΠ»ΠΈ ΡΡΠΎ ΡΠ°Π½ΠΎ ΡΠ°Π΄ΠΎΠ²Π°Π»ΠΈΡΡ. ΠΠΎΡ ΠΎΠΆΠ΅, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π½Π°ΡΠ΅Π» ΡΠΎΠΎΠ±ΡΠ½ΠΈΠΊΠΎΠ², ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠ» ΠΏΠ»Π°Π½ ΠΏΠΎΠ±Π΅Π³Π°.
Π£ΡΡΠΎΠΌ 11 Π΄Π΅ΠΊΠ°Π±ΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ² postgres ΡΠ΅ΡΠΈΠ» ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²Π΅ΠΆΠΈΠΉ ΠΏΠ°ΡΡΠΈΠ°Π» ΠΈΠ½Π΄Π΅ΠΊΡ, Π΅ΠΌΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π²ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΈ ΡΡΠ°Π» ΡΠ½ΠΎΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΡΠΉ.
ΠΡ ΡΠ½ΠΎΠ²Π° Π½Π° ΡΡΠ°ΠΏΠ΅ Suppose it! Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΈΠ°Π³Π½ΠΎΠ·, Π² Π΄ΡΡ Π΅ Π΄ΠΎΠΊΡΠΎΡΠ° Π₯Π°ΡΡΠ°:
ΠΠ°Π²Π°ΠΉ Π²ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎ ΡΡΠΎΠΌΡ SQL. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ Π±ΠΈΡΠ²Ρ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Π±ΠΈΡΠ² ΡΡΠ°ΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π²Π΅Π½ βΠΆΠ΄Ρ ΠΈΠ³ΡΠΎΠΊΠΎΠ²β ΠΈ ΡΡΠ°Π²ΠΊΠ° ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½Π° Π½Π΅ΠΊΠΎΠ΅ΠΌΡ ΡΠΈΡΠ»Ρ. ΠΠΎΠΊΠ° Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. Π‘Π»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ»Π°Π³Π°Π΅ΠΌΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΆΡΡΠΊΠΎ.
ΠΡ ΠΈΡΠ΅ΠΌ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΠ°. ΠΠΎΡΡΠ°Π½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠ°ΡΡΠΈΠΉ Π² Π±ΠΈΡΠ²Π°Ρ , Π³Π΄Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π±ΠΈΡΠ²Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ ΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π½Π°ΡΠ΅ΠΌΡ ΠΈΠ³ΡΠΎΠΊΡ. ΠΠΎΠΏΡΠΎΠ±ΡΡ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΠ΅.
Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΡΡΠ»ΠΈΡΡ, Π½ΠΎ Π² ΠΈΡΠΎΠ³Π΅ ΡΡΠΈΠΌ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΌΡ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ Π±ΠΈΡΠ²Ρ Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ³ΡΠΎΠΊ ΡΠΆΠ΅ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ. Π‘ΠΌΠΎΡΡΠΈΠΌ ΠΎΠ±ΡΠΈΠΉ explain Π·Π°ΠΏΡΠΎΡΠ° ΠΈ Π²ΠΈΠ΄ΠΈΠΌ Planning time: 0.180 ms, Execution time: 12.119 ms. ΠΡ Π½Π°ΡΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ½ΠΈΠΊΠ°!
ΠΠ°ΡΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠ΅ΠΉ Π»ΡΠ±ΠΈΠΌΠΎΠΉ ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π³ΡΠ»ΡΠ΅Ρ ΠΏΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°ΠΌ Ρ 2008 Π³ΠΎΠ΄Π°. ΠΠΎΡ ΠΎΠ½Π°:
ΠΠ°! ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠ»ΡΡΡ ΡΡΠΎΡ ΠΌΠ΅ΠΌ Ρ Π±ΠΎΡΠΎΠ΄ΠΎΠΉ ΠΈ ΠΊΡΠ΄ΡΡΠΌΠΈ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΠΎΡ ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ:
Π‘ΠΎΡ ΡΠ°Π½ΠΈ ΡΠ΅Π±Π΅ ΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ, Π° Π΅ΡΠ΅ Π»ΡΡΡΠ΅ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΠΉ ΠΈ ΠΏΠΎΠ²Π΅ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ Π² ΠΎΡΠΈΡΠ΅.
ΠΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡ Π½Π° LEFT JOIN WHERE B.key IS NULL, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
ΠΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ Π±Π΅ΠΆΠΈΡ ΡΡΠ°Π·Ρ ΠΏΠΎ Π΄Π²ΡΠΌ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ. ΠΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈ βΡΠ»Π΅Π²Π°β ΡΠ°Π±Π»ΠΈΡΡ Ρ Π·Π°ΠΏΠΈΡΡΠΌΠΈ ΡΡΠ°ΡΡΠΈΠΉ Π² Π±ΠΈΡΠ²Π°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠ°ΡΡΠΈΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. Π‘ΠΌΠΎΡΡΠΈΠΌ explain analyze ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°: Planning time: 0.185 ms, Execution time: 0.337 ms. ΠΡΠ»ΠΈΡΠ½ΠΎ! Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡΡ ΡΡΠΎ Π΅ΠΌΡ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΡΠΈΠ°Π» ΠΈΠ½Π΄Π΅ΠΊΡ, Π° Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. Π‘Π±Π΅ΠΆΠ°Π²ΡΠΈΠΉ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΈ Π΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ½ΠΈΠΊ ΠΏΡΠΈΠ³ΠΎΠ²ΠΎΡΠ΅Π½Ρ Π½Π° ΠΏΠΎΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ΅ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠ³ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°. Π‘Π±Π΅ΠΆΠ°ΡΡ ΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½Π΅Π΅.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ B2B ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄Π»Ρ ΡΡΡΠΎΠΈΡΠ΅Π»Π΅ΠΉ
ΠΠ°ΠΊ Π²ΡΡΠ°ΡΡΠΈ Π² 10 ΡΠ°Π· ΠΏΠΎΠ΄ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΠΠ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΅Π·ΠΆΠ°Ρ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ? Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ ΠΌΡ Π±ΠΎΡΠΎΠ»ΠΈΡΡ Ρ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π°ΡΠ΅ΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ SQL Π·Π°ΠΏΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π½Π΅ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π½Π° Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ.
Π― Π΄Π΅Π»Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ Π² ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡ . Π‘ Π½Π°ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 3 ΡΡΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ΠΠΎΠ»Π΅Π΅ 10 ΡΡΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎ 4-10 ΡΠ°ΡΠΎΠ². ΠΠ½Π° ΡΠ΅ΡΠ°Π΅Ρ ΡΠ°Π·Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈβ¦ ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ PostgreSQL 9.6. Π Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Ρ Π½Π°Ρ ΠΎΠΊΠΎΠ»ΠΎ 300 ΡΠ°Π±Π»ΠΈΡ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠ΅ ΡΡΡΠΊΠΈ Π² Π½Π΅Π΅ ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ Π΄ΠΎ 200 ΠΌΠ»Π½ Π·Π°ΠΏΡΠΎΡΠΎΠ² (10 ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ). Π ΡΡΠ΅Π΄Π½Π΅ΠΌ Ρ Π½Π°Ρ 3-4 ΡΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π² ΡΠ°ΠΌΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π±ΠΎΠ»Π΅Π΅ 10 ΡΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² β OLAP. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΉ, ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠΎ Π΅ΡΡΡ OLTP Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ. ΠΡΠ΅ ΡΡΠΈ ΡΠΈΡΡΡ Ρ ΠΏΡΠΈΠ²Π΅Π», ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΌΠ°ΡΡΡΠ°Π± Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΏΠΎΠ½ΡΡΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°Ρ ΠΎΠΏΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ Π²Π°Ρ.
ΠΠ°ΡΡΠΈΠ½Π° ΠΏΠ΅ΡΠ²Π°Ρ. ΠΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ
ΠΠ°ΡΡΠΈΠ½Π° Π²ΡΠΎΡΠ°Ρ. Π‘ΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ
ΠΡΠ°ΠΊ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ 10 ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° Π½Π°ΡΠ΅ΠΉ ΠΠ Π·Π° ΡΡΡΠΊΠΈ. ΠΠ· ΡΡΠΈΡ 10 ΡΡΡΡΡ Π΅ΡΡΡ ΠΌΠΎΠ½ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎ 2-3 ΠΌΠ»Π½ ΡΠ°Π· ΡΠΎ ΡΡΠ΅Π΄Π½ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ 0.1-0.3 ΠΌΡ ΠΈ Π΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ ΡΠΎ ΡΡΠ΅Π΄Π½ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ 30 ΡΠ΅ΠΊΡΠ½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ 100 ΡΠ°Π· Π² ΡΡΡΠΊΠΈ.
ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ 10 ΡΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»ΠΎΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΠΊΡΠ΄Π° Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΈΠ»ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΠ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΌΡ ΡΡΠ°Π»ΠΈ Π΄Π΅Π»ΠΈΡΡ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠΈΠΏΡ.
TOP Π·Π°ΠΏΡΠΎΡΡ
ΠΡΠΎ ΡΠ°ΠΌΡΠ΅ ΡΡΠΆΠ΅Π»ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (total time). ΠΡΠΎ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΠΈΠ±ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π»ΠΈΠ±ΠΎ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ΅Π½Ρ Π΄ΠΎΠ»Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ (Π΄ΠΎΠ»Π³ΠΈΠ΅ ΠΈ ΡΠ°ΡΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π΅ΡΠ΅ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡΡ Π±ΠΎΡΡΠ±Ρ Π·Π° ΡΠΊΠΎΡΠΎΡΡΡ). Π ΠΈΡΠΎΠ³Π΅ ΡΡΠΌΠΌΠ°ΡΠ½ΠΎ Π½Π° ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅Ρ ΡΡΠ°ΡΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΈΡΠ΅ΠΌ Π²Π°ΠΆΠ½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΡΡ ΡΠΎΠΏ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΏΠΎ IO time. Π‘ΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΊΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π½ΡΠ΅.
ΠΠ±ΡΡΠ½Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π²ΡΠ΅Ρ
ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ- ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ TOP Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ. ΠΡ
Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ 5-10% ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎ ΠΌΠ΅ΡΠ΅ βΠ²Π·ΡΠΎΡΠ»Π΅Π½ΠΈΡβ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ TOP Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΡΠ΅ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΆΠ΅ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π½Ρ, Π΄Π° ΠΈ ΡΠ°ΠΌΡΠΉ βΡΡΠΆΠ΅Π»ΡΠΉβ Π·Π°ΠΏΡΠΎΡ ΠΎΡΠ½ΠΈΠΌΠ°Π΅Ρ βΠ²ΡΠ΅Π³ΠΎβ 3-5% ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡΠ»ΠΈ TOP Π·Π°ΠΏΡΠΎΡΡ Π² ΡΡΠΌΠΌΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅Π½Π΅Π΅ 30-40% Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π²Ρ ΡΠΆΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠ»ΠΈ ΡΡΠΈΠ»ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π±ΡΡΡΡΠΎ ΠΈ ΠΏΡΠΈΡΠ»Π° ΠΏΠΎΡΠ° ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³ΡΡΠΏΠΏΡ.
ΠΡΡΠ°Π΅ΡΡΡ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ
Π½ΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΡΡ Π³ΡΡΠΏΠΏΡ. Π― ΠΎΠ±ΡΡΠ½ΠΎ Π±Π΅ΡΡ Π½Π΅ ΠΌΠ΅Π½ΡΡΠ΅ 10, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ 20. Π‘ΡΠ°ΡΠ°ΡΡΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π² TOP Π³ΡΡΠΏΠΏΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π»ΠΎΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π² 10 ΡΠ°Π·. Π’ΠΎ Π΅ΡΡΡ Π΅ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ΅Π·ΠΊΠΎ ΠΏΠ°Π΄Π°Π΅Ρ Ρ 1 ΠΌΠ΅ΡΡΠ° Π΄ΠΎ 10, ΡΠΎ Π±Π΅ΡΡ TOP-10, Π΅ΡΠ»ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Π²Π½ΠΎΠ΅, ΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ ΡΠ°Π·ΠΌΠ΅Ρ Π³ΡΡΠΏΠΏΡ Π΄ΠΎ 15 ΠΈΠ»ΠΈ 20.
Π‘Π΅ΡΠ΅Π΄Π½ΡΠΊΠΈ (medium)
ΠΡΠΎ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄ΡΡ ΡΡΠ°Π·Ρ Π·Π° TOP, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ 5-10%. ΠΠ±ΡΡΠ½ΠΎ Π² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊΡΠΎΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π½ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ βΠ²Π΅ΡΠΈΡΡβ Π΄ΠΎ 80%. ΠΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΈΡ Π΄ΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π²Π°Π»ΠΈΠ»Π° Π·Π° 50%, Π·Π½Π°ΡΠΈΡ ΠΏΠΎΡΠ° Π½Π° Π½ΠΈΡ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ.
Π₯Π²ΠΎΡΡ (tail)
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ΄ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΈ Π½Π° Π½ΠΈΡ ΡΡ ΠΎΠ΄ΠΈΡ 5-10% Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΎ Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ.
ΠΠ°ΠΊ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π³ΡΡΠΏΠΏΡ?
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ SQL Π·Π°ΠΏΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΡΡ ΠΎΡΠ΅Π½ΠΊΡ Π΄Π»Ρ PostgreSQL (ΡΠ²Π΅ΡΠ΅Π½ ΡΡΠΎ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ Π‘Π£ΠΠ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π·Π°ΠΏΡΠΎΡ)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ°- ΡΡΠΈ ΡΡΠΎΠ»Π±ΡΠ°, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΎΡΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ· ΡΡΠΎΠΉ Π³ΡΡΠΏΠΏΡ. ΠΠ½ΡΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π΅ΡΡΡ Π΄Π²Π° ΡΠΈΡΠ»Π° (Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ 20 ΠΈ 800), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΎΡ Π΄ΡΡΠ³ΠΎΠΉ.
ΠΠΎΡ ΡΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠΎΠΎΡΠ½ΠΎΡΡΡΡΡ Π΄ΠΎΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ.
ΠΠ· Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π΄ΠΎΠ»Ρ TOP Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ΅Π·ΠΊΠΎ ΡΠ½ΠΈΠ·ΠΈΠ»Π°ΡΡ, Π·Π°ΡΠΎ Π²ΡΡΠΎΡΠ»ΠΈ βΡΠ΅ΡΠ΅Π΄Π½ΡΠΊΠΈβ.
ΠΠΎΠ½Π°ΡΠ°Π»Ρ Π² TOP Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎΠΏΠ°Π΄Π°Π»ΠΈ ΠΎΡΠΊΡΠΎΠ²Π΅Π½Π½ΡΠ΅ Π»ΡΠΏΡ. Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π΄Π΅ΡΡΠΊΠΈΠ΅ Π±ΠΎΠ»Π΅Π·Π½ΠΈ ΠΈΡΡΠ΅Π·Π»ΠΈ, Π΄ΠΎΠ»Ρ TOP Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠΎΠΊΡΠ°ΡΠ°Π»Π°ΡΡ, ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΏΡΠΈΠ»Π°Π³Π°ΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΈΠ»ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΡΡΠΊΠΎΡΠΈΡΡ ΡΡΠΆΠ΅Π»ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ.
ΠΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΌΡΡ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΈΠ΅ΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π»ΠΈ Π½Π°ΠΌ ΡΡΠΊΠΎΡΡΡΡ TOP Π·Π°ΠΏΡΠΎΡΡ:
Π’ΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²ΡΠΎΡΡΡ Π³ΡΡΠΏΠΏΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²- Π³ΡΡΠΏΠΏΡ ΡΠ΅ΡΠ΅Π΄Π½ΡΠΊΠΎΠ². Π Π½Π΅ΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ Π½Π° Π°Π½Π°Π»ΠΈΠ· Π²ΡΠ΅ΠΉ Π³ΡΡΠΏΠΏΡ ΡΠΉΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ»ΠΈΡΡ Π΄Π΅ΡΡΡΠΊΠΈ ΡΠ°Π· Π² ΡΠ°Π·Π½Π»ΠΈΡΠ½ΡΡ Π²Π°ΡΠΈΠ°ΡΠΈΡΡ . ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠΏΠΎΠ²ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈ ΠΊ Π΄Π΅ΡΡΡΠΊΠ°ΠΌ ΠΏΠΎΡ ΠΎΠΆΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ Π³ΡΡΠΏΠΏΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ°Π·Π³ΡΡΠΆΠ°Π»Π° ΠΠ Π½Π° 3-5%.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠΊΠΈ Π²ΡΠ΅Ρ Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΏΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΠΎΠΊ (DELIVERY)
ΡΠ΄Π΅Π»Π°Π»ΠΈ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ PERSON
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΡΠ΄Π°Π²Π°Π»ΠΎΡΡ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΠΎΡΠΎΠΉ Π² 3-1000 ΡΠ°Π·. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΡΡΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ Π½Π°ΠΌ ΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ Π½Π΅Ρ ΡΠΌΡΡΠ»Π° Π² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ 10 ΠΌΡ, Π²Ρ ΠΎΠ΄ΠΈΡ Π² 3-Ρ ΡΠΎΡΠ½Ρ ΡΠ°ΠΌΡΡ ΡΡΠΆΠ΅Π»ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΠ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΠ°. ΠΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅ΡΠ΅ΠΏΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΡ ΠΎΡΡΠ³ΡΡΠ²Π°Π»ΠΈ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ². Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ Π²ΡΠ΅Ρ ΡΠΎΡΠ΅Π½ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ. Π ΠΈΡΠΎΠ³Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠΈΡΠΊ Π³ΡΡΠΏΠΏ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π½Π°ΠΌ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ»ΡΡΡΠΈΡΡ Π½Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π·Π°ΡΡΠ°ΡΠΈΠ² ΡΠΊΡΠΎΠΌΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡ.
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΡΠΆΠ΅ ΡΡΠΈ Π³ΠΎΠ΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΆΠ΅Π»Π΅Π·Π΅. Π‘ΡΠ΅Π΄Π½Π΅ΡΡΡΠΎΡΠ½Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΠΊΠΎΠ»ΠΎ 30%, Π² ΠΏΠΈΠΊΠ°Ρ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ 70%. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π²ΡΡΠΎΡΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 10 ΡΠ°Π·. Π Π²ΡΠ΅ ΡΡΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΌΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Ρ ΡΡΠΈΡ ΡΠ°ΠΌΡΡ Π³ΡΡΠΏΠΏ Π·Π°ΠΏΡΠΎΡΠΎΠ² TOP-MEDIUM. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π½ΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π³ΡΡΠΏΠΏΠ΅ TOP, ΠΌΡ Π΅Π³ΠΎ ΡΡΡ ΠΆΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΈ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΡΠΊΠΎΡΠΈΡΡ. ΠΡΡΠΏΠΏΡ MEDIUM ΠΌΡ ΡΠ°Π· Π² Π½Π΅Π΄Π΅Π»Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΡΠ»ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΆΠ΅ Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎ ΠΌΡ ΠΈΡ Π±ΡΡΡΡΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ. ΠΠ½ΠΎΠ³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π½ΠΎΠ²ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ°Π·Ρ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ.
ΠΠΎ Π½Π°ΡΠΈΠΌ ΠΏΡΠΎΠ³Π½ΠΎΠ·Π°ΠΌ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠ΄Π΅ΡΠΆΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΅ΡΠ΅ Π² 3-5 ΡΠ°Π·. ΠΡΠ°Π²Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ·ΡΡΡ Π² ΡΡΠΊΠ°Π²Π΅- ΠΌΡ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π½Π΅ ΠΏΠ΅ΡΠ΅Π²Π΅Π»ΠΈ SELECT- Π·Π°ΠΏΡΠΎΡΡ Π½Π° Π·Π΅ΡΠΊΠ°Π»ΠΎ, ΠΊΠ°ΠΊ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄Π΅Π»Π°ΡΡ. ΠΠΎ ΠΌΡ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΡΠΎΠ·Π½Π°Π½Π½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ
ΠΎΡΠΈΠΌ ΡΠ½Π°ΡΠ°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΈΡΡΠ΅ΡΠΏΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Β«ΡΠΌΠ½ΠΎΠΉΒ» ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠ°ΡΡ Β«ΡΡΠΆΠ΅Π»ΡΡ Π°ΡΡΠΈΠ»Π»Π΅ΡΠΈΡΒ».
ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΏΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ². Π‘Π΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠΈΡΡ Π½Π΅ ΡΠ°ΠΊ Π΄ΠΎΡΠΎΠ³ΠΎ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎ Π»ΠΈΠΌΠΈΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Π½Π°Ρ Π΅ΡΠ΅ Π½Π΅ ΠΈΡΡΠ΅ΡΠΏΠ°Π½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Π² 10 ΡΠ°Π· Π²ΡΡΠΎΡΠ»ΠΎ Π»ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠ΅ΠΉ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΡΠ°Π»ΠΎ Π±ΠΎΠ»ΡΡΠ΅. Π’ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ», Π·Π° ΡΡΠ΅Ρ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠ½Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π»ΠΎ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π΅ΡΠ΅ Π½Π° 5, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ. ΠΡΠ°ΠΊ ΠΏΠΎ ΡΠ°ΠΌΡΠΌ ΡΠΊΡΠΎΠΌΠ½ΡΠΌ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²ΠΈΠ»ΠΎ 50 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·. ΠΠ΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΡΠ°ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ Π² 50 ΡΠ°Π· ΠΎΠ±ΠΎΡΠ»ΠΎΡΡ Π±Ρ Π΄ΠΎΡΠΎΠΆΠ΅. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ, Π° ΡΡΠ΅Ρ Π·Π° Π°ΡΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ΅ΡΡΡ.