ืื ื ืืฆืืข ืื ืืงืจืื ืืช ืืชืืืื ืฉื ืืื"ื ืฉื ื ืืงืืืื ืกืืืงืืืืืื "ืืืฉื ืชืขืฉืืืชืืช ืืืืื ืื PostgreSQL: ื ืืกืืืื ืขื ืืกืื ื ืชืื ืื"
Shared_buffers = 25% - ืืื ืื ืืจืื ืื ืืขื? ืื ืืืืืง ื ืืื? ืืื ืืชื ืืืืข ืื ืืืืืฆื - ืืืืืฉื ืช ืืืื - ืืชืืืื ืืืงืจื ืืกืคืฆืืคื ืฉืื?
ืื ืืืื ืืืฉืช ืืกืืืืืช ืืืืจืช ืคืจืืืจื postgresql.conf "ืืื ืืืืืจ". ืื ืืขืืจืช "ืืื ืจืื ืืืืืืืืื" ืขืืืืจืื ืื ืขืฆืืช ืืืืฉื ืืช ืืืืืจืื ืืืืืืื, ืืื ืขื ืกืื:
- ื ืืกืืืื ืืืืืชืื ืืงืคืื ืืช ืขื ืืกืื ื ืชืื ืื, ืฉืืืฆืขื ืืืืคื ืืืืืืื, ืืืืืืืช ืืืืืืช ืืืชื ืืื ืงืจืืืื ืืื ืืืคืฉืจ ื"ืงืจืืืื",
- ืืื ื ืืขืืืงื ืฉื ืืชืืื ืืช ืฉื DBMS ืืืขืจืืช ืืืคืขืื.
ืฉืืืืฉ ื-Nancy CLI (
ื ืืืจ ืขื ื ืืกืืืื ืขื ืืกืื ื ืชืื ืื. ืืื ืกืืคืืจ ืฉื ืืฉื ืงืฆืช ืืืชืจ ืืืฆื ืฉื ื.
ืืขื ืขืื. ื ืืกืืื ืขื Postgres ืืืชืจ ื-14 ืฉื ืื. ืืกืคืจ ืืืจืืช ืจืฉืชืืช ืืืจืชืืืช ืืืกืื. Postgres ืืื ืืืฉืืฉ ืืื ืืงืื.
ืื ืงืืืฆืช RuPostgres ื-Meetup, ืืงืื 2 ืืขืืื. ืื ืื ื ืืชืงืจืืื ืืื ืืื ื-2 ืืืฉ. RuPostgres.org.
ืืืืืฉืืื ืฉื ืื ืกืื ืฉืื ืื, ืืืื Highload, ืื ื ืืืจืื ืขื ืืกืื ื ืชืื ืื, ืืคืจื Postgres ืืืืชืืื.
ืืืฉื ืื ืืืืจืื ืืช, ืืชืืืชื ืืืืฉ ืืช ืคืจืงืืืงืช ืืืืขืืฅ ืฉืื Postgres 11 ืืืืจื ืืื ืืืื.
ืืืฉืขืฉืืชื ืืช ืื ืืคื ื ืืื ืฉื ืื, ืืืืชื ืื ืืคืกืงื ืืกืืืืช ืืขืืืื ืืื ืืช ืคืขืืื ืขื Postgres, ืื ืจืื ืืื 2010. ืืืคืชืขืชื ืขื ืืื ืฉืืจืช ืืขืืืื ืฉื DBA ืืฉืชื ืชื, ืืืื ืขืืืืช ืืคืืื ืขืืืื ืฆืจืืื ืืฉืืฉ. ืืืื ืืฉืืชื ืฉืืฉืื ืคื ืื ืืกืืจ, ืื ื ืฆืจืื ืืขืฉืืช ืืืชืจ ืืืื.
ืืืืืืื ืฉืืื ืืื ืืจืืืง, ืจืื ืืืงืืืืช ืืื ืืขื ื ืื. ืืืจืื ืืืจ ื ืขืฉื ืืืืืืืืช, ืืจืืจ. ืขืื ืขื ืื ืืืืฉื. ืืืืืจ, ืื ืื ืืืื ืืจืขืืื ืฉืฆืจืื ืืืืืช ืืกืคืจ ืืืื, ืืืืืจ, ืืืืืฉืื ืคืืืคืืจืื ืฉืชืืคืื ืืืขื ืืช ืื ืคืขืืืืช ื-DBA ืืืืืืืืืืช ืื ืฉื ืืชื ืืืื ืื ืื ืืกืคืจ ืจื ืฉื ืืกืื ื ืชืื ืื.
ืืื ืื ืื ืืืืื:
- "ืืืืจื ืืกืฃ" ืืืฆืืจืืช ืืื - ืืืืจ 8 GB ืื 25% shared_buffers ืืืชื ืชืืื ืืกืืจ. ืื ืืืื ืืจืื ืขื shared_buffers.
- ืืืจืืงืืจ "ืงืจืืืื".
ืืื ืืงืจื?
- ืืืื ืขืงืจืื ืืช ืืืคืืืืืืฆืื ืฉืื ื ืืืืฉืืื ืืืคืชืืื. ืืืื ืื ืืื ื ืจืขืืื ืืช ืฉืขืืืื ืืืจื ืืืืื ืฉืื ืื ืฉืื ืื ื ืืืฆืจืื ืืจืื ื-Open Source, ืืืืืจ ืื ืื ื ืขืืฉืื ืืช ืืืกืืก ื-Open Source. ืืชืจ ืขื ืื, ืืฉ ืื ื ืืจืืืกืื, ืื ืืชืงืฉืืจืช ืืื ืืืขืฉื ืงืื ืคืชืื. ืืชื ืืืื ืืจืืืช ืื ืื ืื ื ืขืืฉืื ืขืืฉืื, ืื ืืืื ืืืืืืจื ืืืื ืืื'.
- ืืื ืื, ืืืื ื ืืกืืื ืืกืืื ืืฉืืืืฉ ืืขืงืจืื ืืช ืืื, ืืืืื ืืื ืืืกืคืจ ืืืจืืช: ืืกืืืจืืืคืื ืงืื ืื ืืขื ืืืจืืช ืืืืืืช.
ืืื ืื ืื ืืชืคืชื?
ืจืืฉืืช, ืืืฉืืื ืืขืืงืจืืช ืฉื DBA, ืื ืืกืฃ ืืืืืืช ืืฆืืจืช ืืืคืขืื, ืคืจืืกืช ืืืืืืื ืืื', ืืื ืืืฆืื ืฆืืืืจื ืืงืืืง ืืืืืขื ืืช ืืืืฆืืขืื.
ืขืืฉืื ืื ืืืืืจ ืืื. ืื ืื ื ืืกืชืืืื ืขื ืื ืืืืจ, ืื ืื ื ืจืืืื ืืฉืื, ืืื ืืกืจืื ืื ื ืืื ืคืจืืื. ืื ืื ื ืืชืืืืื ืืืคืืจ ืืืืืจืืช ืจืื ืืืชืจ, ืืืจื ืืื ืขื ืืืืืื, ืืืืื ืื ืื ืืขืฉืืช ืขื ืื ืื ืื ืืืจืช.
ืืืฉ ืฉืชื ืืืฉืืช. Pg_stat_statements ืืื ืคืชืจืื ืืจืืจืช ืืืืื ืืืืืื ืฉืืืืชืืช ืืืืืืช. ืื ืืชืื ืฉื ืืืื ื Postgres ืืืืฆืขืืช pgBadger.
ืืื ืืืฉื ืืฉ ืืกืจืื ืืช ืจืฆืื ืืื. ืืืืฉื ืืจืืฉืื ื, ืืจืงื ื ืืช ืื ืืคืจืืืจืื. ืืื ื ืจืื ืืช ืืงืืืฆืืช SELECT * FROM ืืืืื ืฉืื ืืขืืืื ืฉืืื ื-"?" ืื "$" ืืื Postgres 10. ืื ืื ื ืื ืืืืขืื ืื ืื ืกืจืืงืช ืืื ืืงืก ืื ืกืจืืงืช seq. ืื ืืืื ืชืืื ืืคืจืืืจ. ืื ืชืืืืฃ ืฉื ืขืจื ื ืืืจ ืฉื ืชืงื ืื, ืื ืชืืื ืกืจืืงืช ืืื ืืงืก. ืื ืชืืืืฃ ืฉื ืขืจื ืฉืชืืคืก 90% ืืืืืื, ืกืจืืงืช ืืืืฉื ืชืืื ืืจืืจื, ืื Postgres ืืืืข ืืช ืืกืืืืกืืืงื. ืืื ืืกืจืื ืืืื ืฉื pg_stat_statements, ืืืจืืช ืฉืืืง ืืืขืืืื ืืชืืฆืขืช.
ืืืืกืจืื ืืืืื ืืืืชืจ ืฉื ื ืืชืื ืืืื ืืื ืฉืืชื ืื ืืืื ืืืจืฉืืช ืืขืฆืื "log_min_duration_statement = 0" ืืืื. ืืื ืขื ืื ื ืืืจ. ืืืชืื ืืื, ืืื ื ืจืืื ืืช ืื ืืชืืื ื. ืืฉืืืืชื ืืืฉืื, ืฉืืื ืืืืจื ืืืื, ืขืฉืืื ืืฆืจืื ืืืืช ืขืฆืืื ืฉื ืืฉืืืื, ืืื ืืชื ืื ืชืจืื ืืืชื ืื ืืื ืืชืืช ืืกืฃ ืฉืื.
ืืื DBAs ืคืืชืจืื ืืช ืืืขืืืช ืฉืื ืืืฆืืื?
ืืืืืื, ืืฆืื ื ืืขืื ืืืฉืื. ืื ืขืืฉืื ืืืจื ืืื? ืื ืืชื ืืคืชื, ืื ืืชื ืชืขืฉื ืืฉืื ืืืืคืข ืืืฉืื ืฉืืื ืื ืืืืชื ืืืื. ืื ืืชื DBA, ืื ืืฉ ืื ืืืืื. ืืืืื ืืืืืช ืจืง ืืื. ืืืื ืืื ืืคืืืืจ ืฉื ืฉืืฉื ืืืืฉืื. ืืืชื ืืืฉื ืฉืชืื ืืืคืงื. ืืืคืืื DBAs ืื ืืกืื ืืื ืืืืืง ืืืืฆืืจ, ืขื ืืขืชืง. ืืงืืจื ืฉืื ืืืฆืจืื ืืื ืืงืก ืืื ื, ืืืืืืื ืฉืืื ืขืืืจ, ืืืจืงืื ืืืชื ืื ืืชื ืื ืืืคืชืืื ืืื ืฉืืื ืืกื ืืืชื ืืงืืฆื ืืืืืจื. ืื ืืกืื ืืฉืืืืืช ืฉืงืืจืืช ืขืืฉืื. ืืื ืืขืื.
- ืืืื ื ืชืฆืืจืืช.
- ืืฆืข ืืืคืืืืืืฆืื ืฉื ืกื ืืืื ืืงืกืื.
- ืฉื ื ืืช ืฉืืืืชืช SQL ืขืฆืื (ืื ืืฉืืื ืืงืฉื ืืืืชืจ).
- ืืืกืฃ ืงืืืืืช (ืืืจื ืืงืื ืืืืชืจ ืืจืื ืืืงืจืื).
ืืฉ ืืจืื ืืืจืื ืฉืงืืจืื ืืืืจืื ืืืื. ืืฉ ืืจืื ืืืืืช ื-Postgres. ืืฉ ืืจืื ืื ืืืขืช. ืืฉ ืืจืื ืืื ืืงืกืื ื-Postgres, ืชืืื ืื ืืืืจืื ื ืืื ืก ืืื. ืืื ืื ืฆืจืื ืืืขืช, ืืื ืื ืฉืืืจื ืื-DBA ืืืจืืืฉ ืืืืื DBAs ืืชืจืืืื ืืืืื ืฉืืืจื. ืืืืืจ, ืืชื ืฆืจืื ืืืืื 10 ืฉื ืื ืืื ืืืชืืื ืืืืื ืืช ืื ืื ืืจืืื.
ืืื ื ืืืื ื ืื ืืงืกื ืืฉืืืจ ืืื. ืื ื ืจืืฆื ืืขืฉืืช ืืื ืืื ืฉืชืืื ืืื ืืืืืื, ืืฉืืื ืืื ืืืืืฆืื ืืื ืื.
ืืืืืืืช ืืืืืื ืืืืืชืืื
ืจืืืชื ืืช ืื ืืคืืืช ืืฉื ื ืคืจืืืงืืื, ืืืื ืฉืื. ืคืืกื ืืืจ ืืืืื ืืืืจ ืื ื ืฉืขืจื ืฉื 1 ืขืืืจ default_statistict_target ืืื ืืื. ืืืงืื, ืืื ื ื ืกื ืืช ืื ืืืคืงื.
ืืื ื ืื ืื ื ืืื, ืืขืืจืช ืืืื ืฉืื ื ืฉื ืชืืื ืืืืืจ ืืืชืจ, ืืขืืจืช ื ืืกืืืื ืืืืืจื ืืืืืข ืฉืขืืืื ืื ืื ื ืืืืจืื ืืืื, ื ืืื ืืืฉืืืช ืืื ืื ืฉืืื ืืืื ืื ืฉืืคื.
ืืืฉืืื ืื ืื ืื ื ืฆืจืืืื ืืืฆืืจ ื ืืกืื. ืืื ืืืจืื ืืืจืืขื ืืืงืื.
- ืืจืืฉืื ืืื ืืกืืืื. ืื ืื ื ืฆืจืืืื ืืชืืืช ืืืืจื. ืืืฉืื ื ืืืืข ืืืืื ืืืจื ืืืืชื ืขื ืืืื, ืื ื ืืืืจ ืืื ืืชืช ืื ืืช ืืืชื ืืืืจื ืืื ืืืืฆืืจ. ืขืืืจ ืื ืืื ืืืืืกืืจืื ืฉืื, ืื ื ืฆืจืื ืืคืืืช ืคืืกืช ืืืืจื ืืืช ืืื. ืื ืฉืืืื ืืืื ื ืืืจืืืืืืช ืืืฉื ืืืืืื ืื ืืืืื, ืื ืฉืื ื ืฆืจืื ืืืืืง ืืช ืืืชื ืืืืจื. ืืืืืจ, ืื ื ืจืืฆื ืืืฆืืจ ืืืืฉ ืืช ืืกืืืื. ืืืืืฉื ืืกืืืื ืื ื ืืืืืื ืืช ืืืจืกื ืืขืืงืจืืช ืฉื Postgres.
- ืืืืง ืืฉื ื ืืื ืืืฉื ืืืืงืจ ืฉืื ื. ืืื ืืกื ื ืชืื ืื. ื ืืชื ืืืฆืืจ ืืืชื ืืืื ืืจืืื. ืื ื ืืจืื ืื ืืื.
- ืืืืง ืืฉืืืฉื ืืื ืืขืืืก. ืื ืืจืืข ืืื ืงืฉื.
- ืืืืืง ืืจืืืขื ืืื ืื ืื ืื ื ืืืืงืื, ืืืืืจ ืื ื ืฉืืื ืืื. ื ื ืื ืฉื ืืื ืืฉื ืืช ืคืจืืืจ ืืื ืื ืืืชืจ ืืชืฆืืจื, ืื ืฉื ืืื ืืืฆืืจ ืืื ืืงืก ืืื'.
ืื ืื ื ืคืืชืืื ื ืืกืื. ืื ื pg_stat_statements. ืืฆื ืฉืืื ืื ืื ืฉืงืจื. ืืืืื - ืื ืงืจื.
ืืฉืืื default_statistics_target = 100, ืืืืื = 1. ืื ืื ื ืจืืืื ืฉืื ืขืืจ ืื ื. ืืกื ืืื, ืืื ืืฉืชืคืจ ื-000%.
ืืื ืื ื ืืืื ืืืื, ืืืื ืงืืืฆืืช ืฉื ืืงืฉืืช ื-pgBadger ืื ื-pg_stat_statements. ืืฉื ื ืฉืชื ืืคืฉืจืืืืช. ื ืจืื ืฉืืืง ืืืืงืฉืืช ืืจื ื-88%. ืืืื ืืืืขื ืืืืฉื ืืื ืืกืืช. ืื ืื ื ืืืืืื ืืืคืืจ ืืืชืจ ืคื ืืื ืื ืื ืื ื ืชืืืื ืืื ืืื ืฉืงืข. ืืชื ืฆืจืื ืืืืื ืื ืงืจื ืขื ืืกืืืืกืืืงื. ืืืืข ืืืชืจ ืืืืื ืืกืืืืกืืืงื ืืืืืืื ืืชืืฆืืืช ืืจืืขืืช ืืืชืจ.
ืื ืฉืื ืื ื ืื ืืืืืื ืืืคืืจ, ืืื ืืขืฉืืช "ALTER TABLE ... ALTER COLUMN" ืืืืืืืจ 100 ืืืืื ืืืืจื ืืกืืืืกืืืงื ืฉื ืืขืืืื ืืื. ืืื ืขื ื ืืกืื ื ืืกืฃ ื ืืื ืืืืื ืฉืืชืืงืื ืืื ืขืืจ. ืืช ืื. ืืืื ืืืฉื ืื ืืกืืช ืฉืขืืืจืช ืื ื ืืจืืืช ืืช ืืชืืื ื ืืืืืืช ืืืงืื ืืืืืืช ืขื ืกืื ื ืชืื ืื ืืื ืขื ืืื ืืืืืฆืื.
ืืื ืืืืืืืช ืืชืืืืื ืืืจืื. ืืฉื ื ืืืื ื CI ืืืืืงืืช ืืืฉื ืฉื ืื ืจืืืช. ืืฉืื ืคืจืืืงื ืืืขืชื ืื ืืืื ืืื ืืืืงืืช ืืืืืืืืืช.
ืืชืขืฉืืืช ืืืจืืช: ืืชืขืืคื, ืืชืขืฉืืืช ืืจืื, ืืฉืื ืื ื ืืืืงืื ืืืืืจืืืื ืืืงื, ืืฉ ืื ื ืื ืืคืฉืจืืช ืืขืฉืืช ื ืืกืืืื. ืื ื ืฉืืจ ืืฉืื ืืชืื ืฆืืืจ ืืฉืืจืืช ืืืื, ืื ืฉืื ื ืืงื ืืื ืืืื ืืช ืืืฉืื ืืืกืืื. ืืืฉื, ืืฉ ืื ืืจืช ืจืื.
ืื ื ืืืืืื ืืืกืืง ืืกืงื ืืช ืืชืฆืคืืืช ืขื ืชืขืฉืืืช ืืืจืืช.
ืจืืฉืืช, ืืฉ ืื ื ืกืืืื ืืืืืืช. ืื ืงืจืื ืืืืฆืืจ, ืืื ืื ืงืจืื. ืืชืืื ื ืืขืืงืจืืช ืฉืื ืืื ืฉืืื ืฆืจืื ืืืืืช ืืื, ืฉื ืืชื ืืืืืจ ืขืืื ืืืืืืืื ืืื ืืืคืฉืจ. ืืืืืืื ืืืืืช ืื ืืืื ืืืืืืื ืืืืฆืืข ื ืืชืื ืืคืืจื.
ืกืืืจ ืืื ืื ืฉืืืฉืจ ืื ื ืืฉืืจืื ืืืืก ืืืกืื, ืืฉ ืื ื ืคืืืช ืืืืื ืืช ืืืืื ืื ืืืืืืืจ ืฉื ืคื ื ืืื ืฃ ืืืฉืจ ืืื ืืจืช ืจืื. ืืฉ ืื ื ืืืชืจ ืืื ืืืืื. ืื ืื ื ืืืืืื ืืืจืฉืืช ืืขืฆืื ื ืืฉืืช ืขืื ืืืจืื ืืืืื ืฉืื ืื ื ืื ืืืืืื ืืืจืฉืืช ืืขืฆืื ื ืืืขืืืช ืขื ืืืืก ืืืืืืจ. ืืืชื ืืืจ ืขื Postgres. ืื ื ืขืฉืืืื, ืืืงืจืื ืืกืืืืื, ืืืคืฉืจ ืจืืฉืื ืืื ืฉื ืฉืืืืชืืช ืืืืื ื ืืกืืืื. ืืื ืื ื ืื ืจืืฆืื ืืขืฉืืช ืืช ืื ืืืคืงื. ืืืื ืืคืืื ื ืชืื ื ืืืคืฉืจ ืืืช ืืืืฆืขืืช auto_explain.
ืืืื ืฉืืืจืชื, ืจืื ืืืืื ืฉื ืืืืืืฆืื ืคืืจืืฉื ืฉืื ืื ื ืืืืฆืื ืขื ืืืคืชืืจ ืืืืืจืื. ืืื ืื ืฆืจืื ืืืืืช, ืืื ืฉืืืื ืืจืื ื ืืกืืืื, ืืื ืฉืื ืืืื ืืืจื.
ื ื ืกื CLI - ืืืกืืก ืฉื "ืืขืืืช ืืกืื ืื ืชืื ืื"
ืืื ืขืฉืื ื ืืช ืืืืจ ืืื. ืืืืืจ, ืืืืจืชื ืขื ืืจืขืืื ืืช ืืืื ืืืื ื, ืืคื ื ืืืขื ืฉื ื. ืืืืจ ืืฉ ืื ื ืืช ืื ืฉื ืงืจื ื ื ืกื CLI ืืงืื ืคืชืื. ืืื ืืืกืืก ืืื ืืืช ืืขืืืช ืืกื ื ืชืื ืื.
ืืืืื, ืืฉ ืืจืื ืขืืืื ืืคืืชืื. ืืฉ ืฉื ืืจืื ืจืขืืื ืืช. ืืื ืื ืืฉืื ืฉืื ืื ื ืืฉืชืืฉืื ืื ืืืขื ืื ืืื. ืืืฉืืฉ ืื ื ืจืขืืื - ืืื ืื ืฉืืืฉืจ ืื ื ืืืืงืื 40 ืฉืืจืืช, ืืื ืืกืชืื ื-IO, ืื ื ืืื ืืขืจืื ื ืืกืื ืืืืืื ืืืชืจ ืคืืจืื ืืืืื ืื ืงืืจื ืืื ืื ืกืืช ืืชืงื ืืช ืื ืชืื ืืื ืชื ืืขื. ืืืืืจ, ืื ืื ื ืขืืฉืื ื ืืกืื. ืืืืืื, ืื ื ืืฉื ืื ืืฉืื ืืจืืืื ืื ืงืืจื ืืกืืคื ืฉื ืืืจ. ืืื ืื ื ืื ืขืืฉืื ืืช ืื ืืืคืงื. ืื ืืืืช ืืจืขืืื.
ืืืคื ืื ืืืื ืืขืืื? ืื ืืืื ืืขืืื ืืืืคื ืืงืืื, ืืืืืจ ืืชื ืืืื ืืขืฉืืช ืืช ืื ืืื ืืงืื, ืืชื ืืืื ืืคืืื ืืืคืขืื ืืช ืื ืขื MacBook. ืื ืื ื ืฆืจืืืื ืืืงืจ, ืืื ื ืื. ืื ืืื. ืืชื ืืืื ืืืคืขืื ืืืชื ืืืงืจื ืืกืืื ืขื ืคืืกืช ืืืืจื, ืื ืืืืื ื ืืืจืืืืืืช, ืืื ืืงืื.
ืืืฉ ืื ืืืืื ืืช ืืจืืฅ ืืจืืืง ืืืืืื ื-EC2 Instance, ืื ืงืืืืช. ืืื ืืืืื ืืช ืืื ืืื ืืืื. ืืืืืื, ืืชืืื ืขืจืื ื ืืืชืจ ื-500 ื ืืกืืืื ืืืืคืข i3, ืืื ืืืฆืขืืจ ืืืืชืจ ืืืื ื-i3-16-xlarge. ื-500 ื ืืกืืืื ืขืื ืื ื 64 ืืืืจ. ืื ืืื ื ืืฉื 15 ืืงืืช. ืืืืืจ, ืืฉื ืืขืืืื ืฉืืฉืชืืฉืื ืฉื ืืกืคืืืื, ืื ืืืื ืืื - 70% ืื ืื, ืืืืื ืฉื ืืืืื ืืฉื ืืื. ืืชื ืืืื ืืขืฉืืช ืืจืื. ืืชื ืืืื ืืขืฉืืช ืืืงืจ ืืืืชื.
ืืฉืืืฉ ืืจืกืืืช ืขืืงืจืืืช ืฉื Postgres ื ืชืืืืช. ืื ืื ืื ืื ืงืฉื ืืกืืื ืืื ืืฉื ืื ืืื ืืช ืืืจืกื ื-12 ืืืืฉื.
ืื ื ืืืืืื ืืืืืืจ ืืืืืืงื ืืฉืืืฉ ืืจืืื. ืึถื:
- ืงืืืฅ dump/sql.
- ืืืจื ืืขืืงืจืืช ืืื ืืฉืืคื ืืช ืกืคืจืืืช PGDATA. ืืืื, ืื ื ืืงื ืืฉืจืช ืืืืืื. ืื ืืฉ ืื ืืืืืืื ืืื ืืจืืื ืจืืืืื, ืืชื ืืืื ืืขืฉืืช ืฉืืืืืื ืืฉื. ืื ืืฉ ืื ืขื ื ืื, ืืฉืจื ืขื ื ืืื ืืืืื ืืืืื ืืขืฉื ืืืช ืขืืืจื. ืืืื ืืืจื ืืืฉืืื ืืืืชืจ ืืฉืื ืืืฆืืจ ืืืืชื. ืื ืื ื ืืชืคืชืืื.
- ืืืฉืืื ืืืืจืื ื ืืชืืืื ืืืืงืจ ืืฉืจืืฆืื ืืืืื ืืื ืืฉืื ืขืืื ื-Postgres. ืื pgbench. ืืชื ืืืื ืืืฆืืจ ืืืืฆืขืืช pgbench. ืื ืจืง ืืคืฉืจืืช ืืืช ืฉื "db-pgbench". ืชืืื ืื ืืืืื ืงื ื ืืืื. ืืืื ืืืืฆืจ ืืขื ื, ืืืืืจ.
ืืืขื:
- ืื ืื ื ืืืืืื ืืืฆืข ืืช ืืืขืื ื ืืฉืจืฉืืจ SQL ืืื. ืื ืืืจื ืืื ืคืจืืืืืืืืช.
- ืืื ืื ื ืืืืืื ืืืงืืช ืืช ืืขืืืก. ืืื ืื ื ืืืืืื ืืืงืืช ืืช ืื ืงืืื ืื ืืืจื ืืืื. ืื ืื ื ืฆืจืืืื ืืืกืืฃ ืืช ืื ืืืืื ืื. ืืื ืืืื. ืื ื ืืจืื ืื ืืื. ืืืืืฆืขืืช pgreplay ืื ืื ื ืืฉืืงืื, ืืืืื ื ืื ื ืกื.
- ืื ืืคืฉืจืืช ืืืจืช. ืื ืฉื ืงืจื ืขืืืก ืืืืื, ืฉืื ื ืขืืฉืื ืืืืืฅ ืืกืืื. ืื ืืชืื ืืขืืืก ืื ืืืื ืฉืื ื ืขื ืืขืจืืช ืืืืืื, ืื ื ืฉืืืคืื ืืช ืงืืืฆืืช ืืืงืฉืืช ืืืืืืืืช. ืืืืืฆืขืืช pgbench ื ืืื ืืืงืืช ืืช ืืขืืืก ืืื ืืืขืืื.
- ืื ืฉืื ืื ื ืฆืจืืืื ืืืฆืข ืืืืฉืื SQL, ืืืืืจ ืื ืื ื ืืืืงืื ืกืื ืฉื ืืืืจืฆืื, ืืืฆืจืื ืฉื ืืื ืืงืก, ืืืฆืขืื ืฉื ANALAZE. ืืื ืื ื ืืกืชืืืื ืขื ืื ืฉืงืจื ืืคื ื ืืืืืงืื ืืืืจื ืืืืืงืื. ืืืืคื ืืืื, ืื SQL.
- ืื ืฉื ืฉื ื ืคืจืืืจ ืืื ืื ืืืชืจ ืืชืฆืืจื. ืื ืื ื ืืืืืื ืืืืจ ืื ื ืืืืืง, ืืืฉื, 100 ืขืจืืื ืืืืืื ืขืืืจ ืืกื ืื ืชืื ืื ืฉื ืืืจื-ืืืื ืฉืื ื. ืืชืื ืืื ืฉืขืืช ืชืืื ืื ืืชืืฆืื. ืืืื, ืืืงื ืื ืืกืคืจ ืฉืขืืช ืืคืจืืก ืืกื ื ืชืื ืื ืฉื ืืจื-ืืืื. ืืื ืืฉ ืชืืงืื ืืคืืชืื, ืืฉ ืื ื ืกืืจื ืืคืฉืจืืช, ืืืืืจ ืืชื ืืืื ืืืฉืชืืฉ ืืืืคื ืขืงืื ืืืืชื pgdata ืืืืชื ืฉืจืช ืืืืืืง. Postgres ืืืคืขื ืืืืฉ ืืืืืืื ืืืืคืก. ืืืชื ืืืื ืืืกืืข ืืช ืืขืืืก.
- ืืืืขื ืกืคืจืืื ืขื ืืืืจื ืฉื ืงืืฆืื ืฉืื ืื, ืืื ืืชืฆืืืื ืืฆื ืฉื pgstat***. ืืืืืจ ืืื ืืขื ืืื ืฉืืฉ ืื pg_stat_statements, pg_stat_kcacke. ืืื ืฉืชื ืืจืืืืช ืฉืื ืชืืืช ืืงืฉืืช. ื-pg_stat_bgwriter ืืืื ืื ืจืง ืกืืืืกืืืงื ืฉื pgwriter, ืืื ืื ืขื ืืืืกืื ืืืืฆื ื-backends ืขืฆืื ืืืืืคืื ืืืฆืฆืื ืืืืืืืื. ืืื ืื ืืขื ืืื ืืจืืืช. ืืืืืื, ืืืฉืจ ืื ื ืืืืืจืื shared_buffers, ืืขื ืืื ืืืื ืืจืืืช ืืื ืืืื ืืืืืคื.
- ืื ืืืื ื Postgres ืืืืขืื. ืฉื ื ืืืื ืื - ืืืื ืืื ื ืืืืื ืืฉืืขื ืืืขืื ื.
- ืชืืื ื ืืืฉื ืืืกืืช ืืื FlameGraphs.
- ืืื ืื, ืื ืืฉืชืืฉืช ืืืคืฉืจืืืืช pgreplay ืื pgbench ืืืคืขืืช ืืขืืืก, ืืคืื ืฉืืื ืืืื ืืงืืจื. ืืชืจืื ืืืืื ื-TPS. ืืคืฉืจ ืืืื ืืืืื ืืื ืื ืจืื ืืช ืื.
- ืืืืข ืืขืจืืช.
- ืืืืงืืช ืืขืื ื-IO ืืกืืกืืืช. ืื ืืืชืจ ืขืืืจ ืืืคืข EC2 ืืืืืื, ืืืฉืจ ืืชื ืจืืฆื ืืืฉืืง 100 ืืืคืขืื ืืืื ืืฉืจืฉืืจ ืืืืจืืฅ ืฉื 100 ืจืืฆืืช ืฉืื ืืช, ืื ืืืื ืื 10 ื ืืกืืืื. ืืืชื ืฆืจืื ืืืืื ืฉืืชื ืื ื ืชืงื ืืืืคืข ืคืืื ืฉืืืจ ืืืืื ืขื ืืื ืืืฉืื. ืืืจืื ืคืขืืืื ืืจืืื ืืืืืจื ืืื ืื ืฉืืจ ืื ืืฉืื ืืืขื. ืขืืืฃ ืืืฉืืื ืชืืฆืืืช ืืืื. ืืืขืืจืช sysbench ืฉื Alexey Kopytov, ืื ืื ื ืขืืฉืื ืืื ืืืืงืืช ืงืฆืจืืช ืฉืืืืขื ืื ืืชื ืืืื ืืืฉืืืช ืืืชื ืขื ืืืจืืช, ืืืืืจ ืชืืื ื ืืื ืืืขืื ืืชื ืื ืืืื ืืชื ืื ื-IO.
ืืื ืืงืฉืืื ืืืื ืืื ืืืชืืกืก ืขื ืืืืืื ืฉื ืืืจืืช ืฉืื ืืช?
ื ื ืื ืฉืื ื ืจืืฆืื ืืืืืจ ืขื ืืขืืืก ืืืืืชื ืืืืฆืขืืช ืืืื ืื. ืื ืจืขืืื ืืฆืืื ืื ืื ืืชืื ื-pgreplay ืืงืื ืคืชืื. ืื ืื ื ืืฉืชืืฉืื ืืื. ืืื ืืื ืฉืื ืืขืืื ืืื, ืขืืื ืืืคืฉืจ ืจืืฉืื ืฉืืืืชืืช ืืื ืขื ืคืจืืืจืื ืืชืืืื.
ืืฉ ืืื ืกืืืืืื ืขื ืืฉื ืืืื ืืืืชืืช ืืืื. ื ืจืืงื ืืช ืื ืืืืื ืืื. ืืฉืืื ืืขืืงืจืืช ืืื ืืื ืืชื ืืืื ืืืจืฉืืช ืืืช ืืขืฆืื ืื ืื?
ืืืขืื ืืื ืฉืืืื ืื ืื ืืืื. ืงืืื ืื, ืขืืื ืืืืื ืืืื ืืจื ืืืืชื ืืืืื. ืื ืืฉ ืื pg_stat_statements, ืืชื ืืืื ืืืฉืชืืฉ ืืฉืืืืชื ืื (ืืงืืฉืืจ ืืืื ืืืื ืืฉืงืืคืืืช) ืืื ืืืืื ืืขืจื ืืื ืืชืื ืืืืชืื ืืฉื ืืื.
ืื ืื ื ืืกืชืืืื ืขื ืืืจื ืืืงืฉื. ืื ืื ื ืืื ืืืื ืืช ืืขืืืื ืฉืืื ืคืจืืืจืื, ืืื ืื ืื ื ืืืืขืื ืืช ืืืจื ืืืงืฉื ืืื ืื ื ืืืืขืื ืืื ืคืขืืื ืืฉื ืืื ืืื ืืืฆืขื. ืื ื ืืื ืืืขืจืื ืืื ืืชืื ืืฉื ืืื ืืขืจื. ืื ืื ื ืขืืืืื ืืืขืืช ืคื ืฉื ืืื, ืืื ืืืืื ื ืืื ืืช ืืกืืจ ืื.
ืื ื ืืืืืื ืืจืืืช ืฉ-802 ืคืขืืื ืืฉื ืืื ืืืงืฉื ืืื ืืืืฆืขืช. ืืื ืื ื ืจืืืื ืฉ-bytes_per sec โ 300 kB/s ืืืืชืื ืคืืืก ืื ืืื ืืก. ืืืืื, ืื ื ืืืืืื ืืืจืฉืืช ืืขืฆืื ื ืืจืืื ืืื.
ืืื! ืืขืืืื ืืื ืฉืืฉ ืืขืจืืืช ืจืืฉืื ืฉืื ืืช. ืืืจืืจืช ืืืืื ืฉื ืื ืฉืื ืืื ืืืจื ืืื "syslog".
ืืื ืืฉ ืื syslog, ืื ืืืื ืืฉ ืื ืชืืื ื ืืื. ื ืืงื ืืช pgbench, ื ืคืขืื ืจืืฉืื ืฉืืืืชืืช ืื ืจืื ืื ืงืืจื.
ืืื ืจืืฉืื - ืื ืืขืืืื ืืฉืืื. ืงืืืื ื 161 TPS. ืขื syslog - ืื ืืืืืื ืื 000 ืืืืืื, ืื ืื ื ืืงืืืื 16.04 TPS. ืืื ื ืฉื ื ืืฉืชื ืฉืืืืช ืจืืฉืื ืืืจืืช, ืื ืืืฆื ืืจืื ืืืชืจ ืืื. ืืืืืจ, ืฆืืคืื ื ืฉืื ืืืจื, ืืื ืื ืืืืชื ืืืื.
ืื-CentOS 7, ืฉืื journald ืืฉืชืชืคืช ืื, ืืคืืืช ืืืื ืื ืืคืืจืื ืืื ืืจื ืืืืคืืฉ ืงื ืืื', ืื ืื ืกืืื ืฉื, ืื ืื ื ืืืจืืื 44 ืคืขืืื ื-TPS.
ืืขื ืื ืืืื ืื ืฉืื. ืืืขืชืื ืงืจืืืืช ืืืืจืืช, ืืขืืงืจ ืืืืืืช, ืงืฉื ืืืื ืืฉื ืืช ืืืช. ืื ืืชื ืืืื ืืืชืจืืง ื-syslog, ืืืงืฉื ืชืชืจืืง ืืื ื.
- ืืขืจืืช IOPS ืืืจืืืช ืืชืืื.
- ืืืืง ืืช ืืขืจืืช ืืจืืฉืื ืฉืื.
- ืื ืืขืืืก ืืืืื ืืืื ืืื, ืฉืงืื ืืืฆืข ืืืืื.
ืืฉ ืื ื pg_stat_statements. ืืคื ืฉืืืจืชื, ืื ืืืื ืืืืืช ืฉื. ืื ืืื ืืงืืช ืืืชืืจ ืื ืงืืืฆืช ืืงืฉืืช ืืฆืืจื ืืืืืืช ืืงืืืฅ. ืืื ื ืืื ืืืฉืชืืฉ ืืชืืื ื ื ืืื ืืืื ื-pgbench - ืืืื ืืืืืืช ืืืืกืืฃ ืืกืคืจ ืงืืฆืื ืืืืฆืขืืช ืืคืฉืจืืช "-f".
ืืื ืืืื ืืจืื "-f". ืืืชื ืืืื ืืืขืช ืืขืืจืช "@" ืืกืืฃ ืืืื ืฉืืชืืฃ ืฆืจืื ืืืืืช ืืื ืงืืืฅ. ืืืืืจ, ื ืืชื ืืืืจ ืฉืขืืฉืื ืืืช ื-10% ืืืืงืจืื, ืืื ื-20%. ืืื ืืงืจื ืืืชื ื ืืื ืฉืื ืื ื ืจืืืื ืืืคืงื.
ืืื ื ืืื ืื ืืฉ ืื ื ืืืืฆืืจ? ืืืื ื ืชื ืืืื? ืื ืงืฆืช ืืฆื. ืืฉ ืื ื ืขืื ืืืฆืจ ืืื
ืืื ื ืืื ืืกืืืืช ืงืฆืช ืืืจืืช. ืืกืืืืช ืฉืื ืืืืจ ืืื ื ืืกืคืืง. ืืืืืจ ืืชื ืื, ืืกืชืื ืขื ืืืกืืก, ืืกืชืื ืขื ืืืขืืืช ืฉืงืืืืืช. ืืืืื, ืืชื ืขืืฉื ืืืืงืช_ืืจืืืืช. ืื ืืชื DBA ืื ืืกื, ืื ืืชื ืขืืฉื health_check. ืืืงื ื ืืช ืืฉืืืืฉ ืืืื ืืงืกืื ืืื'. ืื ืืฉ ืื OKmeter, ืื ืืขืืื. ืื ื ืืืืจ ืืื ืื ืขืืืจ Postgres. OKmeter.io - ืืืงืฉื ืืชืงื ืืืชื, ืืื ื ืขืฉื ืืื ืืืื ืฉื. ืื ืืชืฉืืื.
ืื ืืื ืื ืืื, ืื ืืืจื ืืื ืืื ืื ืืจืื. ืื ืืืืจ, ืืฉ ืืืจื ืืื CPU, IO, ืืื ืขื ืืกืชืืืืืืืช, ืืื ืืื. ืืื ืื ื ืฆืจืืืื ืขืื. ืื ืื ื ืฆืจืืืื ืืจืืืช ืืื ืืืืืงืื ืืืืืืืื ืขืืื, ืืื ืืืืกืื ืขืืื, ื-io ืื ืื ื ืฆืจืืืื ืืืคืจืื ืืช ืืืืกืื ืื-bgwriter ืืืืงื ืืื ืืืืืจืืื ืืื'.
ืืืขืื ืืื ืฉืืฉืืชื ืขืืืจ ืืืืจื ืืืืื, ืืื ืื ืืืืื ืืืืฉื ืืฉืื ืืืืืจืืช. ืื ืื ืืืืืื ืืงื ืืช ืืืืืจืืช OKmeter. ืืืื ืื ืืงื ื ืืช ืื ืืขืื ืฉืืฉื ืืืืฉืื. ืื ืื ืืืืืื ืืกืคืง ืืืืืจืืช ืืื ืืืืืืช.
ืืืืขื ื ืืจืขืืื ืฉืื ืื ื ืฆืจืืืื ืืื ืืืืื ืฉืื ืืืจืฉ ืฉืื ืืชืงื ื, ืืืืืจ ืื ืฆืจืื ืืืชืงืื ืฉืื ืืืจ ืืืืฆืืจ. ืืชืงื ืืืชื ืืืืฉื ืื ืืื ืฉืื, ืื ืืฉืจืช ืชืฆืคืืช ืืืืงืื ืฉืื ืชืคืขืื ืืืชื. ืืืื ืื ืชื ืืจืื ืืืจืื: ืืขืจืืช ืืืคืขืื, ืืขืจืืช ืืงืืฆืื ื-Postgres ืขืฆืื, ืืืืฆืข ืืื ืฉืืืืชืืช ืงืืืช ืฉื ืืชื ืืืจืืฅ ืืฉืืจืืช ืืืืฆืืจ ืืฉืื ืืืจ ืื ืืืืฉื.
ืงืจืื ื ืืื Postgres-checkup. ืืืื ืืื ืจืคืืืืื, ืืืืืจ ืืืืืงืช ืืจืืืืช ืจืืืื. ืื ืื ื ืืฉื ืืจืื, ืื ืื ืืื ืชืืืืงื. ืืชื ืืืฆืข ืชืืืืงื ืืจืื ืฉืื ืื ืืฆื ืฉื ื ืื ืฉื ื, ืชืืื ืืืืชื. ืืื ืืชื ืขืืฉื ืชืืืืงื ืืืกืืก ืฉืื? ืืืืืจ, ืืื ืืชื ืขืืฉื ืืืงืจ ืืขืืืง ืืืืคื ืงืืืข? ืื ืืืื ืืืืขืฉืืช. ืื ืืชื ืขืืฉื ืืืืืืื, ืื ืชืขืฉื ืืืืงื, ืื ืื ืคืืืช ืืฉืื.
ืืืฉ ืื ื ืืื ืืื. ืืื ืืื ืืืืคืืข ืืืืคื ืคืขืื ืจืง ืืคื ื ืืฉืืืฉื ืืืืฉืื. ืืื ืขืืืื ืฆืขืืจ, ืืื ืืฉ ืฉื ืืจืื.
ืืืกืืฃ ืงืืืฆืืช ืืฉืืืืชืืช "ืืืฉืคืืขืืช" ืืืืชืจ - ืืืื ืขื K003 ื-Postgres-checkup
ืืืฉ ืงืืืฆืช ืืืืืช ืง' ืฉืืืฉื ืืืืืช ืขื ืื. ืืืฉ ืืื ืืื K003. ืืฉ ืืช ืืืืง ืืขืืืื ื-pg_stat_statements, ืืืืื ืืคื total_time.
ืืืฉืจ ืื ื ืืืืื ืื ืงืืืฆืืช ืืงืฉืืช ืืคื total_time, ืืืืง ืืขืืืื ืื ื ืจืืืื ืืช ืืงืืืฆื ืฉืืขืืืกื ืืช ืืืขืจืืช ืฉืื ื ืืื ืืจืื, ืืืืืจ ืฆืืจืืช ืืืชืจ ืืฉืืืื. ืืืืข ืื ื ื ืืชื ืฉื ืืงืืืฆืืช ืฉืืืืชืืช? ืื ืืจืงื ื ืืช ืืคืจืืืจืื. ืืื ืืืจ ืื ืืงืฉืืช, ืืื ืงืืืฆืืช ืฉื ืืงืฉืืช, ืืืืืจ ืื ืืืคืฉืืืช.
ืืื ื ืขืฉื ืืืคืืืืืืฆืื ืืืืขืื ืืืื, ื ืงื ืขื ืืืฉืืืื ืฉืื ื ืื ืืื ืืช ืืจืืข ืฉืื ื ืฆืืจื ืืฉืืจื. ืืืื ืืจื ืืืื ืืืื ืืืกืื ืืกืฃ.
ืืืื ืื ืื ืืจื ืืืื ืืืืืื ืืืคื ืืืฉืชืืฉืื, ืื ืืืื ืื ื ืจืื ืืงืจืื ื ืืืจืื, ืืื ืืืื ืืขืฆืื ืื ืฉืืื ืืื ืืืื 15 ืฉื ืืืช. ืืกื ืืื, ืื ืื ืื ื ืืืจืื ืฉืื ืื ื ืื ืจืืืื ืืืชื, ืืื ืื ืื ื ืขืืกืงืื ืืืฉืืืื.
ืื ืงืจื ืืืืื ืืื? ืฆืืืื ื ืฉืชื ืชืืื ืืช. Postgres_checkup ืืืชื ืื ืืืชื ืขืืืจ ืื ืืื: ืืื ืืืื, ืฉืืืืช, ืฉืืจืืช, shared_blks_read ืืื'. ืืื, ืืืืชื ืืืฉืื. ืืืขืื ืืืืืื ืขื pg_stat_statements ืืื ืฉืืื ืื ืืืืจ ืืชื ืืื ืืืคืก. ืื pg_stat_database ืืืืจ, ืื pg_stat_statements ืื ืืืืจ. ืืชื ืจืืื ืฉืืฉ ืืกืคืจ ืฉื 1, ืืื ืื ืื ื ืื ืืืืขืื ืืืืคื ืกืคืจื ื.
ืืื ื ืื ืื ื ืืืืขืื, ืื ื ืืฉ ืื ื ืฉืชื ืชืืื ืืช. ืื ืื ื ืืืืขืื ืฉืืืืชื ืืืงืจื ืืื ืืืืชื 56 ืฉื ืืืช. ืคืขืจ ืงืฆืจ ืืืื. ืืืืื ืืคื total_time. ืืื ื ืืื ืืืืืื, ืืืืืจ ืื ื ืืืืงืื ืืช ืื ืืืืืื ืืคื ืืฉื ืืืื. ืื ื ืืืง ืื ืืื ืืคื ืืฉื, ืืืื ืื ื ืืช ืืกืคืจ ืืฉืืืืช ืืฉื ืืื.
ืืฉืื ืืื, total_time per second ืืื ืืืื ืืืืขืืฃ ืขืืื. ืื ื ืืื ืืฉื ืืืช, ืืฉื ืืื, ืืืืืจ ืืื ืฉื ืืืช ืืงื ืืืขืจืืช ืฉืื ื ืืืฆืข ืืช ืงืืืฆืช ืืืงืฉืืช ืืื ืืฉื ืืื. ืื ืืชื ืจืืื ืฉื ืืืชืจ ืืฉื ืืื ืืฉื ืืื, ืื ืืืืจ ืฉืืืืช ืฆืจืื ืืชืช ืืืชืจ ืืืืื ืืืช. ืื ืืื ืืื ืืืื. ืืคืฉืจ ืืืืื ืฉืืืืจ ืืื, ืืืฉื, ืฆืจืื ืืคืืืช ืฉืืืฉ ืืืืืช.
ืื ืืืืข ืฉืื ื, ืืขืืื ืื ืจืืืชื ืืืจ ืืื ืืฉืื ืืงืื. ืฉืืื ืื - ืื ืืืจ ืืืื ืคืฉืื - ืฉื ืืื ืืฉื ืืื. ืืคืขืืื, ืืืฉืจ ืืืขืื ืฉืื ืืื 100%, ืื ืืฆื ืฉืขื ืืฉื ืืื, ืืืืืจ, ืืงืืฉืช ืืฆื ืฉืขื ืืขืฉืืช ืจืง ืืงืฉืืช ืืื.
ืืืืจ ืืื ืื ื ืจืืืื ืฉืืจืืช ืืฉื ืืื. ืื ืื ื ืืืืขืื ืืื ืฉืืจืืช ืืฉื ืืื ืื ืืืืืจ.
ืืื ืืฉ ืื ืืืจ ืืขื ืืื. ืืื shared_buffers ืื ื ืงืืจืืื ืืฉื ืืื ืืชืื shared_buffers ืขืฆืื. ืืืืืืื ืืืจ ืืื ืฉื, ืืืงืื ื ืืช ืืฉืืจืืช ืืืืืืื ืฉื ืืขืจืืช ืืืคืขืื ืื ืืืืืกืง. ืืืคืฉืจืืช ืืจืืฉืื ื ืืื ืืืืจื, ืืืฉื ืืื ืขืฉืืื ืืืืืช ืืืืจื ืื ืื, ืืืชืื ืืืฆื.
ืืืืจื ืืฉื ืืื ืืืืืื ืืื ืืืืง ืืช ืืกืคืจ ืืืงืฉืืช ืืงืืืฆื ืื. ืืขืืืื ืืฉื ืืื ืชืืื ืชืืื ืื ืฉืืืืชื ืืืช ืืืืืงืช ืืื ืฉืืืืชื. ืืื ืื ืืขื ืืื - ืืื ืืืคืืืช ืืฉื ืืื ืืื ืืืงืฉื ืืื. ืื ืื ื ืืืืขืื ืืื ืืฉืืืืชื ืืื ืืชื ืืืช ืืืืืฆืข. ื ืืจืฉื 101 ืืืืืฉื ืืืช ืืื ืืงืฉื. ืื ืืืื ืืืกืืจืชื ืฉืื ืื ื ืฆืจืืืื ืืืืื.
ืืื ืฉืืจืืช ืืืืืจื ืื ืฉืืืืชื ืืืืืฆืข? ืื ื ืจืืืื 8 ืืงืืืฆื ืืื ืืืืจืช. ืืืืืฆืข, ืืื ื ืืงื ืืืืืืื ืื ืงืจื. ืื ืื ื ืจืืืื ืฉืืื ืฉืืืจ ืืคื. ืืืืืื ืืืฆืงืื ืืงืืืฆื ืืจืืฉืื ื.
ืืืืืจืืืช ืืจืืืขืืช ืืื ืฉืืจื ืืื ืืื ืืืื ืืืกื ืืื. ืืฉ ืื ื ืฉืืืืช. ื ื ืื 1. ืืื ืื ื ืืืืืื ืืืืื ืืืื ืชืจืืื ืืงืืืฆื ืืื ืชืืจืืช. ืื ื ืจืืืื ืฉืืืงืจื ืื ืืงืืืฆื ืืจืืฉืื ื ืชืืจืืช ืคืืืช ื-000%. ืืืืืจ, ืื ืื ืื ืืืื ืฉืื ืื ื ืื ืจืืืื ืืช ืื ืืชืืื ื ืืืืืืช. ืืืงืืืฆื ืืฉื ืืื ืืื 000% ืขื ืฉืืืืช. ืืืืืจ, 0,01% ืืืื ืืฉืืืืช ืื ืืงืืืฆื ืืฉื ืืื.
ืื Total_time ืืขื ืืื. ืืฉืงืขื ื 14% ืืืื ืืขืืืื ืืืืื ืฉืื ื ืืงืืืฆืช ืืืงืฉืืช ืืจืืฉืื ื. ืืืฉื ื - 11% ืืื'.
ืื ื ืื ืืื ืก ืืคืจืืื, ืืื ืืฉ ืฉื ืืงืืืืช. ืื ื ืืฆืืืื ืฉืืืื ืืืืง ืืขืืืื, ืืืืืื ืฉืืืฉืจ ืื ื ืืฉืืืื, ืชืืื ืืช ืืฆื ืขืฉืืืืช ืืฆืืฃ, ืืืืืจ, ืืืง ืืืืงืฉืืช ืขืืืืืช ืืืคืื ืืื ืืืืืืช ืืืืืช ื ืืืืืช ืขืื ืืฉื ืืื, ืืขืื ืฉืืืง ืืืฉืืช ืขืฉืืืืช ืืืืคืืข. ืืฉื ืื ื ืืืฉืืื ืืช ืืฉืืืื. ืื ืืชื ืจืืื 0, ืื ืื ืืื. ืืื ืฉืืืืืช. ืื ืฉืืขืืจ ืืฉืืืืืช ืืื ืขื 20%, ืื ืืกืืจ.
ืืืจ ืื ื ืืืืจ ืื ืืฉื ืฉืื ื. ืื ืื ื ืฆืจืืืื ืืขืฆื ืืช ืขืืืก ืืขืืืื. ืื ืื ื ืืืงืืื ืืช ืื ืืืืขืื ืืืื ืืืืืืื ืขื ืฉื ืืืข ื-80% ืื 90%. ืืืจื ืืื ืืืืืจ ืขื 10-20 ืงืืืฆืืช. ืืื ืื ื ืขืืฉืื ืงืืฆืื ืขืืืจ pgbench. ืื ืื ื ืืฉืชืืฉืื ืืืงืจืื ืฉื. ืืคืขืืื ืื, ืืืจืื ืืฆืขืจ, ืื ืืกืชืืจ. ืื-Postgres 12 ืืืื ืืืืื ืืืืช ื ืืกืคืืช ืืืฉืชืืฉ ืืืืฉื ืื.
ืืื ืื ืื ื ืืจืืืืืื 80-90% ื-total_time ืืืจื ืื. ืื ืขืื ืืฉืื ืืืจื "@"? ืื ืื ื ืืกืชืืืื ืขื ืืฉืืืืช, ืจืืืื ืืื ืขื ืืื ืืฉ ืืืืื ืื ืฉืื ืื ื ืืืืืื ืืื ืื ืื ืืจืื ืจืืืืช. ืืืืืืืื ืืืื ื ืืื ืืืืื ืืืฆื ืืืื ืื ืืื ืืืงืืฆืื. ืืืจื ืื ืื ืื ื ืืฉืชืืฉืื ื-pgbench ืืืืืืื ืืขืืืื.
ืืฉ ืื ื ืื K001 ื-K002.
K001 ืืื ืืืจืืืช ืืืช ืืืืื ืขื ืืจืืข ืชืช-ืืืจืืืืช. ืื ืืืคืืื ืืช ืื ืืขืืืก ืฉืื ื. ืจืื ืขืืืื ืฉื ืืื ืืฉืืจืช ืืฉื ื ืฉื ืืื. ืื ื ืจืืืื ืฉืืขืจื ืฉื ืืื ืืืฆื ืืฉื ืืื, ืืืืืจ ืื ืืฉ ืฉืชื ืืืืืช, ืื ืื ืืืื ืืื. ืชืืื ืงืืืืืช ืฉื ื-75%. ืืื ืืขืืื ืืื. ืื ืืฉ ืื ื 10 ืืืืืช, ืื ืืืจื ืืื ื ืืื ืจืืืขืื. ืื ื ืืื ืืืขืจืื ืืฉืืืื.
K002 ืื ืื ืฉืื ื ืืื ื ืืืืงืืช ืฉืืืืชืืช, ืืืืืจ SELECT, INSERT, UPDATE, DELETE. ืืื ืคืจื SELECT FOR UPDATE, ืื ืื ืื ืขืื.
ืืืื ื ืืื ืืืกืืง ืฉ-SELECT ืืื ืงืืจืืื ืจืืืืื - 82% ืืืื ืืฉืืืืช, ืื ืืืงืืื - 74% ื-total_time. ืืืืืจ, ืื ื ืงืจืืื ืืจืื, ืืื ืฆืืจืืื ืคืืืช ืืฉืืืื.
ืืื ืื ื ืืืืจืื ืืฉืืื: "ืืื ื ืืื ืืืืืจ ืืช ื-shared_buffers ืื ืืื ืื?" ืื ื ืืืืื ืฉืจืื ืืืืืื ืืืืกืกืื ืขื ืืจืขืืื - ืืื ื ืจืื ืื ืชืืื ืืชืคืืงื, ืืืืืจ ืื ืชืืื ืืชืคืืงื. ืื ื ืืื ืืืจื ืืื ื-TPS ืื QPS.
ืืื ืื ื ืื ืกืื ืืกืืื ืืื ืฉืืืชืจ ืขืกืงืืืช ืืฉื ืืื ืืืืืื ืืช ืืืืฆืขืืช ืคืจืืืจื ืืืื ืื. ืื ื ืืืืืง 311 ืืฉื ืืื ืืืืืจื.
ืืื ืืฃ ืืื ืื ื ืืกืข ืืขืืืื ืืืืืจ ืืืืชื ืืืืื ืืืืืจืืช. ืื ืืืคืฉื. ืืืชื ืืืจ ืขื ืืกืื ื ืชืื ืื. ืื ืื ื ืื ืฆืจืืืื ืื ืกืืข ืืืืื ืืืืืจืืช, ืืืฃ ืืื ืื ืขืืฉื ืืืช. ืืฃ ืืื ืื ืื ืืืืฆืืจ, ืฉืืฉ ืื 100% ืืขืื. ืืื ื, ืืืื ืืืฉืื ืื, ืืื ืื ืื ืืื.
ืืจืขืืื ืืื ืฉืืืจื ืืื ืื ืื ื ื ืืกืขืื ื-20 ืืืื ืืืงืืืืืช, ืจืฆืื ืื ืืืชืจ ื-50%. ืืื ืื ื ืื ืกืื ืืืืขื ืืช ืืื ืืชืืืื ืขืืืจ ืืืฉืชืืฉืื ืฉืื ื ืืขื ืืื. ืืืืืจ, ืขืืื ื ืืกืืื ืืช ืืืคืชืืจืื ืื ืฉืืืื ืืื ืืืื ืืืืื ืืืืืจืืช ืฉื 20%, ืืชื ืื. ืืื ืจืขืืื ืฉืื ื ืื ืกืื ืืืฉืชืืฉ ืื ืื ืื ืืกืืืื ืฉืื ื.
ืืืืกืืฃ, ืืืืฆืืช:
- ืืงืคื ืืขืฉืืช ืืขืืืช ืืกื ื ืชืื ืื.
- ืื ืืคืฉืจ, ืขืฉื ืืืช ืืคื ืืจืืฉื ืื ืฉืืชืคืชื ืืืื ืื - ืฉืืงื ืืืจืืงื. ืื ืืฉ ืื ืขื ื ืื, ืื ืื ืืืื ืืืืื, ืืืืืจ ืืฉ ืื ืืจืื ืขืืืื.
- ืืื ืกืงืจื. ืืื ืืฉืื ืื ืืกืืจ, ืื ืืืงื ืขื ื ืืกืืืื ืืื ืืื ืืชื ืื. ื ืืชื ืืืฉืชืืฉ ืื ื ืกื ืืื ืืืื ืืช ืขืฆืื ืืื ืืืืืง ืืื ืืืกืืก ืขืืื.
- ืืฉืืืฃ ืืืื ืืืื ืืื ืชืืืื.
- ืืื ืชืคืืื ืืืงืืจืืช Postgres. ืืืฉืจ ืืชื ืขืืื ืขื ืืงืืจืืช, ืืชื ืืืื ืืืขืช ืื ืืืืช. ืืฉ ืฉื ืืจืื ืืขืจืืช, ืืื ืืืกืืจ ืฉื.
- ืืืืืง ืืช ืชืงืื ืืช ืืกื ืื ืชืื ืื ืืืืคื ืงืืืข, ืืคืืืช ืคืขื ืืฉืืืฉื ืืืืฉืื, ืืืืคื ืืื ื, ืื Postgres-checkup.
ืฉืืืืช
ืชืืื ืจืื! ืืืจ ืืืื ืืขื ืืื.
ืฉืชื ืืชืืืืช.
ืื, ืฉื ื ืืืงืื. ืจืง ืฉืื ืื ืื ืืื ืชื. ืืฉื ื ืกื ืืื ื ืขืืืืื, ืืื ื ืืื ืืฉื ืืช ืจืง ืคืจืืืจ ืืื ืื ืงืืืฆื ืฉืืื?
ืืฉ ืื ื ืคืจืืืจ ืชืฆืืจืช ืืืชื. ืืชื ืืืื ืืคื ืืช ืืฉื ืืื ืฉืืชื ืจืืฆื ืืืช ืืืช. ืืื ืืชื ืฆืจืื ืืืืื ืฉืืืฉืจ ืืชื ืืฉื ื ืืจืื ืืืจืื, ืืชื ืืืื ืืืกืืง ืืช ืืืกืงื ืืช ืืื ื ืืื ืืช.
ืื. ืืื ืฉืืืชื? ืื ืงืฉื ืืขืจืื ื ืืกืืืื ืืฉืืฉ ืื ืจืง ืคืจืืืจ ืืื. ืืชื ืืืืง ืืช ืื, ืชืจืื ืืื ืื ืขืืื. ืืืฆืืชื ืืืชื ืืืืฆื. ืืื ืืชื ืืชืืื ืืช ืืื.
ืืชื ืืืื ืืืืง ืืืชื ืืืืชื ืืื, ืืื ืื ืชืืื ืืืฆื, ืืืืื. ืืื ืขืืืฃ ืืืืืง ืจืขืืื ืืื. ืืื ืื ื ืจืขืืื ืืชืืื. ืืื ืื ื ืืฆื ืืืื ืงืจืื. ืืื ืฉืชื ืืืืจืืช. ืืื ืืฆืืื ื ืืืืื ืืื ืืฉ ืืืื ืืืื. ืืขืื ืืจืขืืื ืฉืฆืจืื ืืืฉืชืืฉ ืืืืืืืืืื ืืื ืืืืื ืืืืฆืื ืืืืคื ืขืงืื ืื ืืืืื. ืืชื ืืืื ืืื ืืืคืื ืืฆื ืืืคืจืืืจืื ืืืื, ืืื ืจืืข ืืื' ืืื ืืืืฉ.
ืืืฉ ืขืื ืฉืืื ืืืช. ืืคืจืืืงื ืฆืขืืจ ืืืชืคืชื. ืืชืืขืื ืืืจ ืืืื, ืืื ืืฉ ืชืืืืจ ืืคืืจื?
ืืฆืจืชื ืฉื ืงืืฉืืจ ืกืคืฆืืคืืช ืืชืืืืจ ืืคืจืืืจืื. ืื ืฉื. ืืื ืืจืื ืืืจืื ืขืืืื ืื ืฉื. ืื ื ืืืคืฉ ืื ืฉืื ืืขืื ืืขืืช ืืืืืช. ืืื ื ืืืฆื ืืืชื ืืฉืื ื ืืืคืืข. ืื ืืืื ืืื ืื. ืืืฉืื ืืืจ ืขืืื ืืืชื, ืืืฉืื ืขืืจ ืืขืฉื ืฉื ืืฉืื. ืืื ืืชื ืืขืื ืืื ืื ืืฉื ืื, ืชื ืืฉืื ืขื ืื ืฉืืกืจ.
ืืจืืข ืฉื ืื ื ืืช ืืืขืืื, ืืืื ืืืื ืืฉืื. ืืื ื ืจืื. ืชืืื!
ืฉืืื! ืชืืื ืขื ืืืืืื! ืจืืืชื ืฉืืฉ ืชืืืื ืืืืืื. ืืื ืืฉ ืชืืื ืืืช ืืชืืื ื-GSP?
ืฉืืื ืืืื. ืืชืืื ื ืืขืฉืืช ืืช ืื. ืืืงืคืื ื ืืช ืื ืืขืช ืขืชื ืื ืื ืื ื ืจืืฆืื ืืืกืื ืืกืฃ. ืืืืืจ, ืืฉ ืชืืืื ืืืืฆืขืืช run on localhost. ืืชื ืืืื ืืืฆืืจ ืืืคืข ืืขืฆืื ืืืขืืื ืืืืคื ืืงืืื. ืืื, ืื ืื ืฉืื ืื ื ืขืืฉืื. ืื ื ืขืืฉื ืืช ืื ื-Getlab, ืฉื ื-GSP. ืืื ืื ืื ื ืขืืืื ืื ืจืืืื ืืช ืืืขื ืืขืฉืืช ืจืง ืชืืืืจ ืืื, ืื ืืืืื ืืื ืืงืืืืช ืืืืื. ืืฉ ??? ืืงืจืื, ืืื ืืฉ ืืื ืืืืืืช. ืจืืฉืืช, ืชืืื ืืฉ ืืื ืจืง 70% ืื ืื ืืื ืืคืฉืจ ืืฉืืง ืขื ืืืืืจ ืฉื. ืืกืคืืืื, ืื ืื ื ืืขืืื ืืช ืืืืืจ ื-5-10% ืืื ืืืคืืืช ืืช ืืกืืืจืืช ืฉืชืืขืื. ืืืืืจ, ืืชื ืฉืืืจ ืืชืืื, ืื ื ืืชื ืืงืืช ืืืชื ืืื ืืื ืขืช. ืื ืชืฆืืข ืงืฆืช ืืืชืจ ืืืื ืืื ืฉืืฆืืขืื ืืืจืื, ืชืืจืื ืืืชื ืืืืืจ ืืืชืจ. ืืืืื ืืฉ ืคืจืืื ืฉืื ืื ืืืืืืื. ืืืฉ ืขืื ืืืืื ืืจืืขื ืืืื - ืื ืืืื ืจืง 24 ืฉืขืืช. ืืืคืขืืื ืื ืื ื ืจืืฆืื ืืืคืขืื ื ืืกืื ืืืฉื 5 ืืืื. ืืื ืืชื ืืืื ืืขืฉืืช ืืืช ืื ืงืืืืช; ืืชืืื ืืคืขืืื ื ืืฉืืื ืืืืฉืื.
ืฉืืื! ืชืืื ืขื ืืืืืื! ืืืืจืช ืืืืงื. ืืื ืืืฉืืื ืฉืืืืืช stat_statements?
ืฉืืื ืืืื ืืืื. ืื ื ืืืื ืืืจืืืช ืืืกืคืจ ืื ืืคืืจืื ืจื. ืืงืฆืจื, ืื ื ืืกืชืืืื ืืืฆื ืกื ืงืืืฆืืช ืืืงืฉืืช ืฆืฃ: ืืื ื ืคืื ืืืื ืืืฉืืช ืืืคืืขื. ืืื ืื ืื ื ืืกืชืืืื ืขื ืฉื ื ืืืืื: total_time ืืฉืืืืช, ืื ืืฉ ืฉืชื ืฉืืืืืช. ืืื ืื ื ืืกืชืืืื ืขื ืืชืจืืื ืฉื ืืงืืืฆืืช ืืฆืคืืช. ืืฉ ืฉืชื ืชืชื ืงืืืฆืืช: ืืื ืฉืขืืื ืืืื ืฉืืืืขื. ืืืื ื ืจืื ืื ืืชืจืืื ืฉืืื ืืชืืื ื ืืืืืืช.
ืืชื ืื ืืคืื ืฉืืื ืืกืชืืื ืืฉื ืคืขืืืื ืื ืฉืืืฉ ืืืืื ืืืื ืฉืืื ืืชืืื ืืช?
ืืืืืจ, ืื ื ืจืฉืื ืฉืื ืื ืื?
ืืืืืื, ืืงืฉื ืื ืืืจ ืงืืื ืคืขื ืืืช, ืืืจ ืื ืืื ืืฉืื ืงืืื, ืืืจ ืื ืืื ืฉืื ืืฉืื ืงืืื. ืืืฉืืช ืคื ืืฉืื, ืืืืคื ืื ืื?
ืฉืืื ืืืื, ื ืฆืืจื ืืืกืชืื.
ืขืฉืืชื ืืืจ ืืืื. ืื ืืื ืืืชืจ ืคืฉืื, ืืืืื, ืขืฉืืชื ืืช ืื ืืื. ืืื ืืืืชื ืฆืจืื ืืืคืก, ืืืคืก stat_statements ืืืืืื ืืืื ืชืืื ืช ืืืฆื ืฉืืื ืคืืืช ืืฉืืจ ืืกืืื, ืฉืขืืืื ืื ืืืืข ืืชืงืจื ืฉื ืืื stat_statements ืืืื ืืืฆืืืจ ืฉื. ืืืืื ื ืฉืื ืืื ืฉืกืืืจ ืืื ืื ืฉืฉืื ืืืจ ืื ื ืขืงืจ.
ืื ืื.
ืืื ืื ื ืื ืืืื ืืื ืืืจืช ืืขืฉืืช ืืช ืื ืืฆืืจื ืืืืื ื.
ืืฆืขืจื, ืื ื ืื ืืืืจ ืืืืืง ืื ืื ืื ื ืืฉืชืืฉืื ืืืงืกื ืืฉืืืืชื ืฉื ืื ื-queryid ืขื pg_stat_statements ืืืชืืงืืื ืื. ืื ื ืชืืงื ื-queryid, ืื ืืชืืืืจืื ืื ื ืืฉืืืื ืืืจืื ืืืืื.
ืื, ืืคืฉืจ ืืืืจืื ืืืชื ืืฆืืช ืืื ืคืขืืื ืืื ืฆืืืื ืืชืืื ืืช ืืืืื ืฉืื.
ืขื ืืืชื ืชืขืืืช ืืืืช?
ืื.
ืื ืื ื ื ืืื ืืช ืื. ืฉืืื ืืืื. ืื ืื ื ืฆืจืืืื ืืืืื ืืช ืื. ืืื ืืขืช ืขืชื, ืื ืฉืื ื ืจืืืื ืืชืื 0...
ืื, ืืืืื, ืืงืจื ื ืืืจ, ืืื ืืืืชื ืืืื ืืฉืืืืืชื ืฉ-stat_statemetns ืืืืืื ืืขืงืืจ ืฉื.
ืืืืืื ืืืืืช ืืจืื ืืืจืื ื-Pg_stat_statements. ื ืชืงืื ื ืืขืืืื ืฉืื ืืฉ ืื track_utility = ืืืคืขื, ืื ืื ืืกืืื ืฉืื ื ืืฆืืื ืืืขืงื.
ืื, ืืืืื.
ืืื ืืฉ ืื Java hibernate, ืฉืืื ืืงืจืื, ืื ืืืืช ื-hash ืืชืืืื ืืืืืช ืืืืงืืช ืฉื. ืืืจืืข ืฉืืชื ืืืื ืืคืืืงืฆืื ืขืืืกื ืืืื, ืืชื ืืืืข ื-50-100 ืงืืืฆืืช. ืืืื ืฉื ืคืืืช ืื ืืืชืจ ืืฆืื. ืืืช ืืืจืืื ืืืืืื ืืื ืืื ืืืืืื ืืช pg_stat_statements.max.
ืื, ืืื ืืชื ืฆืจืื ืืืขืช ืืื. ืืืืืฉืื ืื ืื ื ืฆืจืืืื ืืคืงืื ืขืืื ืขืื. ืื ืื ืฉืื ื ืขืืฉื. ืืืืืจ, ืืฉ ืื pg_stat_statements.max. ืืื ื ืจืืื ืฉืืืื ืืฆืืืื ืื ืืืขืชื ื-70%. ืืกืืจ, ืื ืื ืืืืื ื ืืืื. ืืืื ื ืชืืคืก. ืืฉืื ืืืกืืื. ืื ืชืืื ืช ืืืฆื ืืืื ืืื ืคืืืช ื-70, ืกืืืจ ืืื ืื ืฉืื ืืืืืช ืืืื ืฉืื.
ืื. ืืจืืจืช ืืืืื ืืื ืืขืช 5. ืืื ืืกืคืืง ืขืืืจ ืื ืฉืื ืจืืื.
ืืืจื ืืื ืื.
ืืืืื:
ื .ื ืืฉืื, ืืืกืืฃ ืฉืื Postgres ืืืื ื ืชืื ืื ืกืืืืื ืืื ื ืืชื ืืืืื ืืืชื ืืกืืืืช ืืืืืงื, ืื ืืชื ืืืื ืืืฉืชืืฉ
ืืงืืจ: www.habr.com