postgresql索引使用情况及坏索引处理
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索引使用情况及坏索引处理的更多相关文章
- Oracle监控用户索引使用情况,删除无用索引
监控当前业务用户索引 一段时间后查询从未被使用的索引,删除无用索引 停止监控索引 1. 监控当前用户所有索引 得到监控所有索引的语句: select 'alter index ' || index_n ...
- oracle数据库什么情况下创建索引比较好
索引就好象一本字典的目录.凭借字典的目录,我们可以非常迅速的找到我们所需要的条目.数据库也是如此.凭借Oracle数据库的索引,相关语句可以迅速的定位记录的位置,而不必去定位整个表. 虽 然说,在表中 ...
- oracle里要查看一条sql的执行情况,有没有走到索引,怎么看?索引不能提高效率?
index scan 索引扫描 full table scan是全表扫描 直接explain plan for 还有个set autotrace什么 索引一定能提高执行效率吗? 索引不能提高效率的情况 ...
- sqlserver查看索引使用情况以及建立丢失的索引
--查看表的索引使用情况SELECT TOP 1000o.name AS 表名, i.name AS 索引名, i.index_id AS 索引id, dm_ius.user_seeks AS 搜索次 ...
- 如何获得SQL Server索引使用情况
原文:如何获得SQL Server索引使用情况 原文出自: http://www.mssqltips.com/sqlservertip/1239/how-to-get-index-usage-info ...
- MongoDB数据库索引构建情况分析
前面的话 本文将详细介绍MongoDB数据库索引构建情况分析 概述 创建索引可以加快索引相关的查询,但是会增加磁盘空间的消耗,降低写入性能.这时,就需要评判当前索引的构建情况是否合理.有4种方法可以使 ...
- mysql如何查看索引使用情况以及优化 - guols0612
mysql中支持hash和btree索引.innodb和myisam只支持btree索引,而memory和heap存储引擎可以支持hash和btree索引 我们可以通过下面语句查询当前索引使用情况: ...
- SqlServer之like、charindex、patindex 在有无索引的情况下分析
1.环境介绍 测试环境 SQL2005 测试数据 200W条 2.环境准备 2.1建表 CREATE TABLE [dbo].[Depratments]( [Dep_id] [int] ...
- SQL Server 索引维护(1)——如何获取索引使用情况
前言: 在前面一文中,已经提到了三类常见的索引问题,那么问题来了,当系统出现这些问题时,该如何应对? 简单而言,需要分析现有系统的行为,然后针对性地对索引进行处理: 对于索引不足的情况:检查缺少索引的 ...
- 索引构建情况分析、mongoDB安全(四)
索引好处:加快索引相关的查询 坏处:增加磁盘空间消耗,降低写入性能 评判当前索引构建情况: 1. mongostat工具介绍 2. profile集合介绍 3. 日志介绍 ...
随机推荐
- 基于EasyCode定制Mybatisplus全自动单表实现:新增/批量新增/修改/批量删除/分页查询/ID查询
基于EasyCode定制Mybatisplus全自动单表实现CRUD接口 分页查询 ID查询 新增 批量新增 修改 批量删除 注意使用了MybatisPlus的自动填充功能,和insertBatchS ...
- Python开发Brup插件检测SSRF漏洞和URL跳转
作者:馒头,博客地址:https://www.cnblogs.com/mantou0/ 出身: 作为一名安全人员,工具的使用是必不可少的,有时候开发一些自己用的小工具在渗透时能事半功倍.在平常的渗透测 ...
- java逻辑运算&&与&的区别
本文主要阐述&&(短路与)和&(逻辑与)的运算异同:a && b 和 a&b : 共同之处是只有a和b同时为真时,结果才为真,否则为假 不同点在于 a ...
- Jmeter 之模块控制器
模块控制器作用: 模块控制器相当于python中的import 操作,即可以导入本线程组或者其他线程组下的控制器测试片段直接执行. 说明:被导入的测试片段可以是启用.禁用,导入后都将被执行. 字段解释 ...
- 物联网 IOT 设备如何脱离信息孤岛?
以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/tb5eOFNUZLtPPLipLAh3vA 本文大概 1435 个 ...
- ffmpeg常用操作
音频常用操作 常见的ffmpeg音频参数 常用参数解释: - i 表示input,即输入文件 - f 表示format,即输出格式 - vn 表示vedio not,即输出不包含视频 - ar 设定采 ...
- 《Effective C++》再次探索traits技法
首先介绍C++标准程序库中的五种迭代器,关于这个可以看我的另一个笔记:http://blog.csdn.net/m0_37316917/article/details/70053513. 对于这五种分 ...
- 跟我学Python丨图像增强及运算:局部直方图均衡化和自动色彩均衡化处理
摘要:本文主要讲解图像局部直方图均衡化和自动色彩均衡化处理.这些算法可以广泛应用于图像增强.图像去噪.图像去雾等领域. 本文分享自华为云社区<[Python从零到壹] 五十四.图像增强及运算篇之 ...
- C# 线程同步查漏补缺
同步构造 当线程 A 在等待一个同步构造,另一个线程 B 持有构造一直不释放,那么就会导致线程 A 阻塞.同步构造有用户模式构造和内核模式构造. 用户模式构造通过 CPU 指令来协调线程,所以速度很快 ...
- 请求的URI过长:414 Request-URI Too Large
问题:在项目中遇到使用get 请求,发现前端传递的参数超过nginx 服务器的限制.三种解决方法(任选一种): 1.在nginx配置文件里面把这两个缓存加大 文件位置:conf/nginx.conf ...