pg查看某个表的索引信息,优化sql语句
目录
2、安装pg_stat_statements插件此插件用于统计数据库的资源消耗,分析SQL语句
4、分析SQL可以通过查询pg_stat_statements视图,获取统计信息
1. 查询表的索引
-
select * from pg_indexes where tablename='student';
-
select * from pg_statio_all_indexes where relname='student';
2、安装pg_stat_statements插件
此插件用于统计数据库的资源消耗,分析SQL语句
3、配置pg_stat_statements采样参数
–——在postgresql.conf文件添加
pg_stat_statements.max = 10000 # 在pg_stat_statements中最多保留多少条统计信息
pg_stat_statements.track = all # all - (所有SQL包括函数内嵌套的SQL), top - 直接执行的SQL(函数内的sql不被跟踪), none - (不跟踪)
pg_stat_statements.track_utility = off # 是否跟踪非DML语句 (例如DDL,DCL), on表示跟踪, off表示不跟踪
pg_stat_statements.save = on # 重启后是否保留统计信息
修改完postgresql.conf文件后,重启数据库restart
4、分析SQL
可以通过查询pg_stat_statements视图,获取统计信息
-
postgres=# select * from pg_stat_statements;
-
userid | dbid | queryid | query | calls | total_time | min_time | max_time | mean_time | stddev_time | rows | shared_blks_hit | shared_blks_read | shared_blks_dirtied | shared_blks_written | local_blks_hit | local_blks_read | local_blks_dirtied | local_blks_written | temp_blks_read | temp_blks_written | blk_read_time | blk_write_time
-
--------±-----±--------±------±------±-----------±---------±---------±----------±------------±-----±----------------±-----------------±--------------------±--------------------±---------------±----------------±-------------------±-------------------±---------------±------------------±--------------±---------------
1.字段分析
字段名 类型 引用 描述
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_read 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被启用,否则为零)
5.获取不同情况的SQL
(1)最耗IO的SQL
单次消耗IO的前五条SQL,降序
select userid::regrole, dbid, query from pg_stat_statements order by (blk_read_time blk_write_time)/calls desc limit 5;
总消耗IO的前五条SQL,降序
select userid::regrole, dbid, query from pg_stat_statements order by (blk_read_time blk_write_time) desc limit 5;
(2)最耗时的SQL
单次调用耗时前五条SQL,降序
select userid::regrole, dbid, query from pg_stat_statements order by mean_time desc limit 5;
总耗时前五条SQL,降序(最关注的)
select userid::regrole, dbid, query from pg_stat_statements order by total_time desc limit 5;
(3)响应时间抖动最严重的SQL
select userid::regrole, dbid, query from pg_stat_statements order by stddev_time desc limit 5;
(4)最耗共享内存的SQL
select userid::regrole, dbid, query from pg_stat_statements order by (shared_blks_hit shared_blks_dirtied) desc limit 5;
(5)最耗临时空间的SQL
select userid::regrole, dbid, query from pg_stat_statements order by temp_blks_written desc limit 5
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfkfhhj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01