postgresql/openGauss单表查询缓慢

        公司的产品之前是用的mysql,然后由于现在很多客户要求国产化,所以将产品从centOs+mysql调整为了Euler+opengauss,这里记录一个遇到的问题

        系统跑了一段时间后,发现有一张表,单表查询特别缓慢,总数据量5万左右,select Count(*)时间能达到10秒以上,排查问题开始

        首先怀疑是由于dead tuples过多导致的表卡顿(一张5w数据的表空间占用9个G)

        参考文章
POstgreSql清理死亡元组

        执行VACUUM清理后,空间占用降低,表查询速度快了,但是只维持了很短时间,很快就继续卡,所以接下来就继续分析。

        通过pg_stat_user_tables表查询,发现n_tup_upd (表总更新行数)达到1亿多次(仅仅跑了半个月),马上去查看pg_log日志,发现该表有一直执行更新语句,一小时200-300次,在我们系统方面来说,这是一个正常的数据。

 

最后定位到原因,执行的更新语句格式如下:
update xxxx set status = 0 where parent_id = '' and id <> '' ;

这里有一个很关键的点,在mysql中,执行的语句会被自动替换为

 update xxxx set status = 0 where parent_id = '' and id <> '' and status<>0;

但是opengauss中没有这个补全(按照标准sql没毛病),所以导致每次执行,会满足条件的整个更新,一次更新一千条左右,导致该表更新次数极高,手动将代码中sql补全后,问题解决,查询正常

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
opengausssoftware/opengauss是一个开源的关系型数据库管理系统,它是由华为公司开发的。Opengauss是基于PostgreSQL开发的,但在性能、安全性和可扩展性方面进行了优化和改进。 Opengauss具有以下特点: 1. 高性能:Opengauss通过多线程和并行查询等技术,提供了出色的性能和吞吐量。 2. 高可用性:Opengauss支持主备复制和自动故障转移,确保数据库的高可用性。 3. 高安全性:Opengauss提供了丰富的安全功能,包括访问控制、数据加密和审计等。 4. 高扩展性:Opengauss支持水平扩展和垂直扩展,可以根据需求灵活扩展数据库的容量和性能。 5. 兼容性:Opengauss兼容标准的SQL语法和PostgreSQL的扩展,可以无缝迁移现有的PostgreSQL应用。 Opengauss的源代码可以在GitHub上找到,你可以通过以下步骤获取和使用Opengauss: 1. 克隆Opengauss的代码仓库: ```shell git clone https://gitee.com/opengauss-mirror/opengauss-server.git ``` 2. 编译和安装Opengauss: ```shell cd opengauss-server cmake . make sudo make install ``` 3. 初始化和启动Opengauss数据库: ```shell initdb -D /path/to/data/directory pg_ctl -D /path/to/data/directory start ``` 4. 连接到Opengauss数据库并执行SQL命令: ```shell psql -U username -d database_name ``` 请注意,上述步骤仅为Opengauss的基本使用示例,更详细的信息和使用方法可以在Opengauss的官方文档中找到。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值