ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืฉืื™ืœืชื•ืช ืžืกื“ ื ืชื•ื ื™ื ื‘ืืžืฆืขื•ืช ื”ื“ื•ื’ืžื” ืฉืœ ืฉื™ืจื•ืช 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 ms, ื•ื™ืฉ ืฉืื™ืœืชื•ืช ืขื ื–ืžืŸ ื‘ื™ืฆื•ืข ืžืžื•ืฆืข ืฉืœ 30 ืฉื ื™ื•ืช ืฉื ืงืจืื•ืช 100 ืคืขืžื™ื ื‘ื™ื•ื.

ืœื ื ื™ืชืŸ ื”ื™ื” ืœื‘ืฆืข ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื›ืœ 10 ืืœืฃ ื”ืฉืื™ืœืชื•ืช, ืื– ื”ื—ืœื˜ื ื• ืœื”ื‘ื™ืŸ ืœืืŸ ืœื›ื•ื•ืŸ ืืช ื”ืžืืžืฆื™ื ืฉืœื ื• ืขืœ ืžื ืช ืœืฉืคืจ ืืช ื‘ื™ืฆื•ืขื™ ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืฆื•ืจื” ื ื›ื•ื ื”. ืœืื—ืจ ืžืกืคืจ ืื™ื˜ืจืฆื™ื•ืช, ื”ืชื—ืœื ื• ืœื—ืœืง ื‘ืงืฉื•ืช ืœืกื•ื’ื™ื.

ื‘ืงืฉื•ืช ืžื•ื‘ื™ืœื•ืช

ืืœื• ื”ืฉืื™ืœืชื•ืช ื”ื›ื‘ื“ื•ืช ื‘ื™ื•ืชืจ ืฉืœื•ืงื—ื•ืช ืืช ื”ื–ืžืŸ ื”ืจื‘ ื‘ื™ื•ืชืจ (ื”ื–ืžืŸ ื”ื›ื•ืœืœ). ืืœื• ืฉืื™ืœืชื•ืช ืฉื ืงืจืื•ืช ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืžืื•ื“ ืื• ืฉืื™ืœืชื•ืช ืฉืœื•ืงื— ื–ืžืŸ ืจื‘ ืžืื•ื“ ืœื‘ื™ืฆื•ืข (ืฉืื™ืœืชื•ืช ืืจื•ื›ื•ืช ื•ืชื›ื•ืคื•ืช ืขื‘ืจื• ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื‘ืื™ื˜ืจืฆื™ื•ืช ื”ืจืืฉื•ื ื•ืช ืฉืœ ื”ืžืื‘ืง ืขืœ ื”ืžื”ื™ืจื•ืช). ื›ืชื•ืฆืื” ืžื›ืš, ื”ืฉืจืช ืžื‘ืœื” ืืช ืžื™ืจื‘ ื”ื–ืžืŸ ื‘ื‘ื™ืฆื•ืขื. ื™ืชืจื” ืžื›ืš, ื—ืฉื•ื‘ ืœื”ืคืจื™ื“ ื‘ืงืฉื•ืช ืžื•ื‘ื™ืœื•ืช ืœืคื™ ื–ืžืŸ ื‘ื™ืฆื•ืข ื›ื•ืœืœ ื•ื‘ื ืคืจื“ ืœืคื™ ื–ืžืŸ IO. ื”ืฉื™ื˜ื•ืช ืœืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืฉืื™ืœืชื•ืช ื›ืืœื” ืฉื•ื ื•ืช ื‘ืžืงืฆืช.

