1、postgresql中索引系统视图pg_stat_user_indexes

TEST=# \d+ sys_stat_user_indexes
View "SYS_CATALOG.sys_stat_user_indexes"
Column | Type | Modifiers | Storage | Description
---------------+--------+-----------+---------+-------------
relid | OID | | plain |
indexrelid | OID | | plain |
schemaname | NAME | | plain |
relname | NAME | | plain |
indexrelname | NAME | | plain |
idx_scan | BIGINT | | plain |
idx_tup_read | BIGINT | | plain |
idx_tup_fetch | BIGINT | | plain |
View definition:
SELECT sys_stat_all_indexes.relid,
sys_stat_all_indexes.indexrelid,
sys_stat_all_indexes.schemaname,
sys_stat_all_indexes.relname,
sys_stat_all_indexes.indexrelname,
sys_stat_all_indexes.idx_scan,
sys_stat_all_indexes.idx_tup_read,
sys_stat_all_indexes.idx_tup_fetch
FROM sys_stat_all_indexes
WHERE (sys_stat_all_indexes.schemaname <> ALL (ARRAY['SYS_CATALOG'::NAME, 'INFORMATION_SCHEMA'::NAME])) AND sys_stat_all_indexes.schemaname !~ '^SYS_TOAST'::TEXT;

2、pg_stat_user_indexes中column含义

test=# select *from pg_stat_user_indexes;
-[ RECORD 1 ]-+----------
relid | 16447 #相关表的oid
indexrelid | 16450 #索引的oid
schemaname | public #模式名
relname | t3 #表名
indexrelname | t3_id_idx #索引名
idx_scan | 0 #通过索引扫描的次数,如果该值很小,说明该索引很少被用到,可以考虑删除
idx_tup_read | 0 #通过任意索引方法返回的索引行数
idx_tup_fetch | 0 #通过索引方法返回的数据行数

3、查看所有表的索引使用情况

select relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch from sys_stat_user_indexes order by idx_scan asc, idx_tup_read asc, idx_tup_fetch asc;

4、查看某张表索引使用情况

select relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch from sys_stat_user_indexes where relname = 't1' order by idx_scan asc, idx_tup_read asc,  idx_tup_read asc, idx_tup_fetch asc;

5、修复损坏索引

通过pg_dump验证到底是索引块还是表块损坏,因为pg_dump不使用索引,直接从表中获取数据。

验证故障现象

通过全表访问数据
set enable_indexscan =‘off’;
explain analzye select * from 表对象
通过索引访问数据
explain analzye select * from 表对象

a、rebuild index --该方式会锁表,DML和select都会被锁,需要根据实际业务申请维护时间
b、rebuild index concurrently --postgresl12才的功能
c、create index concurrently --并发创建索引,会使表的插入更新操作变慢,但不会锁表(推荐使用该方法)

