返回顶部
首页 > 资讯 > 数据库 >PostgreSQL -- 性能优化的几个小tip
  • 644
分享到

PostgreSQL -- 性能优化的几个小tip

2024-04-02 19:04:59 644人浏览 独家记忆
摘要

一、回收磁盘空间 在postgresql中,使用delete和update语句删除或更新的数据行并没有被实际删除,而只是在旧版本数据行的物理地址上将该行的状态置为已删除或已过期。因此当数据表中的数

一、回收磁盘空间

postgresql中,使用delete和update语句删除或更新的数据行并没有被实际删除,而只是在旧版本数据行的物理地址上将该行的状态置为已删除或已过期。因此当数据表中的数据变化极为频繁时,那么在一段时间之后该表所占用的空间将会变得很大,然而数据量却可能变化不大。要解决该问题,需要定期对数据变化频繁的数据表执行VACUUM操作。现在新版Postgresql是自动执行VACUUM的

使用VACUUM和VACUUM FULL命令回收磁盘空间
postgres=# vacuum arr_test;
postgres=# vacuum full arr_test;

创建测试数据:
postgres=# create table arr (id serial, value int, age int)  #创建测试表
postgres=# insert into arr (value, age) select generate_series(1, 1000000) as value, (random()*(10^2))::integer;  #插入100W测试数据
postgres=# select pg_relation_size('arr');   #查看表大小
 pg_relation_size 
------------------
         44285952
(1 row)
postgres=# delete from arr where id<300000;  #删除299999条数据
DELETE 299999
postgres=# select pg_relation_size('arr');   #再次查看表大小,没有变化
pg_relation_size 
------------------
         44285952
(1 row)
postgres=# vacuum full arr;    #vacuum表,再次查看表大小,明显变小了
VACUUM
postgres=# select pg_relation_size('arr');
 pg_relation_size 
------------------
         30998528
(1 row)
postgres=# update arr set age=10000 where id>=300000 and id<600000;   #更新30W条数据
UPDATE 300000
postgres=# select pg_relation_size('arr');  #查看表大小,明显再次增大
 pg_relation_size 
------------------
         44285952
(1 row)

二、重建索引

在PostgreSQL中,为数据更新频繁的数据表定期重建索引(REINDEX INDEX)是非常有必要的。对于B-Tree索引,只有那些已经完全清空的索引页才会得到重复使用,对于那些仅部分空间可用的索引页将不会得到重用,如果一个页面中大多数索引键值都被删除,只留下很少的一部分,那么该页将不会被释放并重用。在这种极端的情况下,由于每个索引页面的利用率极低,一旦数据量显著增加,将会导致索引文件变得极为庞大,不仅降低了查询效率,而且还存在整个磁盘空间被完全填满的危险。
对于重建后的索引还存在另外一个性能上的优势,因为在新建立的索引上,逻辑上相互连接的页面在物理上往往也是连在一起的,这样可以提高磁盘页面被连续读取的几率,从而提高整个操作的IO效率

postgres=# REINDEX INDEX testtable_idx;

三、重新收集统计信息

PostgreSQL查询规划器在选择最优路径时,需要参照相关数据表的统计信息用以为查询生成最合理的规划。这些统计是通过ANALYZE命令获得的,你可以直接调用该命令,或者把它当做VACUUM命令里的一个可选步骤来调用,如VACUUM ANAYLYZE table_name,该命令将会先执行VACUUM再执行ANALYZE。与回收空间(VACUUM)一样,对数据更新频繁的表保持一定频度的ANALYZE,从而使该表的统计信息始终处于相对较新的状态,这样对于基于该表的查询优化将是极为有利的。然而对于更新并不频繁的数据表,则不需要执行该操作。
我们可以为特定的表,甚至是表中特定的字段运行ANALYZE命令,这样我们就可以根据实际情况,只对更新比较频繁的部分信息执行ANALYZE操作,这样不仅可以节省统计信息所占用的空间,也可以提高本次ANALYZE操作的执行效率。这里需要额外说明的是,ANALYZE是一项相当快的操作,即使是在数据量较大的表上也是如此,因为它使用了统计学上的随机采样的方法进行行采样,而不是把每一行数据都读取进来并进行分析。因此,可以考虑定期对整个数据库执行该命令。
事实上,我们甚至可以通过下面的命令来调整指定字段的抽样率

如:
ALTER TABLE testtable ALTER COLUMN test_col SET STATISTICS 200
注意:该值的取值范围是0--1000,其中值越低采样比例就越低,分析结果的准确性也就越低,但是ANALYZE命令执行的速度却更快。如果将该值设置为-1,那么该字段的采样比率将恢复到系统当前默认的采样值,我们可以通过下面的命令获取当前系统的缺省采样值。
postgres=# show default_statistics_target;
     default_statistics_target
    ---------------------------
     100
    (1 row)
    从上面的结果可以看出,该数据库的缺省采样值为100(10%)。
您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL -- 性能优化的几个小tip