ื”ื ื•ื”ื’ ื”ืžืงื•ื‘ืœ ืฉืœ ื›ืœ ื”ื—ื‘ืจื•ืช ื”ื•ื ืœืขื‘ื•ื“ ืขื ื‘ืงืฉื•ืช TOP. ื™ืฉ ืžืขื˜ ืžื”ื; ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืืคื™ืœื• ืฉืœ ืฉืื™ืœืชื” ืื—ืช ื™ื›ื•ืœื” ืœืคื ื•ืช 5-10% ืžืžืฉืื‘ื™ื. ืขื ื–ืืช, ื›ื›ืœ ืฉื”ืคืจื•ื™ืงื˜ ืžืชื‘ื’ืจ, ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืฉืื™ืœืชื•ืช TOP ื”ื•ืคื›ืช ืœืžืฉื™ืžื” ื™ื•ืชืจ ื•ื™ื•ืชืจ ืœื ื˜ืจื™ื•ื•ื™ืืœื™ืช. ื›ืœ ื”ืฉื™ื˜ื•ืช ื”ืคืฉื•ื˜ื•ืช ื›ื‘ืจ ืขื•ื‘ื“ื•, ื•ื”ื‘ืงืฉื” ื”"ื›ื‘ื“ื”" ื‘ื™ื•ืชืจ ื’ื•ื–ืœืช "ืจืง" 3-5% ืžื”ืžืฉืื‘ื™ื. ืื ืฉืื™ืœืชื•ืช TOP ื‘ืกืš ื”ื›ืœ ืœื•ืงื—ื•ืช ืคื—ื•ืช ืž-30-40% ืžื”ื–ืžืŸ, ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื›ื‘ืจ ืขืฉื™ืช ืžืืžืฆื™ื ืœื’ืจื•ื ืœื”ืŸ ืœืขื‘ื•ื“ ื‘ืžื”ื™ืจื•ืช ื•ื”ื’ื™ืข ื”ื–ืžืŸ ืœืขื‘ื•ืจ ืœืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืฉืื™ืœืชื•ืช ืžื”ืงื‘ื•ืฆื” ื”ื‘ืื”.
ื ื•ืชืจ ืœืขื ื•ืช ืขืœ ื”ืฉืืœื” ื›ืžื” ืฉืื™ืœืชื•ืช ืžื•ื‘ื™ืœื•ืช ื™ืฉ ืœื›ืœื•ืœ ื‘ืงื‘ื•ืฆื” ื–ื•. ืื ื™ ื‘ื“ืจืš ื›ืœืœ ืœื•ืงื— ืœืคื—ื•ืช 10, ืื‘ืœ ืœื ื™ื•ืชืจ ืž-20. ืื ื™ ืžืฉืชื“ืœ ืฉื”ื–ืžืŸ ืฉืœ ื”ืจืืฉื•ืŸ ื•ื”ืื—ืจื•ืŸ ื‘ืงื‘ื•ืฆืช ื”-TOP ื™ื”ื™ื” ืฉื•ื ื” ื‘ืœื ื™ื•ืชืจ ืž-10 ืคืขืžื™ื. ื›ืœื•ืžืจ, ืื ื–ืžืŸ ื‘ื™ืฆื•ืข ื”ืฉืื™ืœืชื” ื™ื•ืจื“ ื‘ื—ื“ื•ืช ืžื”ืžืงื•ื ื”-1 ืœ-10, ืื– ืื ื™ ืœื•ืงื— TOP-10, ืื ื”ื™ืจื™ื“ื” ื”ื™ื ื”ื“ืจื’ืชื™ืช ื™ื•ืชืจ, ืื– ืื ื™ ืžื’ื“ื™ืœ ืืช ื’ื•ื“ืœ ื”ืงื‘ื•ืฆื” ืœ-15 ืื• 20.
ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืฉืื™ืœืชื•ืช ืžืกื“ ื ืชื•ื ื™ื ื‘ืืžืฆืขื•ืช ื”ื“ื•ื’ืžื” ืฉืœ ืฉื™ืจื•ืช B2B ืขื‘ื•ืจ ื‘ื•ื ื™ื

ืื™ื›ืจื™ื ื‘ื™ื ื•ื ื™ื™ื

ื›ืœ ืืœื• ื”ืŸ ื‘ืงืฉื•ืช ืฉืžื’ื™ืขื•ืช ืžื™ื“ ืื—ืจื™ TOP, ืœืžืขื˜ 5-10% ื”ืื—ืจื•ื ื™ื. ื‘ื“ืจืš ื›ืœืœ, ื‘ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืฉืื™ืœืชื•ืช ืืœื• ื˜ืžื•ื ื” ื”ื”ื–ื“ืžื ื•ืช ืœื”ื’ื“ื™ืœ ื‘ืžื™ื“ื” ื ื™ื›ืจืช ืืช ื‘ื™ืฆื•ืขื™ ื”ืฉืจืช. ื‘ืงืฉื•ืช ืืœื• ื™ื›ื•ืœื•ืช ืœืฉืงื•ืœ ืขื“ 80%. ืื‘ืœ ื’ื ืื ื—ืœืงื ืขืœื” ืขืœ 50%, ืื– ื”ื’ื™ืข ื”ื–ืžืŸ ืœื”ืกืชื›ืœ ืขืœื™ื”ื ื™ื•ืชืจ ื‘ืงืคื™ื“ื”.

