RDS for PgSQL 暂时还没有对外提供 SQL 审计 和 慢 SQL 的统计功能。而用户在使用的过程中可能会由于自身数据库的优化程度不够导致 CPU 或者 IOPS 负载较高。这种情况下用户可以使用如下的 SQL 查询数据库中的表信息以及性能损耗点的统计信息。
1. 获取顺序扫描高的表
如果数据表的索引建立不合适会导致出现大量的全表扫描。全表扫描会带来大量的逻辑读的请求;特别当实例内存规格不大的情况下还会出现物理读的情况,因此需要着重避免此类情况的发生。通过如下的 SQL 可以查看到哪张表出现了大量的顺序扫描的情况:
select*frompg_stat_all_tableswhereseq_scan>0andschemaname!='pg_catalog'andschemaname!='information_schema'orderbyn_live_tupdesc;
2. 获取高 IO 消耗的查询
IOPS 是实例的重要性能指标之一。实例出现 IOPS 负载较高的情况主要由于以下几点原因:
1)内存规格较小,在执行查询的时候缓存无法存储足够量的数据,导致大量的数据换入和换出。
2)实例 IOPS 规格不足。
3)不合理的查询导致出现物理读写的情况,可以通过下面的 SQL 查看消耗 IO 最高的 SQL 语句:
SELECTquery,
shared_blks_read,
shared_blks_read / callsasreads_per_query,
blk_read_time /rowsasread_time_row
FROM pg_stat_statements
WHERE calls>0
AND rows>0
ORDER BYshared_blks_readdesc
LIMIT 10;
©2024 aliyunhn.com. All Rights Reserved 中科九洲科技股份有限公司-阿里云河南授权服务中心 豫B2-20080032-14 统计