[JAVA][新项目建设奇奇怪怪的问题]国产化-磐维数据库性能问题

138 阅读1分钟

背景:

甲方表面上让你选型数据库, 其实只能选国产的磐维数据库, 其它家国产库都不是亲生的~~~

  • 磐维数据库为分布式版本 居然分布式和集中式完全两批人开发的.........
  • 推广期生产问题定位

问题:

一个普普通通的业务, 导入个几千条的文件, 居然出现了卡20分钟没结束的情况, 这背后究竟是..........

解决:

启动arthas trace该方法的执行

发现卡在查询机构表的地方, 经检查此表0条记录, 存在大量pg进程涉及此表, 此表占用空间16GB

发起外部会议 磐维数据库方给出的解释为

  • 表空间的回收是异步的, delete操作时仅标记dead tuple死元数据, 周期性真实回收空间--即使delete all也是如此

  • 故查询时实际是查了16G的数据还没走索引

  • truncate可以立刻回收空间

  • 如果没回收说明表资源占用

查到最后查到一个小开发头上

  • 早期发版时客户摇摆不定, 需求各种变动, 发布测试环境不规范, 其配的定时任务同步这个表时, 配了个* 0 2 每天2点每秒都执行, 导致此表无法回收死元数据

规范:

初期尽早确认发版规范

执行上线内容(git)审计制度

可以的话, 使用成熟数据中台同步数据

选型阶段加强与涉及数据释放, 锁 ,事务 驱动的沟通, 详细调研学习