postgresql 数据库 重建索引 所需时间测试

postgresql 数据库 重建索引 所需时间测试

文章目录

  • postgresql 数据库 重建索引 所需时间测试
  • 前言
  • 测试前准备
  • 重建索引前数据库状态
  • 测试计划
  • 重建索引命令
  • 测试开始
      • 1.先对表2进行测试
      • 2. 表3测试
      • 3. 表1测试
  • 🌈后记

前言

众所周知,postgresql数据库使用久了,数据量更新大的表的索引会不断膨胀,需要重建索引来保证数据库的效率。那重建索引需要多长时间呢?

测试前准备

环境:
pg版本:11.5
系统:Linux

重建索引前数据库状态

查询数据库状态:
在这里插入图片描述

如图所示,上图这几个表的索引的大小已经比表中的数据量还大了,很明显索引已经膨胀了,这次我们来拿这三个表来测试一下,看看实验结果如何

测试计划

上图中表一,是一个拥有4亿数据量的表,索引已经占到了112G了,这个表我们来测试重建需要所花费多长的时间,表2和表3都是同一个分布表的子分区表,数据量也差不多,索引大小也一样,那这样打算,表2进行整表重建索引,表3进行单个索引单个索引的重建,看看他们相差多少时间。

先查看这三张表的索引数量:

表1:

在这里插入图片描述

表2:
在这里插入图片描述

表3:
在这里插入图片描述

本文章只针对测试重建索引,不对索引进行优化!!!
本文章只针对测试重建索引,不对索引进行优化!!!
本文章只针对测试重建索引,不对索引进行优化!!!

重建索引命令