ื–ึธื ึธื‘

ื›ืืžื•ืจ, ืฉืื™ืœืชื•ืช ืืœื• ืžื’ื™ืขื•ืช ื‘ืกื•ืฃ ื•ืœื•ืงื—ื•ืช 5-10% ืžื”ื–ืžืŸ. ืืชื” ื™ื›ื•ืœ ืœืฉื›ื•ื— ืžื”ื ืจืง ืื ืืชื” ืœื ืžืฉืชืžืฉ ื‘ื›ืœื™ื ืื•ื˜ื•ืžื˜ื™ื™ื ืœื ื™ืชื•ื— ืฉืื™ืœืชื•ืช, ืื– ื’ื ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœื”ื ื™ื›ื•ืœื” ืœื”ื™ื•ืช ื–ื•ืœื”.

ืื™ืš ืœื”ืขืจื™ืš ื›ืœ ืงื‘ื•ืฆื”?

ืื ื™ ืžืฉืชืžืฉ ื‘ืฉืื™ืœืชืช SQL ืฉืขื•ื–ืจืช ืœื‘ืฆืข ื”ืขืจื›ื” ื›ื–ื• ืขื‘ื•ืจ PostgreSQL (ืื ื™ ื‘ื˜ื•ื— ืฉื ื™ืชืŸ ืœื›ืชื•ื‘ ืฉืื™ืœืชื” ื“ื•ืžื” ืขื‘ื•ืจ DBMS ืจื‘ื™ื ืื—ืจื™ื)

ืฉืื™ืœืชืช SQL ืœื”ืขืจื›ืช ื”ื’ื•ื“ืœ ืฉืœ ืงื‘ื•ืฆื•ืช TOP-MEDIUM-TAIL

SELECT sum(time_top) AS sum_top, sum(time_medium) AS sum_medium, sum(time_tail) AS sum_tail
FROM
(
  SELECT CASE WHEN rn <= 20              THEN tt_percent ELSE 0 END AS time_top,
         CASE WHEN rn > 20 AND rn <= 800 THEN tt_percent ELSE 0 END AS time_medium,
         CASE WHEN rn > 800              THEN tt_percent ELSE 0 END AS time_tail
  FROM (
    SELECT total_time / (SELECT sum(total_time) FROM pg_stat_statements) * 100 AS tt_percent, query,
    ROW_NUMBER () OVER (ORDER BY total_time DESC) AS rn
    FROM pg_stat_statements
    ORDER BY total_time DESC
  ) AS t
)
AS ts

ื”ืชื•ืฆืื” ืฉืœ ื”ืฉืื™ืœืชื” ื”ื™ื ืฉืœื•ืฉ ืขืžื•ื“ื•ืช, ืฉื›ืœ ืื—ืช ืžื”ืŸ ืžื›ื™ืœื” ืืช ืื—ื•ื– ื”ื–ืžืŸ ืฉืœื•ืงื— ืœืขื‘ื“ ืฉืื™ืœืชื•ืช ืžืงื‘ื•ืฆื” ื–ื•. ื‘ืชื•ืš ื”ื‘ืงืฉื” ื™ืฉ ืฉื ื™ ืžืกืคืจื™ื (ื‘ืžืงืจื” ืฉืœื™ ื–ื” 20 ื•-800) ืฉืžืคืจื™ื“ื™ื ื‘ื™ืŸ ื‘ืงืฉื•ืช ืžืงื‘ื•ืฆื” ืื—ืช ืœืื—ืจืช.

ื›ืš ืžืฉืชื•ื•ื™ื ื‘ืขืจืš ื ืชื—ื™ ื”ื‘ืงืฉื•ืช ื‘ืชืงื•ืคื” ืฉื‘ื” ื”ื—ืœื” ืขื‘ื•ื“ืช ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื•ืขื›ืฉื™ื•.

ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืฉืื™ืœืชื•ืช ืžืกื“ ื ืชื•ื ื™ื ื‘ืืžืฆืขื•ืช ื”ื“ื•ื’ืžื” ืฉืœ ืฉื™ืจื•ืช B2B ืขื‘ื•ืจ ื‘ื•ื ื™ื

