PostgreSQL
是一款强大的关系型
数据
库,但在实际使用过程中,许多用户经常会遇到
慢
SQL的问题。这些问题不仅会降低
数据
库性能,还会直接影响业务流程和用户体验。因此,本文将会深入分析
PostgreSQL
慢
SQL的原因和优化方案,帮助用户更好地利用这个优秀的
数据
库系统。无论你是初学者还是专业开发者,本文都将为你提供实用的技巧和方法,让你的
PostgreSQL
数据
库始终保持高效快速。
随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种
数据
库的问题都可以,目前主要是
POSTGRESQL
, MYSQL ,MONGODB ,POLARDB ,REDIS 等,期待你的加入,加群请添加微信liuaustin3.接着上期,
POSTGRESQL
的灵活性 和 本身的复杂性的确是可以在很多细节进行优化,本期从建
表
的角度来说说
POSTGRESQL
优化地方...
maintenance_work_mem默认值(64MB)是很低的,它是用于维护任务的内存设置,会影响于VACUUM,RESTORE,CREATE INDEX,ADD FOREIGN KEY和ALTER TABLE等操作的性能。这些索引可能仅名字不一样,这个时候,多余的索引既会在DML操作的时候占用资源,也会在对
表
做操作的时候反馈
慢
。PG可以针对
表
列的部分
数据
建立索引,来减小索引的大小,从而加快创建索引的速率。这样在建立索引时,可以只对需要建立索引的分区进行操作,从而提高索引建立的速度。
平台升级时遇到一个上级返回结果集失败,导致显示不出来,这个问题查了差不多两天,终于在一篇文章里面看到排序可能会对
查询
效率有所提升,在存储过程加入了order by之后终于显示出来
本来也想到过是效率过
慢
的问题,但是其它点位更多的上级可以显示,就忽略掉了,最后算是病急乱投医,没想到还真的是这样。
公司采用了apache的nifi来同步实时
数据
,偶尔会有
数据
写入缓
慢
或者停止写入占用连接池的情况,近几天有个现场突然说
数据
出现了问题,于是与公司dba开始一起排查
一、为什么写入缓
慢
或者停止写入?
经过dba的排查发现原因为,大量
数据
的更新导致PG库的
表
膨胀问题,
表
膨胀后未及时触发pg的垃圾回收机制,导致插入需要耗费大量的cpu资源,从而造成
数据
库性能不佳
更新500万记录
表
中的1条随机记录。开8000个并发。
create table test_8000 (id int primary key, cnt int default 0);insert into test_8000 s
当
数据
量比较大的时候,提升
查询
效率就是需要去考虑的事情了。一个百万级别的
表
格,如果不做任何优化的话,即使是最简单的
查询
语句执行起来也是
慢
的让人难以接受;当然“优化”本身是一个比较复杂的工程,从设计
表
、字段到
查询
语句的写法都有很多讲究,这里只考虑索引的方式,且是最普通的索引;
下面的操作中对应
数据
库
表
w008_execrise_info(8000
数据
量),w008_wf02_info(4000数...
一般的错误跟踪,只需在配置文件 【
postgresql
.conf】简单设置几个参数,当然还有错误级别等要设置。
logging_collector = on
log_destination = 'stderr'
log_directory = 'log'
定位问题库 > 读库 or 写库
查看连接数。CPU利用率到达100%,首先怀疑,是不是业务高峰活跃连接陡增,而
数据
库预留的资源不足造成的结果。我们需要查看下,问题发生时,活跃的连接数是否比平时多很多。
排除连接数激增与读写库挂掉的可能。所以只能是
慢
sql占用资源
定位是否频繁读写造成
select * from pg_stat_user_tab