ืชืืืื ืืื"ื ืฉื ืืืืกืื ืืกืืืกืงื ืืฉื ืช 2015 "ืฆืืืื ืขืืืงื ืืชืื ืกืืืืกืืืงื ืคื ืืืืช ืฉื PostgreSQL"
ืืชื ืืืชืืจ ืฉื ืืืชื ืืื"ื: ืื ื ืืฆืืื ืฉืืื ืื ืืื ืื ืืืืืจ 2015 - ืืืคื ืืืชืจ ื-4 ืฉื ืื ืืขืืจ ืืจืื ืืื. ืืืจืกื 9.4 ืื ืืื ื ืืืื ืืื ื ื ืชืืืช ืขืื. ืืืืื 4 ืืฉื ืื ืืืืจืื ืืช ืืฆืื 5 ืืืืืจืืช ืืืฉืืช ืืื ืืฉ ืืจืื ืืืืืฉืื, ืฉืืคืืจืื ืืฉืื ืืืื ืืืื ืกืืืืกืืืงื ืืืืง ืืืืืืจ ืืืืฉื ืืื ืจืืืื ืื. ืชืื ืืื ืกืงืืจืช ื ืืกืืชื ืืกืื ืืช ืืืงืืืืช ืืืื ืืื ืื ืืืืขืืช ืืช ืืงืืจื. ืื ืฉืืชืืชื ืืช ืืงืืขืื ืืืื, ืืฉ ืืจืื ืืืื ืืืชืืฆืื ืชืืื ืืืืื ืืืจ ืืืืจื.
ื-PostgreSQL DBMS ืืื ืื ืื ืื ืขืฆืื, ืืื ืื ืื ืื ืืืจืื ืืชืชื-ืืขืจืืืช ืจืืืช, ืืฉืจ ืคืขืืืชื ืืืชืืืืช ืืฉืคืืขื ืืฉืืจืืช ืขื ืืืฆืืขื ื-DBMS. ืืืืื ืืคืขืืื ื ืืกืคืื ื ืชืื ืื ืกืืืืกืืืื ืืืืืข ืขื ืคืขืืืช ืืจืืืืื, ืืืืคืฉืจืื ืื ืืืขืจืื ืืช ืืืคืงืืืืืืช ืฉื PostgreSQL ืืื ืงืื ืืืืฆืขืื ืืฉืืคืืจ ืืืืฆืืขืื. ืขื ืืืช, ืืฉ ืืจืื ืืืืข ืื ืืืื ืืืฆื ืืฆืืจื ืคืฉืืื ืืืื. ืขืืืื ืืืืืข ืืื ืืคืจืฉื ืืชื ืืื ืืคืขืืื ืืฉืืื ืื ืืจืืืืืืืืช ืืืืืืื, ื"ืื ืืืืืช" ืฉื ืืืืื ืืืื ืืฉืืจืืช ืืืื ืืืืื ืืงืืืช ืืคืืื DBA ืืชืงืื.
ืืืจ ืืฆืืจืืื ืืืืื ืฉืื ืืืืกื. ืืคื ืฉืืืจ ืืืืื, ืื ื ืืืืจ ืขื ืกืืืืกืืืงืืช PostgreSQL.
ืกืืืืกืืืงืืช ืคืขืืืืช PostgreSQL. ื-PostgreSQL ืืฉ ืฉืชื ืกืืืืกืืืงืืช. ื ืชืื ืื ืกืืืืกืืืื ืขื ืคืขืืืืช ืฉืืืืื ื. ืืกืืืืกืืืงืืช ืืชืืื ืขื ืืคืฆืช ื ืชืื ืื. ืืืืจ ืกืคืฆืืคืืช ืขื ืกืืืืกืืืงืืช ืคืขืืืืช PostgreSQL, ืืืืคืฉืจืืช ืื ื ืืฉืคืื ืืืฆืืขืื ืืืืืฉืื ืืฉืคืจ ืืืชื.
ืื ื ืืืื ืื ืืืฆื ืืืฉืชืืฉ ืืืขืืืืช ืืกืืืืกืืืงื ืืื ืืคืชืืจ ืืืืื ืืขืืืช ืฉืืฉ ืื ืื ืขืฉืืืืช ืืืืืช ืื.
ืื ืื ืืืื ืืืื? ืืืื ืื ืืืข ืืกืืืืกืืืงื ืฉื ืืชืืื, ืื... ืืื ื ืืฉื ื ืคืจื ืืืื ื ืคืจื ืขื ืืืืคื ืฉืื ื ืชืื ืื ืืืืืกื ืื ืืืกื ืื ืชืื ืื ืืืืฆื ืืชืื ื ืืฉืืืืชืืช ืืงืื ืืืฉื ืขื ืืืืคืืื ืื ืืืืืืชืืื ืืืืืืชืืื ืฉื ื ืชืื ืื ืืื.
ืืื ืืืื ืืืงืืจืืช ืืืื, ืื ื ืื ืืฉืืื ืืืฆืจ ืืื ืืืฉื ืื. ืื ืืืื ืคืจืกืื. ืืื ื ืฉืื ืืช ืื ืืฆื.
ืื ื ืจืืฆื ืืืจืืืช ืื ืฉืฉืืืืฉ ืืกืืืืกืืืงื ืืื ืฉืืืืฉื. ืื ืืืจืื. ืื ืืืื ืืฉืืืืฉ. ืื ืื ืฉืื ืื ื ืฆืจืืืื ืื SQL ืจืืื ืืืืข ืืกืืกื ื-SQL.
ืืืืื ื ืืืจ ืขื ืืืื ืกืืืืกืืืงื ืืืืืจ ืืื ืืคืชืืจ ืืขืืืช.
ืื ื ืกืชืื ืขื PostgreSQL ืื ืคืขืื ืืช ืืคืงืืื ืืืขืจืืช ืืืคืขืื ืืฆืคืืื ืืชืืืืืื, ื ืจืื "ืงืืคืกื ืฉืืืจื". ื ืจืื ืืื ืชืืืืืื ืฉืขืืฉืื ืืฉืื, ืืืืฉื ื ืืื ืืืืืื ืืขืจื ืื ืื ืขืืฉืื ืฉื, ืื ืื ืขืืฉืื. ืืื, ืืขืฆื, ืื ืงืืคืกื ืฉืืืจื; ืื ืื ื ืื ืืืืืื ืืืกืชืื ืคื ืืื.
ืื ื ืืืืืื ืืจืืืช ืืช ืขืืืก ืืืขืื ืคื ืืื top
, ืื ืื ื ืืืืืื ืืืกืชืื ืขื ื ืืฆืื ืืืืจืื ืขื ืืื ืืื ืืื ืขืืจ ืืืขืจืืช, ืืื ืื ื ืืื ืืืกืชืื ืืชืื PostgreSQL. ืืฉืืื ืื ืื ืื ื ืฆืจืืืื ืืืื ืืืจืื.
ืืืืืฉื, ืื ื ืืืื ืื ืืืื ืืืงืืฉ ืืืื. ืื ื ืืืืื ืืช PostgreSQL ืืฆืืจื ืฉื ืืืืืจืื ืืื, ืื ื ืืื ืืขื ืืช ืืืื ืืืฉืงืข ืืืื. ืืื ืฉื ื ืืืจืื: ืื ืขืืืื ืืงืฉืืช ืืงืื ืืืืฉืืืื ืืืฉืืืืช ืืจืงืข ืฉ-PostgreSQL ืืืฆืขืช ืืื ืืฉืืืจ ืขื ืขืฆืื.
ืื ื ืชืืื ืืืกืชืื ืืคืื ื ืืฉืืืืืช ืืขืืืื ื, ื ืืื ืืจืืืช ืืืฆื ืืงืฉืืช ืืืงืื ืืขืืืืืช. ืืืงืฉื ืืืืขื ืืืืคืืืงืฆืื ืื ืคืชืืช ืกืฉื ืืงืื ืืืืฉื ืขืืืื. ืืืงืฉื ื ืฉืืืช ืืืชืืื. ืืืชืืื ืืื ื ืชืืื ืืช ืฉืืืืชืืช. ืฉืืื ืืช ืื ืืืื ืืืืฆืืข. ืืฉ ืืืืฉืื ืงืื/ืคืื ืฉื ื ืชืื ื ืืืืง ืืงืฉืืจืื ืืืืืืืช ืืืื ืืงืกืื. ืื ืชืื ืื ืืืจืืฉืื ื ืงืจืืื ืืืืืกืงืื ืืืืืจืื ืืชืื ืืืืจ ืืืืื "ืืืืจืื ืืฉืืชืคืื". ืชืืฆืืืช ืืืงืฉื, ืื ืื ืขืืืื ืื, ืืืืงืืช, ื ืจืฉืืืช ืืืืื ืืขืกืงืืืช ื-WAL. ืืืง ืืืืืืข ืืกืืืืกืื ืืืืข ืืืืื ืื ืืืกืคื ืืกืืืืกืืืงื. ืืชืืฆืืช ืืืงืฉื ื ืฉืืืช ืืืจื ืืืงืื. ืืืืจ ืืื ืืืงืื ืืืื ืืืืืจ ืขื ืืื ืฉืื ืขื ืืงืฉื ืืืฉื.
ืื ืืืื ืืฉืืืืช ืจืงืข ืืชืืืืื ืจืงืข? ืืฉ ืื ื ืืกืคืจ ืชืืืืืื ืฉืฉืืืจืื ืขื ืืกื ืื ืชืื ืื ืืคืืขื ืืืฆื ืืคืขืื ืจืืื. ืชืืืืืื ืืื ืืื ืชื ื ืื ืืืื: ืืืืืืืืงืื, ืฆ'ืงืคืืื ื, ืชืืืืืื ืืงืฉืืจืื ืืฉืืคืื, ืืืชื ืจืงืข. ืืืข ืืื ืืื ืืื ืืืื ืฉืืืืื.
ืืืื ืืขืืืช ืืฉ ืืกืืืืกืืืงื?
- ืืฉ ืืจืื ืืืืข. PostgreSQL 9.4 ืืกืคืง 109 ืืืืื ืืฆืคืืื ืื ืชืื ืื ืกืืืืกืืืื. ืขื ืืืช, ืื ืืกื ืื ืชืื ืื ืืืืกื ืืืืืืช, ืกืืืืช, ืืกืื ื ืชืื ืื ืจืืื, ืื ืื ืืืืืื ืืืื ืืฆืืจืื ืืืืืช ืืืืคืืื ืืืกืคืจ ืืชืืื ืฉื ืืืืืืช, ืืกืื ื ืชืื ืื. ืืืืืจ, ืืฉ ืืคืืื ืืืชืจ ืืืืข. ืืงื ืืืื ืืืืืข ืื.
- ืืืขืื ืืืื ืืื ืฉืืกืืืืกืืืงื ืืืืฆืืช ืขื ืืื ืืื ืื. ืื ื ืกืชืื ืขื ืืกืืืืกืืืงื ืืื, ื ืจืื ืืื ืื ืืืืื ืื ืืืื. ืืื ืขืืจ ืืจืื ืืื ืืื ืืืคืกื ืืกืืืืกืืืงื, ื ืจืื ืขืจืืื ืืืืืืืจืืื. ืืื ืื ืืืืจืื ืื ื ืืืื.
- ืืื ืกืืคืืจ. ืื ืืื ืื ืืืืฉืื ืืืฉืืื, ืืฉืื ื ืคื ืืคื ื 15-30 ืืงืืช, ืื ืชืืื ืืืฉืชืืฉ ืืกืืืืกืืืงื ืืืจืืืช ืื ืงืจื ืืคื ื 15-30 ืืงืืช. ืื ืืขืื.
- ืืืขืืจ ืืื ืืืื ื ื-PostgreSQL ืืื ืืขืื. ืืคืชืื ืืืืื ืืื ื ืืกืคืงืื ืฉืื ืืื ืขืืจ. ืืื ืืื ืืืจ ืืื. ืื ืคืฉืื ืืกืคืงืื ืกืืืืกืืืงื ืืืกื ืื ืชืื ืื. ืืฉืชืืฉ ืื, ืชืืงืฉ ืืื ื, ืชืขืฉื ืื ืฉืืชื ืจืืฆื.
- ืืืืืื ืฉืืื ืืื ืืืื ื ื-PostgreSQL, ืืืืจ ืืืจื ืืืขืื ื ืืกืคืช. ืืจืื ืืืื ืฉื ืฆื ืฉืืืฉื. ืื ืืืจื ืฉืืฉ ืื ืืืืื ืืฉืืจืืช ืคืืืช ืื ืืืชืจ ืื ืกื ืืืชืื ืชืืื ืืช ืืฉืื. ืืืชืืฆืื ืืื, ืืงืืืื ืืฉ ืืจืื ืืืื ืฉื ืืชื ืืืฉืชืืฉ ืืื ืืื ืืขืืื ืขื ืกืืืืกืืืงื. ืืืืืง ืืืืืื ืืฉ ืืืืืืช ืืกืืืืืช, ืืืืื ืืืจืื ืืื ืืืืืืช ืืืจืืช, ืื ืฉืืฉ ืืื ืืืืืืช ืืืฉืืช. ืื ืืฆืจ ืืฆื ืฉืฆืจืื ืืืฉืชืืฉ ืืฉื ืืื, ืฉืืืฉื ืื ืืจืืขื ืืืื ืฉืืืคืคืื ืื ืืช ืื ืืืขืื ืคืื ืงืฆืืืช ืฉืื ืืช. ืื ืืืื ืื ื ืขืื.
ืื ื ืืืข ืืื? ืืฉืื ืืืืืช ืืกืืื ืืงืืช ื ืชืื ืื ืกืืืืกืืืื ืืฉืืจืืช, ืืื ืื ืืืืืช ืชืืื ืืชืืื ืืืช, ืื ืืืืฉืื ืืฉืคืจ ืืช ืืชืืื ืืืช ืืืื ืืขืฆืื: ืืืกืฃ ืืื ืคืื ืงืฆืืืช ืืื ืืืคืืง ืชืืขืืช ืืฉืื.
ืืืชื ืฆืจืื ืืืข ืืกืืกื ื-SQL. ืืื ืืงืื ื ืชืื ืื ืกืืืืกืืืื, ืขืืื ืืืฆืืจ ืฉืืืืชืืช SQL, ืืืืืจ ืขืืื ืืืขืช ืืืฆื ืืืืืจ ืืืืฆืืจืคืืช ืืชืืฆืขืื.
ืืกืืืืกืืืงื ืืืืจืช ืื ื ืืื ืืืจืื. ื ืืชื ืืืืง ืืืชื ืืงืืืืจืืืช.
- ืืงืืืืจืื ืืจืืฉืื ื ืืื ืืืจืืขืื ืืืชืจืืฉืื ืืืกื ืื ืชืื ืื. ืื ืืืฉืจ ืืชืจืืฉ ืืืจืืข ืืืฉืื ืืืกื ืื ืชืื ืื: ืืงืฉื, ืืืฉื ืืืืื, ืืืงืื ืืืืืืื, commits, ืื ืื ืืื ืื ืืืจืืขืื. ืืืื ืื ืืืชืืืืื ืืืืจืืขืื ืืื ืืืืืืื. ืืื ืื ื ืืืืืื ืืขืงืื ืืืจ ืืืืจืืขืื ืืืื.
- ืืงืืืืจืื ืืฉื ืืื ืืื ืืืคืืื ืื ืฉื ืืืืืืงืืื ืืืื ืืืืืืช ืืืกืื ื ืชืื ืื. ืืฉ ืืื ื ืืกืื. ืื ืืืื ืืฉืืืื ืืช. ืื ื ืืืืืื ืืขืงืื ืืืจ ืืฆืืืื ืฉื ืืืืืืืช ืืืฆืืืื ืฉื ืืืื ืืงืกืื. ืื ื ืืืืืื ืืจืืืช ืฉืื ืืืื ืืืื ืืืงื.
- ืืืงืืืืจืื ืืฉืืืฉืืช ืืื ืืืื ืืืืฉืงืข ืืืืจืืข. ืืงืฉื ืืื ืืืจืืข. ืืฉ ืื ืืื ืกืคืฆืืคื ืืฉืื ืฉื ืืฉื ืืื. ืืชืืื ืืื, ื ืืืจ ืืื. ืื ืื ื ืืืืืื ืืขืงืื ืืืจื ืื. ืื ืืช ืืืื ืฉืืืงื ืืงืจืื ืืืืง ืืืืืกืง ืื ืืืชืื ืืืชื. ืขืืงืืื ืื ืืืจื ืืืจืื ืืืื.
ืืงืืจืืช ืืกืืืืกืืืงื ืืืฆืืื ืืืืงืื:
- ืืืืืจืื ืืฉืืชืฃ (buffers shared) ืืฉ ืงืืข ืืืืกืื ื ืชืื ืื ืกืืืืื, ืืฉื ื ืื ืืืชื ืืื ืื ืฉืืืืืืื ืื ืืืื ืืืฉืจ ืืชืจืืฉืื ืืืจืืขืื ืืกืืืืื, ืื ืืชืขืืจืจืื ืจืืขืื ืืกืืืืื ืืคืขืืืช ืืกืืก ืื ืชืื ืื.
- ืื ืืืื ืื ืืืื ืืื ื ื ืืืฉืื ืืืฉืชืืฉ ืืืฃ ืืื ื ื ืืืฉืื ืืื ืื ืืืขืจืืช. ืืื ืืืจืื ืืจืื ื ืืืื. ืืื ืืืฉืช ืืืืื, PostgreSQL ืืกืคืงืช ืืืฉืง ืืฆืืจื ืฉื ืคืื ืงืฆืืืช SQL. ืื ื ืืืืืื ืืืฆืข ืืจืืงืืช ื ืืืจืืช ืืืืฆืขืืช ืืคืื ืงืฆืืืช ืืืื ืืืงืื ืืืืฉืื ืืื (ืื ืงืืืฆื ืฉื ืืืืื).
- ืขื ืืืช, ืืฉืืืืฉ ืืคืื ืงืฆืืืช ืืื ืืื ื ืชืืื ื ืื, ืืืื ืืคืื ืงืฆืืืช ืื ืืืกืืก ืืชืฆืืืืช (VIEWs). ืืื ืืืืืืช ืืืจืืืืืืืช ืืืกืคืงืืช ื ืชืื ืื ืกืืืืกืืืื ืขื ืชืช-ืืขืจืืช ืกืคืฆืืคืืช, ืื ืขื ืกื ืืกืืื ืฉื ืืืจืืขืื ืืืกื ืื ืชืื ืื.
- ืชืฆืืืืช ืืืืืขืืช ืืื (VIEWS) ืื ืืืฉืง ืืืฉืชืืฉ ืืขืืงืจื ืืขืืืื ืขื ืกืืืืกืืืงื. ืื ืืืื ืื ืืืจืืจืช ืืืื ืืื ืืืืจืืช ื ืืกืคืืช, ืืชื ืืืื ืืื ืืืฉืชืืฉ ืืื, ืืืกืชืื ืขืืืื ืืืงืืช ืืื ืืืืข. ืืื ืืฉ ืชืจืืืืช. ืืชืจืืืืช ืื ืจืฉืืืืช. ืืชื ืืืื ืืืชืงืื ืืช ืืืืืช postgresql-contrib (ืืืืืื, postgresql94-contrib), ืืืขืื ืืช ืืืืืื ืื ืืจืฉ ืืชืฆืืจื, ืืฆืืื ืคืจืืืจืื ืขืืืจื, ืืืคืขืื ืืืืฉ ืืช PostgreSQL ืืชืืื ืืืฉืชืืฉ ืื. (ืืขืจื. ืืืชืื ืืืคืฆื, ืืืจืกืืืช ืืืืจืื ืืช ืืืืืช ืืชืจืืื ืืื ืืืง ืืืืืืื ืืจืืฉืืช).
- ืืืฉ ืชืจืืืืช ืื ืจืฉืืืืช. ืื ืืื ื ืืืืืื ืืืคืฆื ืืกืื ืืจืืืช ืฉื PostgreSQL. ืืฉ ืืืจืืื ืืืชื ืื ืืืชืงืื ืืืชื ืืกืคืจืืื. ืืืคืฉืจืืืืช ืืืืืืช ืืืืืช ืฉืื ืืช ืืืื, ืชืืื ืืื ืฉืืืคืชื ืฉื ืืชืจืืื ืืื ืจืฉืืืช ืืื ืืืืข.
ืฉืงืืคืืช ืื ืืฆืืื ืืช ืื ืืืชื ืชืฆืืืืช ืืืืง ืืืคืื ืงืฆืืืช ืืืืื ืืช ื-PostgreSQL 9.4. ืืคื ืฉืื ื ืจืืืื, ืืฉ ืืจืื ืืืื. ืืื ืื ืงื ืืืชืืืื ืื ืืชื ื ืชืงื ืืื ืืคืขื ืืจืืฉืื ื.
ืขื ืืืช, ืื ื ืืงื ืืช ืืชืืื ื ืืงืืืืช ะะฐะบ ััะฐัะธััั ะฒัะตะผั ะฝะฐ PostgreSQL
ืืชืืื ืืจืฉืืื ืื, ืื ื ืืงืืืื ืืช ืืชืืื ื ืืื. ืื ื ืืืืืื ืืืฉืชืืฉ ืืื ืชืฆืืื (VIEWs) ืื ืืื ืคืื ืงืฆืื ืืืืจื ืื ืื ืืืจืช ืืื ืืงืื ืืช ืืกืืืืกืืืงื ืืืชืืืื ืืืฉืจ PostgreSQL ืคืืขื. ืืื ืื ื ืืืจ ืืืืืื ืืงืื ืงืฆืช ืืืืข ืขื ืคืขืืืช ืชืช-ืืืขืจืืช.
ืืืืจ ืืจืืฉืื ืฉื ืืื ืืื pg_stat_database
. ืืคื ืฉืื ื ืืืืืื ืืจืืืช, ืื ืืืคืขื. ืืฉ ืื ืืจืื ืืืืข. ืืืืืข ืืื ืืืืื. ืืื ื ืืชื ืืืข ืฉืืืืฉื ืืืื ืขื ืื ืฉืงืืจื ืืืกื ืื ืชืื ืื ืฉืื ื.
ืืืื ืืืจืื ืฉืืืืฉืืื ื ืืื ืืงืืช ืืฉื? ื ืชืืื ืืืืจืื ืืคืฉืืืื ืืืืชืจ.
select
sum(blks_hit)*100/sum(blks_hit+blks_read) as hit_ratio
from pg_stat_database;
ืืืืจ ืืจืืฉืื ืฉืื ืื ื ืืืืืื ืืืกืชืื ืขืืื ืืื ืืืื ืืคืืืขื ืืืืืื. ืงืฆื ืืคืืืขื ืืืืืื ืืื ืืื ืฉืืืืฉื. ืื ืืืคืฉืจ ืื ืืืขืจืื ืืื ื ืชืื ืื ื ืืงืืื ืืืืืื ืืืืืจ ืืืฉืืชืฃ ืืืื ื ืงืจื ืืืืืกืง.
ืื ืืจืืจ ืืื ืฉืืฉ ืื ื ืืืชืจ ืื ืืกืืช ืืืืื, ืื ืืืื. ืื ื ืืืืืื ืืช ืืืื ืืื ืืืืืืื. ืืืืืืื, ืื ืืืืื ืฉืื ื ืืืชืืืืช ืฉื ืืืืืื ืืืื ืืื ืืืชืจ ื-90%, ืื ืื ืืื. ืื ืื ืืืจื ืืชืืช ื-90%, ืื ืืืืจ ืฉืืื ืื ื ืืกืคืืง ืืืืจืื ืืื ืืืืืืง ืืช ืจืืฉ ืื ืชืื ืื ืืื ืืืืืจืื. ืืืื ืืืฉืชืืฉ ืื ืชืื ืื ืืืื, PostgreSQL ื ืืืฅ ืืืฉืช ืืืืกืง ืืื ืืืื ืืืชืจ ืืืฉืจ ืื ืื ืชืื ืื ืืื ื ืงืจืืื ืืืืืืจืื. ืืืชื ืฆืจืื ืืืฉืื ืขื ืืืืืช ืืืืืจืื: ืื ืืืืืช ืืืืจืื ืืฉืืชืคืื, ืื ืืืืืช ืืืืจืื ืืืืืจื (RAM).
select
datname,
(xact_commit*100)/(xact_commit+xact_rollback) as c_ratio,
deadlocks, conflicts,
temp_file, pg_size_pretty(temp_bytes) as temp_size
from pg_stat_database;
ืื ืขืื ืืคืฉืจ ืืงืืช ืืืืืคืขื ืืื? ืืชื ืืืื ืืจืืืช ืืจืืืืช ืืืชืจืืฉืืช ืืืกื ืื ืชืื ืื. ืื ืืืฆื ืืื? ืืฉ commits, rollbacks, ืืฆืืจืช ืงืืฆืื ืืื ืืื, ืืืืื, ืืืื ืกืชืื ืืืชื ืืฉืืืืช.
ืื ืื ื ืืืืืื ืืืฉืชืืฉ ืืืงืฉื ืื. SQL ืื ืื ืคืฉืื. ืืื ืื ื ืืืืืื ืืืกืชืื ืขื ืื ืชืื ืื ืืืื ืืื.
ืืื ื ืขืจืื ืืกืฃ. ืื ืื ื ืืกืชืืืื ืขื ืืืืก ืืื ืืชืืืืืืืืช ืืืืืจืืช. Commits ืืื ืืืฉืืจ ืืืฆืื ืฉื ืขืกืงื. ืืืืจืืช ืื ืืืืจื ืืืืืจ, ืืืืืจ ืขืกืงื ืขืฉืชื ืขืืืื ืืกืืืืช, ืืืืืฆื ืืช ืืกื ืื ืชืื ืื, ืืืฉืื ืืฉืื, ืืื ืืืจืข ืืฉื ืืชืืฆืืืช ืืขืกืงื ื ืืืงืืช. ืื ืืกืคืจ ืืืืืจืืช ืืืืืจ ืืื ืื ืืืื ืืจืืข. ืืืืื ืืืืฉืื ืืืืื ืข ืืื, ืืืขืจืื ืืช ืืงืื ืืื ืฉืื ืื ืืงืจื.
ืงืื ืคืืืงืืื ืงืฉืืจืื ืืฉืืคืื. ืืื ืืื ืืฉ ืืืืื ืข. ืื ืืฉ ืื ืืื ืฉืืืืชืืช ืฉืืืืฆืขืืช ืขื ืขืืชืง ืืืชืขืืจืจืืช ืงืื ืคืืืงืืื, ืื ืืชื ืฆืจืื ืืกืืจ ืืช ืืืชื ืืฉืืืืช ืืืื ืืืจืืืช ืื ืงืืจื. ืคืจืืื ื ืืชื ืืืฆืื ืืืืื ืื. ืืืืื ืืฆืื ืืชื ืืฉืืช ืื ืฉืืงืฉืืช ืืืฉืืืื ืืขืืื ืืื ืฉืืืืืช.
ืื ืืืื ืกืชืื ืืื ืืฆื ืจืข. ืืืฉืจ ืืงืฉืืช ื ืืืืืช ืขื ืืฉืืืื, ืืงืฉื ืืืช ื ืืืฉื ืืืฉืื ืืื ืืืงืื ืืช ืืื ืขืื, ืืงืฉื ืฉื ืืื ื ืืืฉื ืืืฉืื ืืฉื ื ืืื ืืงืื ืืช ืื ืขืืื, ืืื ืฉืชื ืืืงืฉืืช ื ืืืฉื ืืืช ืืืฉืืืื ืฉื ืืฉื ืื ืื ืืกืื ืืืื ืฉืืืชืื ื ืฉืืฉืื ืืฉืืจืจ ืืช ืืื ืขืื. ืื ืื ืืฆื ืืขืืืชื. ืืฉ ืืืคื ืืื ืืจืืช ืฉืืชืื ืืืฉืืืื ืืืกืืจืช ืืืฉื ืืืฉืืืื. ืืื ืืชื ืจืืื ืฉืืืืื ืืกืชืื ืฉืื ืืืื ืืืื, ืืชื ืฆืจืื ืืืกืชืื ืขื ืืคืจืืื ืืืืื ืื, ืื ืชื ืืช ืืืฆืืื ืืืชืขืืจืจืื ืืืจืืืช ืื ืืืขืื.
ืื ืงืืฆืื ืืื ืืื (temp_files) ืืจืืขืื. ืืืฉืจ ืืืงืฉืช ืืฉืชืืฉ ืืื ืืกืคืืง ืืืืจืื ืืื ืืืืื ื ืชืื ืื ืชืคืขืืืืื ืืืื ืืื, ืืื ืืืฆืจืช ืงืืืฅ ืืืืกืง. ืืื ืืคืขืืืืช ืฉืืื ืืืื ืืืฆืข ืืืืืจ ืืื ื ืืืืืจืื ืืชืืืืืช ืืืชืืฆืข ืืืืกืง. ืื ืืืื. ืื ืืืืื ืืช ืืื ืืืฆืืข ืืฉืืืืชื. ืืืืงืื ืฉืฉืื ืืงืฉื ื-PostgreSQL ืืงืื ืชืฉืืื ืงืฆืช ืืืืืจ ืืืชืจ. ืื ืื ืืคืขืืืืช ืืืื ืืืืฆืขืืช ืืืืืจืื, Postgres ืืืื ืืจืื ืืืชืจ ืืืจ ืืืืงืื ืืืชืื ืคืืืช.
Pg_stat_bgwriter - ืชืฆืืื ืื ืืชืืจืช โโืืช ืคืขืืืชื ืฉื ืฉืชื ืชืช-ืืขืจืืืช ืจืงืข PostgreSQL: checkpointer
ะธ background writer
.
ืจืืฉืืช, ืืืื ื ืกืชืื ืขื ื ืงืืืืช ืืืงืจื, ืื ืฉื ืงืจื. checkpoints
. ืืื ื ืงืืืืช ืืงืจื? ื ืงืืืช ืืืงืืจืช ืืื ืืืงืื ืืืืื ืืขืกืงืืืช ืืืฆืืื ืฉืื ืฉืื ืืื ืื ืชืื ืื ืฉื ืจืฉืื ืืืืื ืกืื ืืจื ื ืืืฆืืื ืขื ืื ืชืื ืื ืืืืกืง. ืืชืืืื, ืืืชืื ืืขืืืก ืืขืืืื ืืืืืืจืืช, ืืืื ืืืืืช ืืจืื ืืืขืืงืจ ืืืจืื ืืกื ืืจืื ืืคืื ืืืืืืืื ืืืืืจืื ืืฉืืชืคืื ืขื ืงืืฆื ื ืชืื ืื ืืืืกืง. ืืฉื ืื ืื? ืื PostgreSQL ืืื ืื ืืืื ื ืืืฉ ืืืืกืง ืืืืื ื ืชืื ืื ืืฉื, ืืืืชื ื ืชืื ืื ืขื ืื ืืืฉื, ืื ืืื ืืืื. ืืื, ื-PostgreSQL ืืฉ ืืงืืข ืืืืจืื ืฉืืืืื ืชืืื ืืืืืจืืช ืืชืฆืืจื. Postgres ืืืืกื ื ืชืื ืื ืืืื ืืืืืจืื ืื ืืขืืืื ืืืืืจ ืืืชืจ ืื ืฉืืืืชื. ืืืงืจื ืฉื ืืงืฉืืช ืืฉืื ืื ืื ืชืื ืื, ืื ืืฉืชื ืื. ืืื ืื ื ืืงืืืื ืฉืชื ืืจืกืืืช ืฉื ืื ืชืื ืื. ืืื ืืืืืจืื ืฉืื ื, ืืฉื ื ืืืืกืง. ืืืื ืคืขื ืืชื ืฆืจืื ืืกื ืืจื ืืช ืื ืชืื ืื ืืืื. ืื ืื ื ืฆืจืืืื ืืกื ืืจื ืืช ืื ืฉืืฉืชื ื ืืืืืจืื ืืืืกืง. ืืฉืืื ืื ืืชื ืฆืจืื ืืืกืืืื.
ืืืกืื ืขืืืจ ืืจื ืืืืจืื ืืฉืืชืคืื, ืืกืื ืืคืื ืืืืืืืื ืฉืื ื ืืืฆืื ืขืืืจ ืืืกืื. ืืื ืืื ืืฉืืง ืืขืืจ ืฉื ื ืืจื ืืืืืจืื ืืืฉืืชืคืื. ืืืขืืืืื ืฉืืกืืื ืื ืืืืกืื, ืื ืืืจ ืืกื ืืจื ืืืชื. ืื ืื ืชืื ืื ืืกืื ืืจื ืื ืขื ืืืืกืง.
ืืฉื ื ืฉื ื ืกืืืื ืฉื ืืืกืืืื. ืืืกืื ืืื ืืืืฆืข ืขื ืคืกืง ืืื. ืืืกืื ืื ืฉืืืืฉื ืืืื - checkpoint_timed
. ืืืฉ ืืืกืืืื ืืคื ืืจืืฉื - checkpoint required
. ืืืกืื ืื ืืชืจืืฉ ืืืฉืจ ืืฉ ืื ื ืจืฉืืืช ื ืชืื ืื ืืืืื ืืืื. ืจืฉืื ื ืืจืื ืืืื ื ืขืกืงืืืช. ื-PostgreSQL ืืืืื ื ืฉืืื ืฆืจืืื ืืกื ืืจื ืืช ืื ืื ืืื ืฉืืืชืจ ืืืจ, ืืขืฉืืช ืืืกืื ืืืืืฉืื ืืืื.
ืืื ืืกืชืืืช ืขื ืืกืืืืกืืืงื pg_stat_bgwriter
ืืจืืืชื ืื ืืฉ ืื checkpoint_req ืืืื ืืืจืื ื-checkpoint_timed, ืื ืื ืจืข. ืืื ืจืข? ืืืฉืืขืืช ืืื ืฉ-PostgreSQL ื ืืฆื ืืืืฅ ืืชืืื ืืืฉืจ ืืื ืฆืจืื ืืืชืื ื ืชืื ืื ืืืืกืง. ืืืกืื ืคืกืง ืืื ืคืืืช ืืืืืฅ ืืืชืืฆืข ืืืชืื ืืืื ืืืื ืื ืืคื ืืื ืืืชืคืจืก ืขื ืคื ื ืืื. ื-PostgreSQL ืืฉ ืืช ืืืืืืช ืืืฉืืืช ืืช ืืขืืืื ืืื ืืืขืืืก ืขื ืชืช-ืืขืจืืช ืืืืกืง. ืื ืฉืืืืฉื ืขืืืจ PostgreSQL. ืืฉืืืืชืืช ืฉืืชืืฆืขืืช ืืืืื ืืืืกืื ืื ืืืื ืืืฅ ืืืขืืืื ืฉืชืช-ืืขืจืืช ืืืืกืง ืชืคืืกื.
ืืืื ืืืชืืื ืืช ืืืืกืื ืืฉ ืฉืืืฉื ืคืจืืืจืื:
-
ัheckpoint_segments
. -
ัheckpoint_timeout
. -
ัheckpoint_competion_target
.
ืื ืืืคืฉืจืื ืื ืืืืกืช ืืช ืคืขืืืช ื ืงืืืืช ืืืงืจื. ืืื ืื ื ืื ืืชืขืื ืขืืืื. ืืฉืคืขืชื ืืื ื ืืฉื ื ืคืจื.
ะะฝะธะผะฐะฝะธะต: ืืืจืกื 9.4 ืื ืืื ื ืืืื ืืื ื ืจืืืื ืืืช ืขืื. ืืืจืกืืืช ืืืืจื ืืืช ืฉื PostgreSQL ืืคืจืืืจ checkpoint_segments
ืืืืืคืื ืืคืจืืืจืื min_wal_size
ะธ max_wal_size
.
ืชืช ืืืขืจืืช ืืืื ืืื ืืืชื ืืจืงืข - background writer
. ืื ืืื ืขืืฉื? ืื ืคืืขื ืื ืืืื ืืืืืื ืืื ืกืืคืืช. ืกืืจืง ืืคืื ืืืืืจืื ืืฉืืชืคืื ืืืฉืืื ืืคืื ืืืืืืืื ืฉืืื ืืืฆื ืืืืกืง. ืืคืืื, ืื ืขืืืจ ืืืืกืื ืืืฆืข ืคืืืช ืขืืืื ืืืืื ืืืฆืืข ืืืืกืื.
ืืฉืืื ืื ืื ืขืื ื ืืืฅ? ืื ืืกืคืง ืืช ืืฆืืจื ืืืคืื ืจืืงืื ืืืืืจืื ืืฉืืชืคืื ืื ืื ื ืืจืฉืื ืคืชืืื (ืืืืืืืช ืืืืืืช ืืืื) ืืื ืืืืื ื ืชืื ืื. ื ื ืื ืฉื ืืฆืจ ืืฆื ืฉืื ื ืืจืฉื ืืคืื ืจืืงืื ืืืฉืืืช ืืงืฉื ืืื ืืืจ ืืื ืืืืืจืื ืืืฉืืชืคืื. Postgresive backend
ืืื ืคืฉืื ืืจืื ืืืชื ืืืฉืชืืฉ ืืื, ืืื ืื ืฆืจืื ืื ืงืืช ืฉืื ืืืจ ืืขืฆืื. ืืื ืื ืคืชืืื ืืื ืืคืื ืืืื, ืืงืฆื ืืืืืจื ืืฉืื ืืช ืืขืืืื ืืืชืืื ืืืคืฉ ืืคืื ืืื ืืืจืืง ืืืชื ืืืืกืง ืืืงืืช ืืืชื ืืฆืจืืื ืฉืื - ืื ืฉืืฉืคืืข ืืจืขื ืขื ืืื ืืืงืฉื ืฉืืืฆืขื ืืขืช. ืื ืืชื ืจืืื ืฉืืฉ ืื ืคืจืืืจ maxwritten_clean
ืืืื, ืื ืืืืจ ืฉืืืชื ืืจืงืข ืื ืขืืฉื ืืช ืืขืืืื ืฉืื ืืืชื ืฆืจืื ืืืืืื ืืช ืืคืจืืืจืื bgwriter_lru_maxpages
, ืืื ืฉืืืื ืืขืฉืืช ืืืชืจ ืขืืืื ืืืืืืจ ืืื, ื ืงื ืขืื ืืคืื.
ืืืื ืืืงืืืจ ืฉืืืืฉื ื ืืกืฃ ืืื buffers_backend_fsync
. ืงืฆื ืืืืจื ืื ืืกืชื ืืจื ืื ืื ืืืื. ืื ืืขืืืจืื ืืช fsync ืืืขืื ืืืกืื ืืืืกื ืืช ืฉื IO. ืืืืกืื ืืฉ ืชืืจ ืืฉืื, ืืื ืืขืื ืืขืช ืืขืช fsync ืืืกื ืืจื ืืคืื ืืืืืจืื ืขื ืงืืฆืื ืืืืกืง. ืื ืืชืืจ ืืืืกืื ืืืื ืืืื, ืื ื-backend ื ืืืฅ ืืืฆืข fsync ืืขืฆืื ืืื ืืื ืืช ืืขืืืื ืฉื ื-backend, ืืืืืจ ืืืงืื ืืงืื ืชืฉืืื ืืืืืจ ืืืชืจ ืืื ืฉืืื ืืืื. ืื ืืชื ืจืืื ืฉืืขืจื ืฉืื ืืืื ืืืคืก, ืื ืื ืืืจ ืืขืื ื ืืชื ืฆืจืื ืืฉืื ืื ืืืืืจืืช ืฉื ืืืชื ืืจืงืข ืืื ืืืขืจืื ืืช ืืืืฆืืขืื ืฉื ืชืช-ืืขืจืืช ืืืืกืง.
ะะฝะธะผะฐะฝะธะต: _ืืืงืกื ืืื ืืชืืจ ืืช ืืชืฆืืืืช ืืกืืืืกืืืืช ืืงืฉืืจืืช ืืฉืืคืื. ืจืื ืฉืืืช ืืชืฆืืื ืืืคืื ืงืฆืืืช ืฉืื ื ื-Postgres 10. ืืืืืช ืฉื ืฉืื ืื ืืฉื ืืืืชื ืืืืืืฃ xlog
ืขื wal
ะธ location
ืขื lsn
ืืฉืืืช ืคืื ืงืฆืืืช/ืชืฆืืื ืืื'. ืืืืื ืืืืืืช, ืคืื ืงืฆืื pg_xlog_location_diff()
ืฉืื ื ืฉื ื pg_wal_lsn_diff()
._
ืื ืืื ืืฉ ืื ื ืืจืื ืืืจืื. ืืื ืื ืื ื ืฆืจืืืื ืจืง ืคืจืืืื ืืงืฉืืจืื ืืืืงืื.
ืื ืื ื ืจืืืื ืฉืื ืืขืจืืื ืฉืืืื, ืืืื ืืคืฉืจืืช ืืืืืืืืช ืืืืขืชืง ืืื ื ืืคืืจ ืืืืืจื ืืืืกืืจ.
ืืืงืื ืืงืกืืฆืืืื ืื ืืื ืืื ืืืืงืื ืืืืื ืืขืกืงืืืช. ืื ืืื ืื ืืืื ืื ืืฉ ืคืขืืืืช ืืืฉืื ืืืกื ืื ืชืื ืื: ืืืกืคื, ืืืืงื ืืื'.
ัะบะพะปัะบะพ ะทะฐะฟะธัะฐะฝะพ xlog ะฒ ะฑะฐะนัะฐั
$ select
pg_xlog_location_diff(pg_current_xlog_location(),'0/00000000');
ะปะฐะณ ัะตะฟะปะธะบะฐัะธะธ ะฒ ะฑะฐะนัะฐั
$ select
client_addr,
pg_xlog_location_diff(pg_current_xlog_location(), replay_location)
from pg_stat_replication;
ะปะฐะณ ัะตะฟะปะธะบะฐัะธะธ ะฒ ัะตะบัะฝะดะฐั
$ select
extract(epoch from now() - pg_last_xact_replay_timestamp());
ืื ืืืืจืื ืืืื ืฉืื ืื, ืื ืืฉ ืืืืฉืื ืคืืืืจ. ืืฉืืื ืืื ืืฉืืื ืืื ืืขืชืง ืืืืกืืจ, ืืืืืจ ืื ืชืื ืื ืฉืื ืื ืืื ืฉืจืชืื.
ืืฉ ืฉืืืฉ ืกืืืืช ืืคืืืืจ:
- ืชืช-ืืขืจืืช ืืืกืง ืื ืืื ื ืืืืื ืืืชืืืื ืขื ืกื ืืจืื ืงืืฆื ืืงืืื.
- ืืื ืื ืฉืืืืืช ืจืฉืช ืืคืฉืจืืืช, ืื ืขืืืก ืืชืจ ืืจืฉืช, ืืืฉืจ ืื ืชืื ืื ืืื ืืื ืืืืืข ืืขืชืง ืืืื ืืื ื ืืืื ืืฉืืืจ ืืืชื.
- ืืื ืืืขืื. ืืืขืื ืืื ืืงืจื ื ืืืจ ืืืื. ืืจืืืชื ืืช ืื ืคืขืืืื ืื ืฉืืืฉ, ืืื ืื ืื ืืืื ืืงืจืืช.
ืืื ื ืฉืืืฉ ืฉืืืืชืืช ืืืืคืฉืจืืช ืื ื ืืืฉืชืืฉ ืืกืืืืกืืืงื. ืื ื ืืืืืื ืืืขืจืื ืืื ืจืฉืื ื ืืืืื ืืขืกืงืืืช. ืืฉ ืคืื ืงืฆืื ืืื pg_xlog_location_diff
ืื ืืื ืืืขืจืื ืืช ืืฉื ืืฉืืคืื ืืืชืื ืืืฉื ืืืช. ืื ื ืืฉืชืืฉืื ืื ืืขืจื ืืืชืฆืืื ืืื (VIEWs) ืืฉื ืื.
ืืขืจื: _ืืืงืื pg_xlog_locationืืคืื ืงืฆืื diff() ืืืืื ืืืฉืชืืฉ ืืืืคืจืืืจ ืืืืกืืจ ืืืืืกืืจ ืืืงืื ืืื ืืืืจ. ื ืึนืึท.
ืืฉ ื ืงืืื ืืืช ืขื ืืคืืืืจ, ืฉืืื ืืฉื ืืืช. ืื ืืื ืคืขืืืืช ืขื ืืืืกืืจ, ืืขืกืงื ืืืืชื ืฉื ืืคื ื ื-15 ืืงืืช ืืืื ืคืขืืืืช, ืืื ื ืกืชืื ืขื ืืฉืืื ืืื ืขื ืืขืชืง, ื ืจืื ืคืืืืจ ืฉื 15 ืืงืืช. ืื ืฉืืื ืืืืืจ. ืืื ืืืื ืืืืืช ืืืืื ืืฉืืชื ืฆืืคื ืืคืืืืจ ืืื.
Pg_stat_all_tables ืืื ืชืฆืืื ืฉืืืืฉืืช ื ืืกืคืช. ืื ืืฆืื ืกืืืืกืืืงืืช ืขื ืืืืืืช. ืืฉืืฉ ืื ื ืืืืืืช ืืืกื ืื ืชืื ืื, ืืฉ ืงืฆืช ืคืขืืืืช ืืืชื, ืืื ืคืขืืืืช, ืื ืื ื ืืืืืื ืืงืื ืืช ืืืืืข ืืื ืืืชืฆืืื ืืื.
select
relname,
pg_size_pretty(pg_relation_size(relname::regclass)) as size,
seq_scan, seq_tup_read,
seq_scan / seq_tup_read as seq_tup_avg
from pg_stat_user_tables
where seq_tup_read > 0 order by 3,4 desc limit 5;
ืืืืจ ืืจืืฉืื ืฉืื ื ืืืืืื ืืืกืชืื ืขืืื ืืื ืืกืจืืงืืช ืืจืฆืืคืืช ืขื ืคื ื ืืฉืืืื. ืืืกืคืจ ืขืฆืื ืืืืจ ืืขืืจืื ืืื ืืื ื ืืืืจื ืจืข ืืืื ื ืืืืื ืืื ืืืงืืืจ ืืื ืฉืื ื ืฆืจืืืื ืืขืฉืืช ืืฉืื.
ืขื ืืืช, ืืฉ ืืื ืฉื ื - seq_tup_read. ืืื ืืกืคืจ ืืฉืืจืืช ืฉืืืืืจื ืืืกืจืืงื ืืจืฆืืคื. ืื ืืืกืคืจ ืืืืืฆืข ืขืืื ืขื 1, 000, 10, 000, ืื ืื ืืืจ ืืื ืืืงืืืจ ืฉืืืื ืืชื ืฆืจืื ืืื ืืช ืืื ืืงืก ืืืคืฉืื ืืื ืฉืืฉืืืืชืืช ืืืื ืืืืกืกืืช ืขื ืืืื ืืงืก, ืื ืฉืืคืฉืจ ืืืฆืข ืืืคืืืืืืฆืื ืฉื ืฉืืืืชืืช ืืืฉืชืืฉืืช ืืกืจืืงืืช ืขืืงืืืช ืืืื. ืฉืื ืื ืงืืจื ืืื.
ืืืืื ืคืฉืืื - ื ื ืื ืืงืฉื ืขื OFFSET ืืืื ืืขืืืืืช LIMIT. ืืืืืื, 100 ืฉืืจืืช ืืืืื ื ืกืจืงืืช ืืืืืจ ืืื ื ืืงืืืช 000 ืฉืืจืืช ื ืืจืฉืืช, ืืืฉืืจืืช ืืกืจืืงืืช ืืงืืืืืช ื ืืืงืืช. ืื ืื ืืงืจื ืจืข. ืืฉืืืืชืืช ืืืื ืฆืจืืืืช ืืขืืืจ ืืืคืืืืืืฆืื. ืืื ื ืฉืืืืชืช SQL ืคืฉืืื ืฉืื ืืชื ืืืื ืืืกืชืื ืขื ืื ืืืืขืจืื ืืช ืืืกืคืจืื ืืืชืงืืืื.
select
relname,
pg_size_pretty(pg_total_relation_size(relname::regclass)) as
full_size,
pg_size_pretty(pg_relation_size(relname::regclass)) as
table_size,
pg_size_pretty(pg_total_relation_size(relname::regclass) -
pg_relation_size(relname::regclass)) as index_size
from pg_stat_user_tables
order by pg_total_relation_size(relname::regclass) desc limit 10;
ื ืืชื ืืงืื ืืืื ืืืื ืื ืืืืฆืขืืช ืืืื ืื ืืืืืฆืขืืช ืคืื ืงืฆืืืช ื ืืกืคืืช pg_total_relation_size()
, pg_relation_size()
.
ืืืืคื ืืืื, ืืฉ ืืื-ืคืงืืืืช dt
ะธ di
, ืฉืื ื ืืชื ืืืฉืชืืฉ ื-PSQL ืืื ืืืฆืื ืืช ืืืืืื ืฉื ืืืืืืช ืืืื ืืงืกืื.
ืขื ืืืช, ืฉืืืืฉ ืืคืื ืงืฆืืืช ืขืืืจ ืื ื ืืืกืชืื ืขื ืืืืื ืฉื ืืืืืืช, ืืคืืื ืืืชืืฉื ืืืื ืืงืกืื, ืื ืืื ืืงืืช ืืืฉืืื ืืื ืืงืกืื, ืืืืจ ืืขืฉืืช ืืื ืืขืจืืืช ืขื ืกืื ืืฆืืืื ืฉื ืืกื ืื ืชืื ืื, ืืืืืจ ืืื ืืื ืืื, ืืืืื ืขืืฆืื, ืืื ืืืกืืง ืืื ืืกืงื ืืช ืืืื ืืืคืืืืืืฆืื ืฉื ืืืื.
ืืงืืืช ืคืขืืืืช. ืืื ืืงืืื? ืืืื ื ืกืชืื ืขื ืืืืฆืข UPDATE
โ ืคืขืืืช ืขืืืื ืฉืืจืืช ืืืืื. ืืืขืฉื, ืขืืืื ืืื ืฉืชื ืคืขืืืืช (ืื ืืคืืื ืืืชืจ). ืืืื ืืืกืคืช ืืจืกื ืืืฉื ืฉื ืืฉืืจื ืืกืืืื ืืืจืกื ืืืฉื ื ืฉื ืืฉืืจื ืืืืืฉื ืช. ืืืืจ ืืื, ืืฉืืื ืืืืืืืื ืืืื ืืื ืงื ืืช ืืืจืกืืืช ืืืืืฉื ืืช ืืืื ืฉื ืืงืืืื, ืืืกืื ืืช ืืืงืื ืืื ืืืืื ืืฉืืืืฉ ืืืืจ.
ืื ืืกืฃ, ืขืืืื ืืื ืื ืจืง ืขืืืื ืืืื. ืืื ืื ืขืืืื ืืื ืืงืก. ืื ืืฉ ืื ืืื ืืงืกืื ืจืืื ืขื ืืืืื, ืื ืืืืื ืืขืืืื ืืืื ืฆืืจื ืืขืืื ืื ืืช ืื ืืืื ืืงืกืื ืืืืืืื ืฉืืืช ืืืขืืืื ืื ืืฉืืืืชื. ืืืื ืืงืกืื ืืืื ืืืื ืื ืืจืกืืืช ืืืืฉื ืืช ืฉื ืฉืืจืืช ืฉืืืื ืฆืืจื ืื ืงืืช.
select
s.relname,
pg_size_pretty(pg_relation_size(relid)),
coalesce(n_tup_ins,0) + 2 * coalesce(n_tup_upd,0) -
coalesce(n_tup_hot_upd,0) + coalesce(n_tup_del,0) AS total_writes,
(coalesce(n_tup_hot_upd,0)::float * 100 / (case when n_tup_upd > 0
then n_tup_upd else 1 end)::float)::numeric(10,2) AS hot_rate,
(select v[1] FROM regexp_matches(reloptions::text,E'fillfactor=(\d+)') as
r(v) limit 1) AS fillfactor
from pg_stat_all_tables s
join pg_class c ON c.oid=relid
order by total_writes desc limit 50;
ืืืฉื ืืขืืฆืื ืืืืฉ ืฉืื, UPDATE ืืื ืคืขืืื ืืขืืช ืืฉืงื ืืื. ืืื ืืคืฉืจ ืืืงื ืขืืืื. ืืืืื hot updates
. ืื ืืืคืืขื ืืืจืกืช PostgreSQL 8.3. ืืื ืื? ืืื ืขืืืื ืงื ืฉืืื ื ืืืจื ืืืื ืืงืกืื ืืืืื ืืช ืืืืฉ. ืืืืืจ, ืขืืื ื ืืช ืืจืฉืืื, ืืื ืจืง ืืจืฉืืื ืืขืืื (ืฉืฉืืืืช ืืืืื) ืขืืืื ื, ืืืืื ืืงืกืื ืขืืืื ืืฆืืืขืื ืขื ืืืชื ืจืฉืืื ืืขืืื. ืืฉ ืงืฆืช ืืืืืื ืชืคืขืืื ืืขื ืืื: ืืฉืืืืข ืืืงืื, ืืื ืืืฆืจ ืืช ืืฉืจืฉืจืืืช ืืืื hot
ืืื ื ืืืืฉ ืืืื ืืืฉืื ืืขืืื ืืื ืขืืืื ืืื ืืงืกืื, ืืืื ืงืืจื ืขื ืคืืืช ืืืืื ืืฉืืืื.
ืืืชื ืืชื n_tup_hot_upd
ืืืื, ืื ืื ืืื ืืืื. ืื ืืืืจ ืฉืขืืืื ืื ืงืืื ืฉืืืืื ืืื ืืืชืจ ืืื ืขืืืจื ื ืืืืื ืช ืืฉืืืื ืืืื ืืกืืจ.
ALTER TABLE table_name SET (fillfactor = 70);
ืืื ืืืืืืจ ื ืคื hot update
ืื? ืื ืื ื ืืืืืื ืืืฉืชืืฉ fillfactor
. ืืื ืงืืืข ืืช ืืืื ืืฉืื ืืคื ืื ืืฉืืืจ ืืขืช ืืืืื ืขืืื ืืืืื ืืืืฆืขืืช INSERTs. ืืืฉืจ ืืืกืืคืื ืชืืกืคืืช ืืืืื, ืื ืืืืืื ืืืืืืื ืืช ืืืฃ ืืืื ื ืืฉืืืจืื ืืงืื ืจืืง. ืืืืจ ืืื ืขืืื ืืืฉ ืืกืืื. ืื ืชืื ืื ืืืืืืื ืฉืื. ืืืืื ืืชื ืืืืช ืืจืืจืช ืืืืื, fillfactor = 100%.
ืื ืื ื ืืืืืื ืืืคืื ืืช ืืืืืื ื-70%. ืืืืืจ, ืืืืื ืืืืกืคืืช ืืืืืฉ ืขืืื ืืืฉ, ืื ืจืง 70% ืืืขืืื ืืชืืื. ืื ืฉืืจื ืื ื 30% ืืจืืจืื. ืืืฉืจ ืืชื ืฆืจืื ืืืฆืข ืขืืืื, ืกืืืจ ืืื ืื ืฉืื ืืงืจื ืืืืชื ืขืืื, ืืืืจืกื ืืืืฉื ืฉื ืืงื ืชืชืืื ืืืืชื ืขืืื. ื-hot_update ืืืขืฉื. ืื ืืงื ืขื ืืืชืืื ืขื ืืืืืืช.
select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));
ืชืืจ ืฉืืืื ืืืืืืืืช. Autovacuum ืืื ืชืช-ืืขืจืืช ืฉืขืืืจื ืืฉ ืืขื ืืืื ื ืชืื ืื ืกืืืืกืืืื ื-PostgreSQL. ืื ืื ื ืืืืืื ืืจืืืช ืจืง ืืืืืืืช ื-pg_stat_activity ืืื ืฉืืืืื ืืฉ ืื ื ืืจืืข. ืขื ืืืช, ืงืฉื ืืืื ืืืืื ืืื ืฉืืืื ืืช ื ืืฆืืื ืืชืืจ ืืื.
ืืขืจื: _ืืื ื-Postgres 10, ืืืฆื ืขื ืืขืงื Vatovac ืืฉืชืคืจ ืืืื - ืชืฆืืืช pg_stat_progress ืืืคืืขืืืืงืื, ืื ืฉืืคืฉื ืืฉืืขืืชืืช ืืช ื ืืฉื ืื ืืืืจ ืขื ืฉืืื ืืจืื.
ืื ืื ื ืืืืืื ืืืฉืชืืฉ ืืฉืืืืชื ืคืฉืืื ืื. ืืื ืื ื ืืืืืื ืืจืืืช ืืชื ืืืื ืฆืืจื ืืขืฉืืช ืืช ืืืืืงืื. ืืื ืืื ืืืชื ืฆืจืื ืืืชืืื ืืช ืืืืืงืื? ืืื ืื ืืืจืกืืืช ืืืืจืฉืช ืฉื ืืฉืืจืืช ืขืืืื ืืืืจืชื ืงืืื. ืขืืืื ืืชืจืืฉ, ื ืืกืคื ืืจืกื ืืืฉื ืฉื ืืงื. ืืืคืืขื ืืจืกื ืืืืฉื ืช ืฉื ืืืืจืืืช. ืืฉืืืื pg_stat_user_tables
ืืฉ ืคืจืืืจ ืืื n_dead_tup
. ืื ืืฆืื ืืช ืืกืคืจ ืืงืืืื "ืืชืื". ืืืจืืข ืฉืืกืคืจ ืืฉืืจืืช ืืืชืืช ืืืื ืืกืฃ ืืกืืื, ืืืื ืืืงืื ืืืืืืื ืืฉืืืื.
ืืืื ืืืฉืืื ืืช ืืกืฃ ืืื? ืืื ืืืื ืืืื ืกืคืฆืืคื ืืืกืคืจ ืืฉืืจืืช ืืืืื ืืืืื. ืืฉ ืคืจืืืจ autovacuum_vacuum_scale_factor
. ืื ืงืืืข ืืช ืืืืื. ื ื ืื 10% + ืืฉื ื ืกืฃ ืืกืืกื ื ืืกืฃ ืฉื 50 ืฉืืจืืช. ืืื ืงืืจื? ืืืฉืจ ืืฉ ืื ื ืืืชืจ ืฉืืจืืช ืืชืืช ื-"10% + 50" ืืื ืืฉืืจืืช ืืืืื, ืื ืื ืื ื ืืขืืืจืื ืืช ืืืืื ื-autovacuum.
select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));
ืขื ืืืช, ืืฉ ื ืงืืื ืืืช. ืกืคืื ืืกืืกืืื ืืคืจืืืจืื av_base_thresh
ะธ av_scale_factor
ื ืืชื ืืืงืฆืืช ืื ืคืจื. ืืืืชืื ืืื, ืืกืฃ ืื ืืืื ืืืืืื, ืืื ืืื ืืืืืืืืื ืืฉืืืื. ืืื, ืืื ืืืฉื, ืืชื ืฆืจืื ืืืฉืชืืฉ ืืืจืืงืื ืืืจืืงืื. ืืื ืืชื ืืขืื ืืื, ืื ืืชื ืืืื ืืืกืชืื ืขื ืื ืืกืืื ืฉื ืืงืืืืืช ืฉืื ื ื-Avito (ืืงืืฉืืจ ืืฉืงืืคืืช ืื ืืืงื ืืขืืืื ืืืงืกื).
ืื ืืชืื ืขืืืจ
ืื ืื ืื ื ืืืืืื ืืขืฉืืช ืืืื ืื? ืื ืืฉ ืื ื ืชืืจ ืืืื ืืืฉืืื ืืืืืืืื ืื ืืืื ืืืชืืืื, ืื ื ืืื ืืืืืื ืืช ืืกืคืจ ืขืืืื ืืฉืืื, ืื ืคืฉืื ืืืคืื ืืช ืืฉืืื ืืืืจืกืืื ืืืชืจ, ืื ืฉืืื ืืืคืขื ืืืงืื ืืืชืจ, ืืขืื ืืช ืืืืื ืืืชืืืืช ืงืื ืืช. ืืื ืืชืืจ ืืงืื. - ืืขืืงืจ ืืื ืืื ืืคืงื ืขื ืืขืืืก ืขื ืืืืกืงืื, ืื... ืืืงืื ืืื ื ืืืจ ืืื ืื, ืื ืื ืขื ืืืคืขืช ืืืฉืืจื SSD/NVMe ืืืขืื ืืคืื ืคืืืช ืืืืืช.
Pg_stat_all_indexes ืืื ืกืืืืกืืืงื ืขื ืืื ืืงืกืื. ืืื ืื ืืืืื. ืืื ืื ื ืืืืืื ืืืฉืชืืฉ ืื ืืื ืืงืื ืืืืข ืขื ืืฉืืืืฉ ืืืื ืืงืกืื. ืืืืฉื, ืื ืื ื ืืืืืื ืืงืืืข ืืืื ืืื ืืงืกืื ืืฉ ืื ื ืืืืชืจืื.
ืืคื ืฉืืืจ ืืืจืชื, ืขืืืื ืืื ืื ืจืง ืขืืืื ืฉื ืืืืืืช, ืื ืื ืขืืืื ืฉื ืืื ืืงืกืื. ืืืชืื ืืื, ืื ืืฉ ืื ื ืืื ืืงืกืื ืจืืื ืขื ืืืืื, ืื ืืขืช ืขืืืื ืืฉืืจืืช ืืืืื, ืืฉ ืืขืืื ืื ืืช ืืืื ืืงืกืื ืฉื ืืฉืืืช ืืืืื ืืงืกืื, ืืื ืื ืืฉ ืื ื ืืื ืืงืกืื ืฉืืื ื ืืฉืืืืฉ ืฉืืื ืขืืืจื ืกืจืืงืืช ืืื ืืงืก, ืื ืื ืชืืืืื ืื ืื. ืืื ืื ื ืฆืจืืืื ืืืืคืืจ ืืื. ืืฉืืื ืื ืื ืื ื ืฆืจืืืื ืฉืื idx_scan
. ืื ืื ื ืคืฉืื ืืกืชืืืื ืขื ืืกืคืจ ืกืจืืงืืช ืืืื ืืงืก. ืื ืืืื ืืงืกืื ืืฉ ืืคืก ืกืจืืงืืช ืืืืจื ืชืงืืคื ืืจืืื ืืืกืืช ืฉื ืืืกืื ืกืืืืกืืืงื (ืืคืืืช 2-3 ืฉืืืขืืช), ืื ืกืืืจ ืืื ืื ืฉืืืืืจ ืืืื ืืงืกืื ืืจืืขืื, ืขืืื ื ืืืืคืืจ ืืื.
ืืขืจื: ืืขืช ืืืคืืฉ ืืืจ ืืื ืืงืกืื ืฉืืื ื ืืฉืืืืฉ ืืืงืจื ืฉื ืืฉืืืืืช ืฉืืคืื ืืืจืืื, ืขืืื ืืืืืง ืืช ืื ืฆืืชื ืืืฉืืืืืช, ืืืืืื ืื ืชืื ืื ืืกืืืืกืืืื ืืื ื ืืืืืืืื, ืืื ืื ื ืขืฉื ืฉืืืืฉ ืืืื ืืงืก ืืืืกืืจ, ื ืืชื ืืืฉืชืืฉ ืื ืขื ืืขืชืงืื (ืื ืืฉ ืฉื ืขืืืก).
ืฉื ื ืงืืฉืืจืื:
ืืื ืื ืืืืืืืช ืฉืืืืชืืช ืืชืงืืืืช ืืืชืจ ืืืฆื ืืืคืฉ ืืื ืืงืกืื ืฉืืื ื ืืฉืืืืฉ.
ืืงืืฉืืจ ืืฉื ื ืืื ืืงืฉื ืืขื ืืื ืช ืืืื. ืืฉ ืฉื ืืืืืื ืืืื ืื ืืจืืืืืืื. ืื ื ืืืืืฅ ืขื ืื ืืขืืื.
ืื ืขืื ืืืื ืืกืื ืืืืฆืขืืช ืืืืื?
-
ืืื ืืงืกืื ืฉืืื ื ืืฉืืืืฉ ืื ืืจืืขืื.
-
ืื ืชืืคืกืื ืืงืื.
-
ืืื ืืช ืคืขืืืืช ืืขืืืื.
-
ืขืืืื ื ืืกืคืช ืขืืืจ ืืฉืืื.
ืื ื ืกืืจ ืืื ืืงืกืื ืฉืืื ื ืืฉืืืืฉ, ืจืง ื ืฉืคืจ ืืช ืืกื ืื ืชืื ืื.
ืืืฆืืช ืืืื ืืื pg_stat_activity
. ืืื ืื ืืืื ืฉื ืืฉืืจืืช ps
, ืจืง ื-PostgreSQL. ืื ps
ืื ืืชื ืืกืชืื ืขื ืืชืืืืืื ืืืขืจืืช ืืืคืขืื pg_stat_activity
ืื ืืจืื ืื ืืช ืืคืขืืืืช ืืชืื PostgreSQL.
ืืืื ืืืจืื ืฉืืืืฉืืื ื ืืื ืืงืืช ืืฉื?
select
count(*)*100/(select current_setting('max_connections')::int)
from pg_stat_activity;
ืื ืื ื ืืืืืื ืืจืืืช ืืช ืืคืขืืืืช ืืืืืืช, ืื ืงืืจื ืืืืืจ. ืื ืื ื ืืืืืื ืืืฆืข ืคืจืืกื ืืืฉื. ืืื ืืื ืืชืคืืฆืฅ, ืืืืืจืื ืืืฉืื ืื ืืชืงืืืื, ืฉืืืืืช ืืืืืืช ืืืคืืืงืฆืื.
select
client_addr, usename, datname, count(*)
from pg_stat_activity group by 1,2,3 order by 4 desc;
ืื ืื ื ืืืืืื ืืืจืืฅ ืฉืืืืชื ืืื ืืืจืืืช ืืช ืืืื ืืืืืืจืื ืืืืื ืืืืก ืืืืืืช ืืืืืืจ ืืืงืกืืืืืช ืืืจืืืช ืืื ืืฉ ืืื ืืจืื ืืืืืจืื. ืืืืงืจื ื ืชืื ืื ืื ื ืจืืืื ืืช ืืืฉืชืืฉ ืืื cron_role
ืคืชืื 508 ืืืืืจืื. ืืืฉืื ืงืจื ืื ืฉื. ืื ืื ื ืฆืจืืืื ืืืชืืืื ืขื ืื ืืืืกืชืื ืขื ืื. ืืืชืื ืืืืื ืฉืืืืืจ ืืืืื ืืกืคืจ ืืจืื ืฉื ืงืฉืจืื.
ืื ืืฉ ืื ื ืขืืืก ืขืืืื ืฉื OLTP, ืืฉืืืืชืืช ืฆืจืืืืช ืืืืืช ืืืืจืืช, ืืืืจืืช ืืืื ืืื ืฆืจืืืืช ืืืืืช ืฉืืืืชืืช ืืจืืืืช. ืขื ืืืช, ืื ืขืืืืช ืฉืืืืชืืช ืืจืืืืช, ืื ืืืืื ืืงืฆืจ ืืื ืื ืืืืื, ืืื ืืืืื ืืืจืื, ืฉืืืืชืืช ืืจืืืืช ืคืืืขืืช ืืืกื ืื ืชืื ืื; ืื ืืืืืจืืช ืืช ืืคืงื ืื ืคืืืืช ืฉื ืืืืืืช ืืืฉืจ ืืชืจืืฉ ืคืืฆืื ืืืืืืช. ืืชื ืฆืจืื ืืืืคืืจ ืื ืื ืคืืืืช ืืื ืืฉืืืืชืืช ืืจืืืืช.
select
client_addr, usename, datname,
clock_timestamp() - xact_start as xact_age,
clock_timestamp() - query_start as query_age,
query
from pg_stat_activity order by xact_start, query_start;
ืฉืืื ืื: ืืขืืจืช ืืงืฉื ืื ื ืืื ืืืืืช ืฉืืืืชืืช ืืขืกืงืืืช ืืจืืืืช. ืื ื ืืฉืชืืฉืื ืืคืื ืงืฆืื clock_timestamp()
ืืงืืืขืช ืืื ืคืขืืื. ืฉืืืืชืืช ืืจืืืืช ืฉืืฆืื ื, ื ืืื ืืืืืจ ืืืชื, ืืืื ืืืชื explain
, ืชืกืชืื ืขื ืืชืืื ืืืช ืืืืืฉืื ืืฆืข ืืืคืืืืืืฆืื. ืื ืื ื ืืคืืืื ืืช ืืืงืฉืืช ืืืจืืืืช ืื ืืืืืืช ืืืืฉืืืื ืืืื ืืืืื ื.
select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';
ืขืกืงืืืช ืืจืืขืืช ืื ืขืกืงืืืช ืืืฆื ืกืจืง ืืืจื ืืงืฆืื ืืืืฆื ืกืจืง ืืืจื ืืงืฆืื (ืืืืื).
ืื ืื ืืืืจ? ืืขืกืงืืืช ืืฉ ืืกืคืจ ืืฆืืื. ืื ืืชื ืืื ืื ืืื ืืืืฆืืื ืืืื ืืื ืขืช. ืืฉ ืฉืื ืืืืืจืช ืืฆืืื state
ืืืฆืืช ืื. ืืื ืื ื ืืฉืชืืฉืื ืืื ืืื ืืงืืืข ืืช ืืืืื ื.
select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';
ืืืคื ืฉืืืจืชื ืืืขืื, ืฉืชื ืืืืื ืืช ืืืื ืืืื ืืขืกืงื ืืืืืื ืืขืกืงื (ืืืืื) ืื ืจืขืื. ืื ืื? ืื ืืืฉืจ ืืืคืืืงืฆืื ืคืชืื ืขืกืงื, ืขืฉืชื ืืื ืคืขืืืืช ืืืืื ืืขื ืืื ืื ืฉืื. ืืขืกืงื ื ืฉืืจืช ืคืชืืื. ืื ื ืชืงืข, ืฉืื ืืืจ ืื ืงืืจื ืื, ืืื ืชืืคืก ืืช ืืืืืืจ, ื ื ืขื ืขื ืฉืืจืืช ืฉืืฉืชื ื ืืขืืื ืืืืืืจ ืืช ืื ืคืืืืช ืฉื ืืืืืืช ืืืจืืช, ืืฉื ืืืจืืืืงืืืจื ืฉื ืื ืืข ืืขืกืงืืืช ืฉื Postrges. ืืฆืจืื ืืืคืื ืื ืขืกืงืืืช ืืืื, ืื ืื ืืืื ืืืืงืืช, ืืื ืืงืจื.
ืื ืืชื ืจืืื ืฉืืฉ ืื ืืืชืจ ื-5-10-20 ืืื ืืืกื ืื ืชืื ืื ืฉืื, ืื ืืชื ืฆืจืื ืืืืื ืืืืชืืื ืืขืฉืืช ืืืชื ืืฉืื.
ืืื ืื ื ืืฉืชืืฉืื ืื ืืืื ืืืืฉืื clock_timestamp()
. ืื ื ืืฆืืืื ืขืกืงืืืช ืืืืืขืืื ืืช ืืืคืืืงืฆืื.
ืืคื ืฉืืืจืชื ืืืขืื, ืืกืืื ืืื ืืืฉืจ ืฉืชื ืขืกืงืืืช ืื ืืืชืจ ื ืืืืืช ืขื ืืฉืืืื ืืื ืื ืงืืืฆื. ืืฉืืื ืื ืืฉ ืื ื ืฉืื waiting
ืขื ืขืจื ืืืืืื ื true
ืื false
.
ื ืืื - ืื ืืืืจ ืฉืืชืืืื ืชืืื ืืขืืื, ืฆืจืื ืืขืฉืืช ืืฉืื. ืืืฉืจ ืชืืืื ืืืชืื, ืื ืืืืจ ืฉืืืงืื ืฉืืื ืืช ืืชืืืื ืืื ืื ืืืชืื. ืืืงืื ืืืฉื ืืืคืืคื ืืื ืืืื.
ะะฝะธะผะฐะฝะธะต: _ืืื ืืฉืื Postgres ืืจืกื 9.6 waiting
ืืืกืจ ืืืืงืื ืืืช ื ืืกืคื ืฉื ื ืฉืืืช ืืื ืคืืจืืืืืืื ื ืืกืคืื wait_event_type
ะธ wait_event
._
ืื ืืขืฉืืช? ืื ืืชื ืจืืื ื ืืื ืืืฉื ืืื ืจื, ืื ืืืืจ ืฉืืชื ืฆืจืื ืืืืคืืจ ืืืงืฉืืช ืืืื. ืื ืื ื ืคืฉืื ืืคืืืื ืขืกืงืืืช ืืืื. ืื ืื ื ืืืชืืื ืืืคืชืืื ืฉืื ืฆืจืืืื ืืืืฉืื ืืืฆืข ืืืคืืืืืืฆืื ืืื ืฉืื ืืืื ืืจืืฅ ืืืจ ืืฉืืืื. ืืื ืืืคืชืืื ืืืืขืืื ืืช ืืืคืืืงืฆืื ืืื ืฉืื ืื ืืงืจื.
ืืืืงืจื ืืงืืฆืื ื, ืื ืืขืืื ืืืืืช ืื ืงืืื ื ืืื ืืชืจืืฉืืช ืฉื ืืืื ืกืชืื. ืฉืชื ืขืกืงืืืช ืขืืื ื ืฉื ื ืืฉืืืื, ืืื ื ืืืฉื ืืืืื ืฉืื, ืืคืขื ืืืฉืืืื ืื ืืืืื. ืืืงืจื ืื, PostgreSQL ืืืจื ืืช ืืขืกืงื ืขืฆืื ืืื ืฉืืืช ืืืจืช ืชืืื ืืืืฉืื ืืขืืื. ืืื ืืฆื ืืื ืืืฆื ืืืื ืื ืืืืื ืืืืื ืืช ืื ืืขืฆืื. ืืื, PostgreSQL ื ืืืฅ ืื ืงืื ืืืืฆืขืื ืงืืฆืื ืืื.
ืืื ื ืฉืชื ืฉืืืืชืืช ืืืืคืฉืจืืช ืื ืืขืงืื ืืืจ ืืกืืื. ืื ื ืืฉืชืืฉืื ืืชืฆืืื pg_locks
, ืืืืคืฉืจ ืื ืืขืงืื ืืืจ ืื ืขืืืื ืืืืื.
ืืืงืืฉืืจ ืืจืืฉืื ืืื ืืงืกื ืืืงืฉื ืขืฆืื. ืื ืื ืืจืื.
ืืืงืืฉืืจ ืืฉื ื ืืื ืืืืจ ืขื ืื ืขืืืื. ืื ืฉืืืืฉื ืืงืจืืื, ืื ืืืื ืืขื ืืื.
ืื ืื ืื ืื ื ืจืืืื? ืื ืื ื ืจืืืื ืฉืชื ืืงืฉืืช. ืขืกืงื ืขื ALTER TABLE
ืืื ืขืกืงื ืืืกืืช. ืื ืืชืืื, ืืื ืื ืืกืชืืื, ืืืืคืืืงืฆืื ืฉืชืืขืื ืืช ืืขืกืงื ืืื ืขืืฉื ืืืจืื ืืืจืื ืืืคืฉืื. ืืืืงืฉื ืืฉื ืืื ืืื ืขืืืื. ืืื ืืืชืื ืืกืืื ืฉืืืื ืืฉืื ืื ืืคื ื ืฉืืืื ืืืืฉืื ืืขืืืืชื.
ืื ื ืืื ืืืืืช ืื ื ืขื ืืช ืื, ืืืืืง ืืื, ืื ืืื ืืืชืืืื ืขื ืื ืืืื.
ืืืืืื ืืื ืืื pg_stat_statements
. ืืคื ืฉืืืจืชื, ืื ืืืืื. ืืื ืืืฉืชืืฉ ืื, ืฆืจืื ืืืขืื ืืช ืืกืคืจืืื ืฉืื ืืชืฆืืจื, ืืืคืขืื ืืืืฉ ืืช PostgreSQL, ืืืชืงืื ืืช ืืืืืื (ืขื ืคืงืืื ืืืช) ืืื ืชืืื ืื ื ืชืฆืืื ืืืฉื.
Cัะตะดะฝะตะต ะฒัะตะผั ะทะฐะฟัะพัะฐ ะฒ ะผะธะปะธัะตะบัะฝะดะฐั
$ select (sum(total_time) / sum(calls))::numeric(6,3)
from pg_stat_statements;
ะกะฐะผัะต ะฐะบัะธะฒะฝะพ ะฟะธัััะธะต (ะฒ shared_buffers) ะทะฐะฟัะพัั
$ select query, shared_blks_dirtied
from pg_stat_statements
where shared_blks_dirtied > 0 order by 2 desc;
ืื ืื ืื ื ืืืืืื ืืงืืช ืืฉื? ืื ื ืืืจ ืขื ืืืจืื ืคืฉืืืื, ื ืืื ืืงืืช ืืช ืืื ืืืฆืืข ืืฉืืืืชื ืืืืืฆืข. ืืืื ืืื, ืื ืฉืืืืจ ืฉ-PostgreSQL ืืืื ืืื ืืื ืื ื ืฆืจืืืื ืืขืฉืืช ืืฉืื.
ืื ื ืืืืืื ืืืกืชืื ืขื ืชื ืืขืืช ืืืชืืื ืืคืขืืืืช ืืืืชืจ ืืืกื ืื ืชืื ืื ืฉืืฉื ืืช ื ืชืื ืื ืืืืืจืื ืืฉืืชืคืื. ืจืื ืื ืืขืืื ืื ืืืืง ื ืชืื ืื ืฉื.
ืืื ืื ื ืืืืืื ืคืฉืื ืืืกืชืื ืขื ืกืืืืกืืืงืืช ืฉืื ืืช ืขืืืจ ืืงืฉืืช ืืื.
ืื ืื ื pg_stat_statements
ืื ืื ื ืืฉืชืืฉืื ืื ืืื ืืื ืืช ืืืืืช. ืื ื ืืืคืกืื ืืช ืืกืืืืกืืืงื ืคืขื ืืืื. ืืืื ื ืฆืืืจ ืืช ืื. ืืคื ื ืืืคืืก ืื ืชืื ืื ืืกืืืืกืืืื ืืคืขื ืืืื, ืืืื ื ืื ื ืืื. ืื ื ืงืืฉืืจ ืืืื. ืืชื ืืืื ืืฆืคืืช ืืื.
ืื ืื ืื ื ืขืืฉืื? ืื ื ืืืฉืืื ืกืืืืกืืืงื ืืืืืช ืขืืืจ ืื ืืืงืฉืืช. ืืืืจ ืืื, ืขืืืจ ืื ืืงืฉื, ืื ื ืกืืคืจืื ืืช ืืชืจืืื ืืืืฉืืช ืฉืื ืืกืืืืกืืืงื ืืืืืืช.
ืืืื ื ืืื ืืฆืคืืช? ืื ื ืืืืืื ืืืกืชืื ืขื ืืื ืืืืฆืืข ืืืืื ืฉื ืื ืืืงืฉืืช ืืกืื ืืกืืื ืขื ืจืงืข ืื ืืืงืฉืืช ืืืืจืืช. ืื ื ืืืืืื ืืืกืชืื ืขื ืืฉืืืืฉ ืืืฉืืื ืืืขืื ืื-I/O ืืืืก ืืชืืื ื ืืืืืืช. ืืืืจ ืืฆืข ืืืคืืืืืืฆืื ืฉื ืืฉืืืืชืืช ืืืื. ืื ืื ื ืืื ืื ืืช ืืฉืืืืชืืช ืืืืืืืืช ืขื ืกืื ืืื ืื ืืืืจ ืืงืืืื ืืืืจ ืืืืฉืื ืืืื ืื ืืืฆืข ืืืคืืืืืืฆืื.
ืื ื ืฉืืจ ืื ื ืืืืืจื ืืงืืขืื? ื ืืชืจื ืขืื ืืื ืืืฉืืช ืฉืื ืฉืงืืชื ืื ืืืื ืืืืื.
ืืฉ pgstattuple
ืืื ืื ืืืืื ื ืืกืฃ ืืืืืืช ืืชืจืืืืช ืืกืื ืืจืืืช. ืื ืืืคืฉืจ ืื ืืืขืจืื bloat
ืฉืืืื ืืช, ืื ืฉื ืงืจื ืคืืฆืื ืืืื. ืืื ืืฉ ืืจืื ืคืืฆืื, ืืชื ืฆืจืื ืืืกืืจ ืืืชื ืืืืฉืชืืฉ ืืืืื ืฉืื ืื. ืืื ืืชืคืงื pgstattuple
ืขืืื ืืืืจื ืืื. ืืืื ืฉืืฉ ืืืชืจ ืฉืืืื ืืช, ืื ืืขืืื ืืืชืจ ืืื.
ืืชืจืืื ืืืื ืืื pg_buffercache
. ืื ืืืคืฉืจ ืื ืืืืืง ืืืืจืื ืืฉืืชืคืื: ืืืืื ืขืืฆืื ืืขืืืจ ืืืื ืืืืืืช ื ืขืฉื ืฉืืืืฉ ืืืคื ืืืืจ. ืืื ืคืฉืื ืืืคืฉืจ ืื ืืืกืชืื ืขื ืืืืจืื ืืฉืืชืคืื ืืืืขืจืื ืื ืงืืจื ืฉื.
ืืืืืื ืืื ืืื pgfincore
. ืืื ืืืคืฉืจ ืคืขืืืืช ืืืื ืืจืื ื ืืืื ืืืืฆืขืืช ืงืจืืืช ืืขืจืืช mincore()
, ืืืืืจ ืืืคืฉืจ ืื ืืืขืื ืืืื ืืืืืจืื ืืฉืืชืคืื, ืื ืืคืจืืง ืืืชื. ืืืื ืืืคืฉืจ, ืืื ืืืชืจ, ืืืืื ืืช ืืืืื ืืขืืืืื ืฉื ืืขืจืืช ืืืคืขืื, ืืืืืจ, ืืื ืืงืื ืชืืคืกืช ืืืืื ืืืืืื ืืขืืื, ืืืืืจืื ืืฉืืชืคืื, ืืคืฉืื ืืืคืฉืจ ืื ื ืืืขืจืื ืืช ืขืืืก ืืขืืืื ืฉื ืืืืื.
ืืืืืื ืืื - pg_stat_kcache
. ืื ืื ืืฉืชืืฉ ืืฉืืืช ืืขืจืืช getrusage()
. ืืืื ืืืฆืข ืืืชื ืืคื ื ืืืืจื ืืืฆืืข ืืืงืฉื. ืืื ืชืื ืื ืืกืืืืกืืืื ืืืชืงืืืื, ืื ืืืคืฉืจ ืื ื ืืืขืจืื ืืื ืืืงืฉื ืฉืื ื ืืืฆืืื ืขื ืงืื/ืคืื ืฉื ืืืกืง, ืืืืืจ, ืคืืขืืช ืขื ืืขืจืืช ืืงืืฆืื ืืืกืชืืืช ืขื ืืฉืืืืฉ ืืืขืื. ืขื ืืืช, ืืืืืื ืฆืขืืจ (ืฉืืขืื) ืืืฉืืื ืคืขืืืชื ืืื ืืืจืฉ PostgreSQL 9.4 ื-pg_stat_statements, ืืืชื ืืืืจืชื ืงืืื.
-
ืืืขืช ืืื ืืืฉืชืืฉ ืืกืืืืกืืืงื ืื ืฉืืืืฉื. ืืชื ืื ืฆืจืื ืชืืื ืืืช ืฆื ืฉืืืฉื. ืืชื ืืืื ืืืืื ืก, ืืจืืืช, ืืขืฉืืช ืืฉืื, ืืืฉืื ืืฉืื.
-
ืืฉืืืืฉ ืืกืืืืกืืืงื ืืื ื ืงืฉื, ืื ืจืง SQL ืจืืื. ืืกืคืช ืืช ืืืงืฉื, ืืืงืืช ืืืชื, ืฉืืืช ืืืชื, ืืกืชืืืช ืื.
-
ืกืืืืกืืืงื ืขืืืจืช ืืขื ืืช ืขื ืฉืืืืช. ืื ืืฉ ืื ืฉืืืืช, ืืชื ืคื ื ืืกืืืืกืืืงื - ืชืกืชืื, ืชืกืืง ืืกืงื ืืช, ื ืชื ืืช ืืชืืฆืืืช.
-
ืืืืชื ืกืืช. ืืฉ ืืจืื ืืงืฉืืช, ืืจืื ื ืชืื ืื. ืืชื ืชืืื ืืืื ืืืฆืข ืืืคืืืืืืฆืื ืฉื ืฉืืืืชื ืงืืืืช. ืืชื ืืืื ืืืฆืืจ ืืจืกื ืืฉืื ืืืงืฉื ืฉืืชืืืื ืื ืืืชืจ ืืืืงืืจ ืืืืฉืชืืฉ ืื.
ืชืืืืจ
ืงืืฉืืจืื ืืชืืืืื ืฉื ืืฆืื ืืืืืจ, ืขื ืกืื ืืืืจืื, ืืื ืืืื.
ืืืืจ ืืชืื ืืืชืจ
ืืกืคื ืืกืืืืกืืืงื
ืคืื ืงืฆืืืช ื ืืืื ืืขืจืืช
ืืืืืื ืชืจืืื
SQL utils ืืืืืืืืช ืฉื ืงืื sql
ืชืืื ืืืืืื ืขื ืชืฉืืืช ืืื!
ืืงืืจ: www.habr.com