ื”ืชืจืฉื™ื ืžืจืื” ื›ื™ ื—ืœืงืŸ ืฉืœ ื‘ืงืฉื•ืช ื”-TOP ื™ืจื“ ื‘ื—ื“ื•ืช, ืืš "ื”ืื™ื›ืจื™ื ื”ืืžืฆืขื™ื™ื" ื’ื“ืœื•.
ื‘ื”ืชื—ืœื”, ื”ื‘ืงืฉื•ืช TOP ื›ืœืœื• ื˜ืขื•ื™ื•ืช ื‘ื•ื˜ื•ืช. ืขื ื”ื–ืžืŸ ื ืขืœืžื• ืžื—ืœื•ืช ื”ื™ืœื“ื•ืช, ื—ืœืงืŸ ืฉืœ ื‘ืงืฉื•ืช TOP ื™ืจื“, ื•ื”ื™ื” ืฆืจื™ืš ืœืขืฉื•ืช ื™ื•ืชืจ ื•ื™ื•ืชืจ ืžืืžืฆื™ื ื›ื“ื™ ืœื–ืจื– ื‘ืงืฉื•ืช ืงืฉื•ืช.

ื›ื“ื™ ืœืงื‘ืœ ืืช ื˜ืงืกื˜ ื”ื‘ืงืฉื•ืช ืื ื• ืžืฉืชืžืฉื™ื ื‘ื‘ืงืฉื” ื”ื‘ืื”

SELECT * FROM (
  SELECT ROW_NUMBER () OVER (ORDER BY total_time DESC) AS rn, total_time / (SELECT sum(total_time) FROM pg_stat_statements) * 100 AS tt_percent, query
  FROM pg_stat_statements
  ORDER BY total_time DESC
) AS T
WHERE
rn <= 20 -- TOP
-- rn > 20 AND rn <= 800 -- MEDIUM
-- rn > 800  -- TAIL

ืœื”ืœืŸ ืจืฉื™ืžื” ืฉืœ ื”ื˜ื›ื ื™ืงื•ืช ื”ื ืคื•ืฆื•ืช ื‘ื™ื•ืชืจ ืฉืขื–ืจื• ืœื ื• ืœื”ืื™ืฅ ืืช ื”ืฉืื™ืœืชื•ืช ื”ืžื•ื‘ื™ืœื•ืช:

  • ืขื™ืฆื•ื‘ ืžื—ื“ืฉ ืฉืœ ื”ืžืขืจื›ืช, ืœืžืฉืœ, ืขื™ื‘ื•ื“ ืžื—ื“ืฉ ืฉืœ ืœื•ื’ื™ืงืช ื”ื”ืชืจืื•ืช ื‘ืืžืฆืขื•ืช ืžืชื•ื•ืš ื”ื•ื“ืขื•ืช ื‘ืžืงื•ื ืฉืื™ืœืชื•ืช ืชืงื•ืคืชื™ื•ืช ืœืžืกื“ ื”ื ืชื•ื ื™ื
  • ื”ื•ืกืคื” ืื• ืฉื™ื ื•ื™ ืฉืœ ืื™ื ื“ืงืกื™ื
  • ืฉื›ืชื•ื‘ ืฉืื™ืœืชื•ืช ORM ืœ-SQL ื˜ื”ื•ืจ
  • ืฉื›ืชื•ื‘ ื”ื™ื’ื™ื•ืŸ ืฉืœ ื˜ืขื™ื ืช ื ืชื•ื ื™ื ืขืฆืœื ื™ืช
  • ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ ื‘ืืžืฆืขื•ืช ื“ื”-ื ื•ืจืžืœื™ื–ืฆื™ื” ืฉืœ ื ืชื•ื ื™ื. ืœื“ื•ื’ืžื”, ื™ืฉ ืœื ื• ื—ื™ื‘ื•ืจ ืฉื•ืœื—ืŸ ืžืฉืœื•ื— -> ื—ืฉื‘ื•ื ื™ืช -> ื‘ืงืฉื” -> ื‘ืงืฉื”. ื›ืœื•ืžืจ, ื›ืœ ืžืกื™ืจื” ืžืฉื•ื™ื›ืช ืœืืคืœื™ืงืฆื™ื” ื“ืจืš ื˜ื‘ืœืื•ืช ืื—ืจื•ืช. ื›ื“ื™ ืœื ืœืงืฉืจ ืืช ื›ืœ ื”ื˜ื‘ืœืื•ืช ื‘ื›ืœ ื‘ืงืฉื”, ืฉื›ืคืœื ื• ืืช ื”ืงื™ืฉื•ืจ ืœื‘ืงืฉื” ื‘ื˜ื‘ืœืช ืžืฉืœื•ื—ื™ื.
  • ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ ืฉืœ ื˜ื‘ืœืื•ืช ืกื˜ื˜ื™ื•ืช ืขื ืกืคืจื™ ืขื™ื•ืŸ ื•ืœืขืชื™ื ืจื—ื•ืงื•ืช ืžืฉื ื™ื ื˜ื‘ืœืื•ืช ื‘ื–ื™ื›ืจื•ืŸ ื”ืชื•ื›ื ื™ืช.