postgresql索引使用情况及坏索引处理的更多相关文章

  1. Oracle监控用户索引使用情况,删除无用索引

    监控当前业务用户索引 一段时间后查询从未被使用的索引,删除无用索引 停止监控索引 1. 监控当前用户所有索引 得到监控所有索引的语句: select 'alter index ' || index_n ...

  2. oracle数据库什么情况下创建索引比较好

    索引就好象一本字典的目录.凭借字典的目录,我们可以非常迅速的找到我们所需要的条目.数据库也是如此.凭借Oracle数据库的索引,相关语句可以迅速的定位记录的位置,而不必去定位整个表. 虽 然说,在表中 ...

  3. oracle里要查看一条sql的执行情况,有没有走到索引,怎么看?索引不能提高效率?

    index scan 索引扫描 full table scan是全表扫描 直接explain plan for 还有个set autotrace什么 索引一定能提高执行效率吗? 索引不能提高效率的情况 ...

  4. sqlserver查看索引使用情况以及建立丢失的索引

    --查看表的索引使用情况SELECT TOP 1000o.name AS 表名, i.name AS 索引名, i.index_id AS 索引id, dm_ius.user_seeks AS 搜索次 ...

  5. 如何获得SQL Server索引使用情况

    原文:如何获得SQL Server索引使用情况 原文出自: http://www.mssqltips.com/sqlservertip/1239/how-to-get-index-usage-info ...

  6. MongoDB数据库索引构建情况分析

    前面的话 本文将详细介绍MongoDB数据库索引构建情况分析 概述 创建索引可以加快索引相关的查询,但是会增加磁盘空间的消耗,降低写入性能.这时,就需要评判当前索引的构建情况是否合理.有4种方法可以使 ...

  7. mysql如何查看索引使用情况以及优化 - guols0612

    mysql中支持hash和btree索引.innodb和myisam只支持btree索引,而memory和heap存储引擎可以支持hash和btree索引 我们可以通过下面语句查询当前索引使用情况: ...

  8. SqlServer之like、charindex、patindex 在有无索引的情况下分析

    1.环境介绍 测试环境 SQL2005 测试数据 200W条 2.环境准备 2.1建表 CREATE TABLE [dbo].[Depratments](         [Dep_id] [int] ...

  9. SQL Server 索引维护(1)——如何获取索引使用情况

    前言: 在前面一文中,已经提到了三类常见的索引问题,那么问题来了,当系统出现这些问题时,该如何应对? 简单而言,需要分析现有系统的行为,然后针对性地对索引进行处理: 对于索引不足的情况:检查缺少索引的 ...

  10. 索引构建情况分析、mongoDB安全(四)

    索引好处:加快索引相关的查询 坏处:增加磁盘空间消耗,降低写入性能 评判当前索引构建情况:     1. mongostat工具介绍     2. profile集合介绍     3. 日志介绍   ...

随机推荐

  1. 9V,12V输入充3.7V单节锂电池电路和芯片

    锂电池充电管理电路中,普遍常用使用最多的的如PW4054这种的线性降压充电管理芯片,特点就是外围极简洁,但是只能支持USB口的输入5V了.当然也有稍微高点的PW4065,输入电压范围是4.7V-8V的 ...

  2. Qt操作Json小结

    Qt操作Json 1.QJsonDocument 1.详细说明 QJsonDocument类提供了读写JSON文档的方法. QJsonDocument是一个封装了完整JSON文档的类,可以从基于UTF ...

  3. 填坑日志-云网络智慧课堂双网卡Mac地址读取错误的问题及解决

    云网络智慧课堂的双网卡问题记录及解决方案 教师端 其实这里双网卡的问题一直没有解决,分为了两部分,一部分是教师端,一部分是学生端.症状类似,问题也类似,都是在设计之初因为硬件限制可能没有考虑到双网卡的 ...

  4. 如何查看计算机的CPU信息

    CPU-Z是一款家喻户晓的CPU检测软件,是检测CPU使用程度极高的一款软件.它支持的CPU种类相当全面,软件的启动速度及检测速度都很快.另外,它还能检测主板和内存的相关信息,其中就有我们常用的内存双 ...

  5. JavaScript:对象:如何读取、添加、删除对象的属性?

    如何给对象添加属性? 直接对象名.属性名去添加属性 直接对象名[属性名]去添加属性,此时属性名得是字符串类型,可以直接引号,也可以用变量名 如何读取对象的属性值? 这个操作,和添加属性是一样的,即用点 ...

  6. 基于 Traefik 的激进 TLS 安全配置实践

    前言 Traefik是一个现代的HTTP反向代理和负载均衡器,使部署微服务变得容易. Traefik可以与现有的多种基础设施组件(Docker.Swarm模式.Kubernetes.Marathon. ...

  7. 谈谈我的「数字文具盒」 - Obsidian

    这篇关于 Obsidian 是生产力工具的终篇了,因为目前涉及 Obsidian 的文章特别多,所以我就不啰里啰嗦叙述重复的文字了.本文主要涉及到 Obsidian 和 Docusaurus 如何进行 ...

  8. Windows关闭网络防火墙教程

    Win10操作系统 1. 打开控制面板,点击"系统和安全" 2. 点击"Windows Defender 防火墙" 3. 点击"启用或关闭Window ...

  9. JS加载层

    花了些时间封装了一个JS类,内置9种图标样式,全局主要样式可自定义. 转载请附上本文链接! 全局配置 { "msg": "文字,默认: "loading...& ...

  10. BUG日记---SSM进行多表查询错误-----页面使用<c:foreach>错误

    javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over su ...