本文链接: https://lsjlt.com/news/43295.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PostgreSQL -- 性能优化的几个小tip
    一、回收磁盘空间 在PostgreSQL中,使用delete和update语句删除或更新的数据行并没有被实际删除,而只是在旧版本数据行的物理地址上将该行的状态置为已删除或已过期。因此当数据表中的数...
    99+
    2024-04-02
  • PostgreSQL中怎么优化性能
    要优化PostgreSQL数据库的性能,可以采取以下几种方法: 确保数据库服务器的硬件配置足够强大,包括CPU、内存、磁盘等方面的...
    99+
    2024-04-09
    PostgreSQL
  • Postgresql-11.X 性能优化详解
    postgres 性能优化 系统优化 修改 /etc/grub.conf 关闭 numa=off ,修改磁盘IO调度方式 elevator=deadline 修改方法: grubby --updat...
    99+
    2024-04-02
  • PostgreSQL性能优化举例分析
    这篇文章主要讲解了“PostgreSQL性能优化举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL性能优化举例分析”吧!背景在空间数...
    99+
    2024-04-02
  • 如何优化PostgreSQL数据库的性能
    要优化PostgreSQL数据库的性能,可以采取以下措施: 使用合适的索引:为频繁查询的字段创建索引,可以加快查询速度。但是要注意...
    99+
    2024-04-09
    PostgreSQL
  • MySQL 性能优化小结
    基础概念简述 锁 数据库通过锁机制来解决并发场景 — 共享锁(读锁)和排他锁(写锁)。读锁是不阻塞的,多个客户端可以在同一时刻读取同一个资源;写锁是排他的,并且会阻塞其他的读锁和写锁。 简单提下乐观锁和悲观锁: 乐观锁:通常用于...
    99+
    2020-11-11
    MySQL 性能优化小结
  • Linux系统中PostgreSQL的性能如何优化
    要优化Linux系统中PostgreSQL的性能,可以采取以下几个方面的措施: 调整内核参数:可以通过修改Linux内核参数来优...
    99+
    2024-05-06
    Linux PostgreSQL
  • CentOS中怎么配置和优化PostgreSQL性能
    要配置和优化PostgreSQL性能,可以按照以下步骤进行操作: 使用yum安装PostgreSQL服务器和客户端: sudo ...
    99+
    2024-04-19
    CentOS PostgreSQL
  • spark性能优化要注意哪几点
    spark性能优化要注意哪几点,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一.优化方向,序列化1.官网位置2.解释:默认用的是java序列化,但是会很慢,第二...
    99+
    2023-06-02
  • 分享几个简单MySQL优化小妙招
    SQL语句执行顺序 设置大小写不敏感 查看大小写是否敏感:show variables like '%lower_case_table_names%'; windo...
    99+
    2024-04-02
  • python 性能优化方法小结
    提高性能有如下方法 1、Cython,用于合并python和c语言静态编译泛型 2、IPython.parallel,用于在本地或者集群上并行执行代码 3、numexpr,用于快速数值运算 4、multip...
    99+
    2022-06-04
    小结 性能 方法
  • nodejs的10个性能优化技巧
    下面是我们使用Node.js时遵循的10个性能规则: 1. 避免使用同步代码 在设计上,Node.js是单线程的。为了能让一个单线程处理许多并发的请求,你可以永远不要让线程等待阻塞,同步或长时间运行的操作。...
    99+
    2022-06-04
    性能 技巧 nodejs
  • CSS性能优化的一些小技巧
    这篇文章主要介绍了CSS性能优化的一些小技巧,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设...
    99+
    2023-06-14
  • 小程序redux性能优化的方法
    这篇文章主要介绍“小程序redux性能优化的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“小程序redux性能优化的方法”文章能帮助大家解决问题。首先了解小程序的工作原理和性能关键点。1工作原理...
    99+
    2023-06-26
  • PostgreSQL中怎么进行性能调优和查询优化
    在 PostgreSQL 中进行性能调优和查询优化可以通过以下几种方式来实现: 使用合适的索引:创建索引可以加速查询操作,尤其是对...
    99+
    2024-03-12
    PostgreSQL
  • PostgreSQL数据库性能调优的注意点以及pg数据库性能优化方式
    目录PostgreSQL 优化思路一、排序二、索引三、连接查询方式四、多表联查时PostgreSQL提供了一些性能调优的功能1.使用EXPLAIN2.及时更新执行计划中使用的统计信息3.明确用join来关联表4.关闭自动...
    99+
    2023-03-15
    PostgreSQL性能调优 PostgreSQL性能优化 PostgreSQL数据库
  • 如何在PostgreSQL中调整参数来优化性能
    要在PostgreSQL中调整参数来优化性能,可以尝试以下几种方法: 使用pgTune工具来生成一个优化的postgresql.c...
    99+
    2024-04-09
    PostgreSQL
  • 分享12个Vue开发中的性能优化小技巧(实用!)
    目录前言1. 长列表性能优化1. 不做响应式2. 虚拟滚动2. v-for 遍历避免同时使用 v-if3. 列表使用唯一 key4. 使用 v-show 复用 DOM5. 无状态的组...
    99+
    2024-04-02
  • 微信小程序性能如何优化
    这篇文章主要介绍了微信小程序性能如何优化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序性能如何优化文章都会有所收获,下面我们一起来看看吧。为什么要做性能优化?一切性能优化都是为了体验优化1. 使用小程...
    99+
    2023-06-26
  • PostgreSQL数据库性能调优的注意点及pg数据库性能优化方法是什么
    本篇内容主要讲解“PostgreSQL数据库性能调优的注意点及pg数据库性能优化方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL数据...
    99+
    2023-03-20
    postgresql 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作