ืœืคืขืžื™ื ื”ืฉื™ื ื•ื™ื™ื ื”ืกืชื›ืžื• ื‘ืชื›ื ื•ืŸ ืžื—ื“ืฉ ืžืจืฉื™ื, ืื‘ืœ ื”ื ืกื™ืคืงื• 5-10% ืžืขื•ืžืก ื”ืžืขืจื›ืช ื•ื”ื™ื• ืžื•ืฆื“ืงื™ื. ืขื ื”ื–ืžืŸ, ื”ืื’ื–ื•ื– ื”ืคืš ืงื˜ืŸ ื™ื•ืชืจ ื•ื™ื•ืชืจ, ื•ื ื“ืจืฉ ืขื™ืฆื•ื‘ ืžื—ื“ืฉ ืจืฆื™ื ื™ ื™ื•ืชืจ ื•ื™ื•ืชืจ.

ืื—ืจ ื›ืš ื”ืคื ื™ื ื• ืืช ืชืฉื•ืžืช ืœื‘ื ื• ืœืงื‘ื•ืฆืช ื”ื‘ืงืฉื•ืช ื”ืฉื ื™ื™ื” - ืงื‘ื•ืฆืช ื”ืื™ื›ืจื™ื ื”ื‘ื™ื ื™ื™ื. ื™ืฉ ื‘ื• ืขื•ื“ ื”ืจื‘ื” ืฉืื™ืœืชื•ืช ื•ื ืจืื” ื”ื™ื” ืฉื™ื™ืงื— ื”ืจื‘ื” ื–ืžืŸ ืœื ืชื— ืืช ื”ืงื‘ื•ืฆื” ื›ื•ืœื”. ืขื ื–ืืช, ืจื•ื‘ ื”ืฉืื™ืœืชื•ืช ื”ืชื‘ืจืจื• ื›ืคืฉื•ื˜ื•ืช ืžืื•ื“ ืœืื•ืคื˜ื™ืžื™ื–ืฆื™ื”, ื•ื‘ืขื™ื•ืช ืจื‘ื•ืช ื—ื–ืจื• ืขืœ ืขืฆืžืŸ ืขืฉืจื•ืช ืคืขืžื™ื ื‘ื•ื•ืจื™ืืฆื™ื•ืช ืฉื•ื ื•ืช. ื”ื ื” ื“ื•ื’ืžืื•ืช ืœื›ืžื” ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื˜ื™ืคื•ืกื™ื•ืช ืฉื”ื—ืœื ื• ืขืœ ืขืฉืจื•ืช ืฉืื™ืœืชื•ืช ื“ื•ืžื•ืช ื•ื›ืœ ืงื‘ื•ืฆื” ืฉืœ ืฉืื™ืœืชื•ืช ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื”ื•ืจื™ื“ื” ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ื‘-3-5%.

  • ื‘ืžืงื•ื ืœื‘ื“ื•ืง ื ื•ื›ื—ื•ืช ืฉืœ ืจืฉื•ืžื•ืช ื‘ืืžืฆืขื•ืช COUNT ื•ืกืจื™ืงืช ื˜ื‘ืœื” ืžืœืื”, ื”ื—ืœื• ืœื”ืฉืชืžืฉ ื‘-EXISTS
  • ื ืคื˜ืจ ืž-DISTINCT (ืื™ืŸ ืžืชื›ื•ืŸ ื›ืœืœื™, ืื‘ืœ ืœืคืขืžื™ื ืืคืฉืจ ืœื”ื™ืคื˜ืจ ืžืžื ื• ื‘ืงืœื•ืช ืขืœ ื™ื“ื™ ื–ื™ืจื•ื– ื”ื‘ืงืฉื” ืคื™ 10-100).

    ืœื“ื•ื’ืžื”, ื‘ืžืงื•ื ืฉืื™ืœืชื” ืœื‘ื—ื•ืจ ืืช ื›ืœ ื”ื ื”ื’ื™ื ืžื˜ื‘ืœืช ืžืฉืœื•ื—ื™ื ื’ื“ื•ืœื” (DELIVERY)

    SELECT DISTINCT P.ID, P.FIRST_NAME, P.LAST_NAME
    FROM DELIVERY D JOIN PERSON P ON D.DRIVER_ID = P.ID
    

    ืขืฉื” ืฉืื™ืœืชื” ืขืœ PERSON ืงื˜ืŸ ื™ื—ืกื™ืช ื‘ื˜ื‘ืœื”

    SELECT P.ID, P.FIRST_NAME, P.LAST_NAME
    FROM PERSON
    WHERE EXISTS(SELECT D.ID FROM DELIVERY WHERE D.DRIVER_ID = P.ID)
    

    ื ืจืื” ืฉื”ืฉืชืžืฉื ื• ื‘ืฉืื™ืœืชืช ืžืฉื ื” ื‘ืงื•ืจืœืฆื™ื”, ืื‘ืœ ื–ื” ื ื•ืชืŸ ืžื”ื™ืจื•ืช ืฉืœ ื™ื•ืชืจ ืžืคื™ 10.

  • ื‘ืžืงืจื™ื ืจื‘ื™ื, COUNT ื ื ื˜ืฉ ืœื—ืœื•ื˜ื™ืŸ ื•
    ื”ื•ื—ืœืฃ ื‘ื—ื™ืฉื•ื‘ ืขืจืš ืžืฉื•ืขืจ
  • ื‘ืžืงื•ื
    UPPER(s) LIKE JOHN%โ€™ 
    

    ืฉื™ืžื•ืฉ

    s ILIKE โ€œJohn%โ€
    