REINDEX [ ( option [, ...] ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM }[ CONCURRENTLY ] namewhere option can be one of:CONCURRENTLY [ boolean ]TABLESPACE new_tablespaceVERBOSE [ boolean ]
REINDEX TABLE CONCURRENTLY table_name;

注意:
(REINDEX TABLE CONCURRENTLY pg11不支持,pg14支持)

测试开始

1.先对表2进行测试

REINDEX TABLE  "表2" ;

表2中数据19Gb,数据量79340800,(8千万) ,索引条数5,大小20Gb。

在这里插入图片描述
用时953.526s

在这里插入图片描述
重建索引后,表2的索引少了8G,还是很多,需要后续继续优化,用时953.526s。

2. 表3测试

reindex index     索引命名;

在这里插入图片描述
注:
由于pg11不支持reindex index 使用 CONCURRENTLY 参数,可能会有一些影响,可能会发生死锁等等。

结果

表3中数据19Gb,数据量78852500,(8千万) ,索引条数5,大小20Gb。
在这里插入图片描述
在这里插入图片描述
用时917.059

在这里插入图片描述
经过测试,发现2种方式所用时间相差不大。

3. 表1测试

因为数据库版本是pg11.5,不支持REINDEX 使用 CONCURRENTLY 参数,为了不影响业务,在对表1的操作中只能采用drop的方法,然后并行创建索引的方式。

在这里插入图片描述
在这里插入图片描述

表1中数据19Gb,数据量499677000,(50亿) ,索引条数3,大小112Gb。

在这里插入图片描述

在这里插入图片描述
共用时3960s

在这里插入图片描述

🌈后记

如果本文章有何错误,请您评论中指出,或联系我,我会改正,如果您觉得这篇文章有用,请帮忙一键三连,让更多的人看见,谢谢
作者 yang_z_1 csdn博客地址: https://blog.csdn.net/yang_z_1?type=blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20817.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

layui入门

layui入门 一.ayui简介1.简单易用2.组件丰富3.高度定制化4.响应式布局5.轻量灵活 2.layui的入门基础操作3.登录实例4.注册实例 一.ayui简介 Layui(流行音 “layui”,来自“领域的模块化”)是一款前端UI框架,专注于提升 Web 开发效…

解决microsoft windows 恶意软件删除工具 占用内存高

1、winR快捷键,输入regedit,按回车键进入注册表编辑器 2、定位到 \HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ 并创建新项MRT 3、 新建DWORD(32)值,命名为DontOffer ThroughWUAU,数值数据为1; 4、以管理员身份运行命令提示符&#x…

论文(1)——大家说SCI的一区二区和CCF中A类B类是什么意思?

文章目录 引言问题描述问题解决CCF 和A、B、C类CCF注意事项 SCI和一区、二区如何判定你找的论文所属的会议或期刊是几区或者几类?使用特定的网站查询使用浏览器插件 一年之内的应该投什么刊物? 总结参考 引言 已经研一暑假了,周围很多人已经…

【测试开发】Junit 框架

目录 一. 认识 Junit 二. Junit 的常用注解 1. Test 2. Disabled 3. BeforeAll 4. AfterAll 5. BeforeEach 6. AfterEach 7. 执行测试 三. 参数化 1. 引入依赖 2. 单参数 3. 多参数 3.1 通过CSV实现 3.2 通过方法实现 4. 测试用例的执行顺序 四. 断言 五…

系统架构设计师-项目管理

目录 一、盈亏平衡分析 二、进度管理 1、WBS工作分解结构 2、进度管理流程 (1)活动定义 (2)活动排序 (3)活动资源估算: (4)活动历时估算: (5&…

ASP.NET版本泄露【原理扫描】

如果想屏蔽 Server&#xff0c;X-AspNet-Version&#xff0c;X-AspNetMvc-Version 和 X-Powered-By&#xff0c;需要增加&#xff1a; <httpProtocol><customerHeaders><remove name"Server" /><remove name"X-AspNet-Version" />…

volatile原理剖析和实例讲解

一、是什么 volatile是Java的一个关键字&#xff0c;是Java提供的一种轻量级的同步机制&#xff0c; 二、能做什么 保证了不同线程对这个变量进行操作时的可见性&#xff0c;有序性。 三、可见性 可见性主要是指一个线程修改了共享变量的值&#xff0c;另一个线程可以看见…

PLC远程控制模块的通讯方式有哪些?工业网关ZP4000的功能与特点

在工业场景中&#xff0c;我们PLC通常采用有线的方式进行数据通讯&#xff0c;这种通讯方式距离受到局限&#xff0c;随着科技进步发展&#xff0c;人们更依赖于远程控制&#xff0c;以无线通讯的方式能够以更低成本的方式实现PLC远程控制管理。 在不同区域的PLC场景中&#x…

Django_POST请求的CSRF验证

目录 正常验证CSRF form表单 ajax的POST请求 关闭CSRF验证 源码等资料获取方法 django的POST接口发起请求默认清空下需要进行CSRF验证 正常验证CSRF form表单 如果form表单直接在标签之间添加{{ csrf_token }}就可以完成验证 ajax的POST请求 ajax的post需要在请求的he…

【监控系统】Prometheus监控组件Node-Exporter配置实战

这一节&#xff0c;我们来配置一下Node-Exporter&#xff0c;那么我们先来了解一下什么是Prometheus的Exporter&#xff1f; 任何向Prometheus提供监控样本数据的程序都可以被称为一个Exporter&#xff0c;它是一种用于将不同数据源的指标提供给Prometheus进行收集和监控的工具…

ITIL 4—监控和事态管理实践

1 关于本文 本文为监控和事态管理实践提供了实用指南。它分为五个主要部分&#xff0c;内容包括&#xff1a; 有关实践的一般信息监控和事态管理的流程和活动及其在服务价值链中的角色监控和事态管理中涉及的组织和人员支持监控和事态管理的信息和技术合作伙伴和供应商对监控…

Linux进度条小程序

文章目录 &#x1fa85;1. 回车换行♥1.1 回车♥1.2 换行 &#x1fa86;2. 缓冲区现象&#x1f9f8;3. 进度条实现♟3.1 逻辑♟3.2 进度条样式♟3.3 代码实现 &#x1f0cf;4. 场景使用 &#x1fa85;1. 回车换行 在学习C语言的时候&#xff0c;我们输出的时候&#xff0c;通常…