PostgreSQL 9.6.0 �ֲ�
| |||
---|---|---|---|
��һҳ | ��һ�� | ��¼ F. �����ṩ��ģ�� | ��һҳ |
pg_stat_statementsģ���ṩһ�ַ���׷��һ����������ִ�е����� SQL ����ִ��ͳ����Ϣ��
��ģ�����ͨ����postgresql.conf��shared_preload_libraries������pg_stat_statements�����룬��Ϊ����Ҫ����Ĺ����ڴ档����ζ�����ӻ��Ƴ���ģ����Ҫһ�η�����������
��pg_stat_statements������ʱ��������ٸ÷�����
���������ݿ��ͳ����Ϣ����ģ���ṩ��һ����ͼ
pg_stat_statements�Լ�����pg_stat_statements_reset
��pg_stat_statements
���ڷ��ʺͲ�����Щͳ����Ϣ����Щ��ͼ
�ͺ�������ȫ�ֿ��õģ����ǿ�����CREATE EXTENSION pg_stat_statements
Ϊ�ض����ݿ��������ǡ�
�ɸ�ģ���ռ���ͳ����Ϣ����ͨ��һ����Ϊ pg_stat_statements����ͼʹ�á������ͼΪÿ һ�������ֵ����ݿ� ID���û� ID �Ͳ�ѯ ID����ൽ��ģ�����׷ �ٵĿ�������������������϶�����һ�С�����ͼ������ �� F-22����ʾ��
�� F-22. pg_stat_statements��
���� | ���� | ���� | ���� |
---|---|---|---|
userid | oid | pg_authid.oid | ִ�и������û��� OID |
dbid | oid | pg_database.oid | ������ִ�и��������ݿ�� OID |
queryid | bigint | �ڲ���ϣ�룬�����Ľ������������ | |
query | text | �����ı���ʽ | |
calls | bigint | ��ִ�еĴ��� | |
total_time | double precision | �ڸ�����л��ѵ���ʱ�䣬�Ժ���� | |
min_time | double precision | �ڸ�����л��ѵ���Сʱ�䣬�Ժ���� | |
max_time | double precision | �ڸ�����л��ѵ����ʱ�䣬�Ժ���� | |
mean_time | double precision | �ڸ�����л��ѵ�ƽ��ʱ�䣬�Ժ���� | |
stddev_time | double precision | �ڸ�����л���ʱ��������׼ƫ��Ժ���� | |
rows | bigint | ����������Ӱ��������� | |
shared_blks_hit | bigint | �������ɵĹ����黺���������� | |
shared_blks_read | bigint | ������ȡ�Ĺ���������� | |
shared_blks_dirtied | bigint | �����Ū��Ĺ���������� | |
shared_blks_written | bigint | �����д��Ĺ���������� | |
local_blks_hit | bigint | �������ɵı��ؿ黺���������� | |
local_blks_read | bigint | ������ȡ�ı��ؿ������ | |
local_blks_dirtied | bigint | �����Ū��ı��ؿ������ | |
local_blks_written | bigint | �����д��ı��ؿ������ | |
temp_blks_read | bigint | ������ȡ����ʱ������� | |
temp_blks_written | bigint | �����д�����ʱ������� | |
blk_read_time | double precision | ����仨�ڶ�ȡ���ϵ���ʱ�䣬�Ժ���ƣ����track_io_timing�����ã�����Ϊ�㣩 | |
blk_write_time | double precision | ����仨��д����ϵ���ʱ�䣬�Ժ���ƣ����track_io_timing�����ã�����Ϊ�㣩 |
���ڰ�ȫ��Ô�ò£¬·Ç³ï¿½ï¿½ï¿½ï¿½Ã»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ã»ï¿½Ö´ï¿½ÐµÄ²ï¿½Ñ¯ �� SQL �ı�����queryid�� �������������ͼ����װ�����ǵ����ݿ��У����Ǿ��ܹ�����ͳ ����Ϣ��
ֻҪ�ɹ滮�IJ�ѯ����SELECT��INSERT��UPDATE�Լ�DELETE������һ���ڲ���ϣ���������ͬ�IJ�ѯ�ṹ�����Ǿͻᱻ��ϵ�һ����һ��pg_stat_statements�ͨ�������������Ŀ�ģ����������ѯ���˲�ѯ�е��ı�����ֵ֮���������ϵ�Ч�����ǽ��ᱻ��Ϊ����ͬ�ġ��������������������������������ϸ�������ǵ��ı���ѯ�ַ���Ϊ�������бȽϡ�
��Ϊ�˰�һ����ѯ��������ѯƥ�䣬����ֵ�ᱻ���ԣ���pg_stat_statements��ʾ�����ᱻһ��?���滻����ѯ�ı���ʣ�ಿ�־��Ǿ������pg_stat_statements����ص��ض�queryid��ϣֵ�ĵ�һ����ѯ���ı���
��ijЩ����У��������Բ�ͬ�ı��IJ�ѯ���ܻᱻ�ںϵ�һ����һ��pg_stat_statements�ͨ����ֻ�ᷢ��������ȼ۵IJ�ѯ���ϣ�����Ҳ�к�С�Ļ�����Ϊ��ϣ��ײ��Ô�����޹صIJ�ѯ���ںϵ�һ�����У��������������ڲ�ͬ�û������ݿ�IJ�ѯ��˵���ᷢ�������������
����queryid��ϣֵ�Ǹ��ݲ�ѯ�������ͷ�����ı������ģ����������Ҳ���ܴ��ڣ����������ͬ�ı��IJ�ѯ���ڲ������粻ͬ��search_path�����Ô������в�ͬ�ĺ��壬���ǾͿ�����Ϊ��ͬ������ڡ�
pg_stat_statements��ʹ���߿���ϣ��ʹ�� queryid��Ҳ������dbid��userid��ϣ���Ϊһ����Ȳ�ѯ�ı����ȶ��Ϳɿ��ı�ʶ�������ǣ���һ�����Ҫ���ǣ�����queryid��ϣֵ�ȶ���ֻ�����޵ı��ϡ���Ϊ�ñ�ʶ���Ǵӽ�����������������ģ�����ֵ����������ʽ���ֵ��ڲ������ʶ���ĺ���������һЩΥ��ֱ���ĺ��塣���磬�����������ѯ������ͬһ���������Ǹñ������β�ѯ֮�䱻ɾ�������ؽ�����Ȼ��������ѯ����ȫһ�µģ�����pg_stat_statements����������Ϊ�Dz�ͬ�ġ���ϣ����Ҳ�Ի����ܹ��Լ�ƽ̨����������IJ������С�����һ������ΪPostgreSQL�IJ�ͬ���汾֮��queryid���ᱣ���ȶ��Dz���ȫ�ġ�
���ݾ��飬ֻ���ڵײ�������汾�Լ�Ŀ¼Ԫ����ϸ�ڱ�����ȫ��ͬʱ��queryidֵ���ܱ��ٶ�Ϊ�ȶ����ҿɱȡ���̨���뵽�������� WAL �طŵĸ����еķ����������ͬ�IJ�ѯ����һ����queryidֵ�����ǣ��߼�����ģʽ������֤���������ϸ���϶�������ȫһ���ĸ��ƣ�������߼����ƻ�֮��������ʱ��queryid������һ�����õı�ʶ������������ʣ��Ƽ�ֱ�ӽ��в��ԡ�
�д����ԵIJ�ѯ�ı���������һ���ⲿ�����ļ��У����Ҳ������Ĺ����ڴ档 ��ˣ������Ǻܳ��IJ�ѯ�ı�Ҳ�ܱ��ɹ��Ĵ洢����������������ۻ��˺ܶ� ���IJ�ѯ�ı������ⲿ�ļ�Ҳ���������ܴ���Ϊһ�ָֻ���������������� ���������pg_stat_statements���ܻ�ѡ������Щ��ѯ�ı��� ����pg_stat_statements��ͼ�е��������������ʾ�յ� query�򣬲�����ÿ��queryid������� ͳ����Ϣ�ᱻ�����������������������������Կ��Ǽ�С pg_stat_statements.max����ֹ������
pg_stat_statements_reset() ���� void
pg_stat_statements_reset
����Ŀǰ��pg_stat_statements�ռ�������ͳ����Ϣ��Ĭ������£��������ֻ�ܱ������û�ִ�С�
pg_stat_statements(showtext boolean) returns setof record
pg_stat_statements��ͼ����һ��Ҳ��
pg_stat_statements
�ĺ��������塣�ͻ��˿���ֱ�ӵ���
pg_stat_statements
����������ͨ��ָ��
showtext := false�����Բ�ѯ�ı���������Ӧ����ͼ��
query�е�OUT���������ؿ�ֵ����
���������Ϊ��֧�ֲ����ظ����ճ��Ȳ����IJ�ѯ�ı����ⲿ���߶���Ƶġ�
���๤�߿���ת�����л����һ���۲쵽�IJ�ѯ�ı�����Ϊ�����
pg_stat_statements�Լ�������ȫ������������ֻ����Ҫ��
ʱ�������ѯ�ı�����Ϊ��������Ѳ�ѯ�ı��洢��һ���ļ��У����ַ�����
�Խ����ظ����pg_stat_statements���ݵ�
���� I/O��
pg_stat_statements.max���ɸ�ģ����ٵ����������Ŀ����pg_stat_statements��ͼ���е����������������۲⵽�Ŀ����ֵ���䳬��������������ٱ�ִ�е�������Ϣ���ᱻ������Ĭ��ֵΪ 5000���������ֻ���ڷ���������ʱ���á�
pg_stat_statements.track������Щ���ᱻ��ģ�������ָ��top���Ը��ٶ�����䣨��Щֱ���ɿͻ��˷�������䣩��ָ��all�����Ը���Ƕ�׵���䣨�����ں����е��õ���䣩��ָ��none���Խ������ͳ����Ϣ�ռ���Ĭ��ֵ��top�� ֻ�г����û��ܹ��ı�������á�
pg_stat_statements.track_utility���Ƹ�ģ���Ƿ����ٹ���������������dz���SELECT��INSERT�� UPDATE��DELETE֮�����е��������Ĭ��ֵ��on�� ֻ�г����û��ܹ��ı�������á�
pg_stat_statements.saveָ���Ƿ��ڷ������ر�֮�󻹱������ͳ����Ϣ�����������Ϊoff����ô�رպ󲻱���ͳ����Ϣ�����ڷ���������ʱҲ������������ͳ����Ϣ��Ĭ��ֵΪon���������ֻ����postgresql.conf�ļ��л����ڷ����������������á�
��ģ��Ҫ����pg_stat_statements.max�ɱ����Ķ��⹲���ڴ档ע��ֻҪ��ģ�鱻����ͻ�������ô����ڴ棬����pg_stat_statements.track������Ϊnone��
��Щ����������postgresql.conf�����á����͵��÷������ǣ�
# postgresql.conf shared_preload_libraries = 'pg_stat_statements' pg_stat_statements.max = 10000 pg_stat_statements.track = all
bench=# SELECT pg_stat_statements_reset(); $ pgbench -i bench $ pgbench -c10 -t300 bench bench=# \x bench=# SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5; -[ RECORD 1 ]--------------------------------------------------------------------- query | UPDATE pgbench_branches SET bbalance = bbalance + ? WHERE bid = ?; calls | 3000 total_time | 9609.00100000002 rows | 2836 hit_percent | 99.9778970000200936 -[ RECORD 2 ]--------------------------------------------------------------------- query | UPDATE pgbench_tellers SET tbalance = tbalance + ? WHERE tid = ?; calls | 3000 total_time | 8015.156 rows | 2990 hit_percent | 99.9731126579631345 -[ RECORD 3 ]--------------------------------------------------------------------- query | copy pgbench_accounts from stdin calls | 1 total_time | 310.624 rows | 100000 hit_percent | 0.30395136778115501520 -[ RECORD 4 ]--------------------------------------------------------------------- query | UPDATE pgbench_accounts SET abalance = abalance + ? WHERE aid = ?; calls | 3000 total_time | 271.741999999997 rows | 3000 hit_percent | 93.7968855088209426 -[ RECORD 5 ]--------------------------------------------------------------------- query | alter table pgbench_accounts add primary key (aid) calls | 1 total_time | 81.42 rows | 0 hit_percent | 34.4947735191637631
Takahiro Itagaki <[email protected]>
��Peter Geoghegan <[email protected]>
Ϊ�������˲�ѯ���滯�Ĺ��ܡ�
��һҳ | ��ʼҳ | ��һҳ |
pgrowlocks | ��һ�� | pgstattuple |