ื›ืœ ื‘ืงืฉื” ืกืคืฆื™ืคื™ืช ื”ื•ืืฆื” ืœืคืขืžื™ื ืคื™ 3-1000. ืœืžืจื•ืช ื”ื‘ื™ืฆื•ืขื™ื ื”ืžืจืฉื™ืžื™ื, ื‘ื”ืชื—ืœื” ื ืจืื” ืœื ื• ืฉืื™ืŸ ื˜ืขื ืœื‘ืฆืข ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืฉืื™ืœืชื” ืฉืœื•ืงื—ืช 10 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื” ืœื”ืฉืœืžืชื”, ื”ื™ื ืื—ืช ืž-3 ื”ืฉืื™ืœืชื•ืช ื”ื›ื‘ื“ื•ืช ื‘ื™ื•ืชืจ, ื•ืชื•ืคืกืช ืžืื™ื•ืช ื”ืื—ื•ื– ืžื–ืžืŸ ื”ื˜ืขื™ื ื” ื”ื›ื•ืœืœ ืฉืœ ืžืกื“ ื”ื ืชื•ื ื™ื. ืื‘ืœ ืขืœ ื™ื“ื™ ื”ื—ืœืช ืื•ืชื• ืžืชื›ื•ืŸ ืขืœ ืงื‘ื•ืฆืช ืฉืื™ืœืชื•ืช ืžืื•ืชื• ืกื•ื’, ื–ื›ื™ื ื• ื‘ื—ื–ืจื” ื‘ื›ืžื” ืื—ื•ื–ื™ื. ื›ื“ื™ ืœื ืœื‘ื–ื‘ื– ื–ืžืŸ ื‘ืกืงื™ืจื” ื™ื“ื ื™ืช ืฉืœ ื›ืœ ืžืื•ืช ื”ืฉืื™ืœืชื•ืช, ื›ืชื‘ื ื• ื›ืžื” ืกืงืจื™ืคื˜ื™ื ืคืฉื•ื˜ื™ื ืฉื”ืฉืชืžืฉื• ื‘ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืจื™ื™ื ื›ื“ื™ ืœืžืฆื•ื ืฉืื™ืœืชื•ืช ืžืื•ืชื• ืกื•ื’. ื›ืชื•ืฆืื” ืžื›ืš, ื—ื™ืคื•ืฉ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืงื‘ื•ืฆื•ืช ืฉืื™ืœืชื•ืช ืืคืฉืจ ืœื ื• ืœืฉืคืจ ืขื•ื“ ื™ื•ืชืจ ืืช ื”ื‘ื™ืฆื•ืขื™ื ืฉืœื ื• ื‘ืžืืžืฅ ืฆื ื•ืข.

