PostgreSQL index monitor

数据库中的索引虽然可以大大提升查询的性能,但是大量冗余的索引和没使用的索引不仅会导致DML性能降低,而且会造成空间的浪费。Oracle中可以通过索引跟踪的方法来监控哪些索引是没被使用的,同样在pg中我们可以使用下面两个脚本来对索引进行监控。

1、监控没被使用的索引


```sql
SELECT
	PSUI.indexrelid::regclass AS IndexName
	,PSUI.relid::regclass AS TableName
FROM pg_stat_user_indexes AS PSUI    
JOIN pg_index AS PI 
    ON PSUI.IndexRelid = PI.IndexRelid
WHERE PSUI.idx_scan = 0 
	AND PI.indisunique IS FALSE;

2、监控列上重复的索引

由于pg中允许在同一个列创建多个索引,而大部分情况下都是不需要的。

SELECT
    indrelid::regclass AS TableName
    ,array_agg(indexrelid::regclass) AS Indexes
FROM pg_index 
GROUP BY 
    indrelid
    ,indkey 
HAVING COUNT(*) > 1;

猜你喜欢

转载自blog.csdn.net/weixin_39540651/article/details/115382113