ื›ืชื•ืฆืื” ืžื›ืš, ืื ื• ืขื•ื‘ื“ื™ื ืขืœ ืื•ืชื” ื—ื•ืžืจื” ื›ื‘ืจ ืฉืœื•ืฉ ืฉื ื™ื. ื”ืขื•ืžืก ื”ื™ื•ืžื™ ื”ืžืžื•ืฆืข ื”ื•ื ื›-30%, ื‘ืฉื™ืื™ื ื”ื•ื ืžื’ื™ืข ืœ-70%. ืžืกืคืจ ื”ื‘ืงืฉื•ืช, ื›ืžื• ื’ื ืžืกืคืจ ื”ืžืฉืชืžืฉื™ื, ื’ื“ืœ ืคื™ 10 ื‘ืขืจืš. ื•ื›ืœ ื–ื” ื”ื•ื“ื•ืช ืœืžืขืงื‘ ืžืชืžื™ื“ ืื—ืจ ืื•ืชืŸ ืงื‘ื•ืฆื•ืช ืฉืœ ื‘ืงืฉื•ืช TOP-MEDIUM. ื‘ืจื’ืข ืฉืžื•ืคื™ืขื” ื‘ืงืฉื” ื—ื“ืฉื” ื‘ืงื‘ื•ืฆืช TOP, ืื ื• ืžื™ื“ ืžื ืชื—ื™ื ืื•ืชื” ื•ืžื ืกื™ื ืœื–ืจื– ืื•ืชื”. ืื ื• ื‘ื•ื“ืงื™ื ืืช ืงื‘ื•ืฆืช MEDIUM ืคืขื ื‘ืฉื‘ื•ืข ื‘ืืžืฆืขื•ืช ืกืงืจื™ืคื˜ื™ื ืœื ื™ืชื•ื— ืฉืื™ืœืชื•ืช. ืื ืื ื• ื ืชืงืœื™ื ื‘ืฉืื™ืœืชื•ืช ื—ื“ืฉื•ืช ืฉืื ื• ื›ื‘ืจ ื™ื•ื“ืขื™ื ื›ื™ืฆื“ ืœื‘ืฆืข ืื•ืคื˜ื™ืžื™ื–ืฆื™ื”, ืื ื• ืžืฉื ื™ื ืื•ืชืŸ ื‘ืžื”ื™ืจื•ืช. ืœืคืขืžื™ื ืื ื• ืžื•ืฆืื™ื ืฉื™ื˜ื•ืช ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื—ื“ืฉื•ืช ืฉื ื™ืชืŸ ืœื™ื™ืฉื ืขืœ ืžืกืคืจ ืฉืื™ืœืชื•ืช ื‘ื• ื–ืžื ื™ืช.

ืœืคื™ ื”ืชื—ื–ื™ื•ืช ืฉืœื ื•, ื”ืฉืจืช ื”ื ื•ื›ื—ื™ ื™ืขืžื•ื“ ื‘ื’ื™ื“ื•ืœ ื‘ืžืกืคืจ ื”ืžืฉืชืžืฉื™ื ืคื™ 3-5 ื ื•ืกืคื™ื. ื ื›ื•ืŸ, ื™ืฉ ืœื ื• ืขื•ื“ ืืก ืื—ื“ ื‘ืฉืจื•ื•ืœ - ืขื“ื™ื™ืŸ ืœื ื”ืขื‘ืจื ื• ืฉืื™ืœืชื•ืช SELECT ืœืžืจืื”, ื›ืคื™ ืฉืžื•ืžืœืฅ. ืื‘ืœ ืื ื—ื ื• ืœื ืขื•ืฉื™ื ื–ืืช ื‘ืžื•ื“ืข, ื›ื™ ืื ื—ื ื• ืจื•ืฆื™ื ืงื•ื“ื ื›ืœ ืœืžืฆื•ืช ืœื—ืœื•ื˜ื™ืŸ ืืช ื”ืืคืฉืจื•ื™ื•ืช ืฉืœ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” "ื—ื›ืžื”" ืœืคื ื™ ื”ืคืขืœืช ื”"ืืจื˜ื™ืœืจื™ื” ื”ื›ื‘ื“ื”".
ืžื‘ื˜ ื‘ื™ืงื•ืจืชื™ ืขืœ ื”ืขื‘ื•ื“ื” ืฉื ืขืฉืชื” ืขืฉื•ื™ื” ืœื”ืฆื™ืข ืฉื™ืžื•ืฉ ื‘ืงื ื” ืžื™ื“ื” ืื ื›ื™. ืงื ื” ืฉืจืช ื—ื–ืง ื™ื•ืชืจ ื‘ืžืงื•ื ืœื‘ื–ื‘ื– ื–ืžืŸ ืฉืœ ืžื•ืžื—ื™ื. ื™ื™ืชื›ืŸ ืฉื”ืฉืจืช ืœื ื™ืขืœื” ื›ืœ ื›ืš ื”ืจื‘ื”, ื‘ืžื™ื•ื—ื“ ืžื›ื™ื•ื•ืŸ ืฉืขื“ื™ื™ืŸ ืœื ืžื™ืฆื™ื ื• ืืช ื’ื‘ื•ืœื•ืช ื”ื”ืจื—ื‘ื” ื”ืื ื›ื™ืช. ืขื ื–ืืช, ืจืง ืžืกืคืจ ื”ื‘ืงืฉื•ืช ื’ื“ืœ ืคื™ 10. ื‘ืžื”ืœืš ืžืกืคืจ ืฉื ื™ื ื’ื“ืœื” ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืœ ื”ืžืขืจื›ืช ื•ื›ืขืช ื™ืฉ ื™ื•ืชืจ ืกื•ื’ื™ ื‘ืงืฉื•ืช. ื”ื•ื“ื•ืช ืœ-caching, ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉื”ื™ื™ืชื” ืžื‘ื•ืฆืขืช ื‘ืคื—ื•ืช ื‘ืงืฉื•ืช, ื•ื‘ืงืฉื•ืช ื™ืขื™ืœื•ืช ื™ื•ืชืจ. ื–ื” ืื•ืžืจ ืฉืืชื” ื™ื›ื•ืœ ืœื”ื›ืคื™ืœ ื‘ื‘ื˜ื—ื” ื‘ืขื•ื“ 5 ื›ื“ื™ ืœืงื‘ืœ ืืช ืžืงื“ื ื”ืชืื•ืฆื” ื”ืืžื™ืชื™. ืœื›ืŸ, ืขืœ ืคื™ ื”ื”ืขืจื›ื•ืช ื”ืฉืžืจื ื™ื•ืช ื‘ื™ื•ืชืจ, ืื ื• ื™ื›ื•ืœื™ื ืœื•ืžืจ ืฉื”ืชืื•ืฆื” ื”ื™ื™ืชื” ืคื™ 50 ืื• ื™ื•ืชืจ. ื”ืคืขืœืช ืฉืจืช ืื ื›ื™ืช ืชืขืœื” ืคื™ 50 ื™ื•ืชืจ. ื‘ืžื™ื•ื—ื“ ื‘ื”ืชื—ืฉื‘ ื‘ื›ืš ืฉื‘ืจื’ืข ืฉืžื‘ืฆืขื™ื ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื–ื” ืขื•ื‘ื“ ื›ืœ ื”ื–ืžืŸ, ื•ื”ื—ืฉื‘ื•ืŸ ืขื‘ื•ืจ ื”ืฉืจืช ื”ืžื•ืฉื›ืจ ืžื’ื™ืข ืžื“ื™ ื—ื•ื“ืฉ.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”