PostgreSQL 是一个免费数据库,对于处理分析型+交易型混合型系统来说确实很不错,特别是版本的升级到11.2后性能提升很多,很多运行机制跟oracle越来越接近,确实很强大,但是开源系统确实存在一些不如意地方,需要长时间项目问题集锦积累才能慢慢的领悟。 而作为从非功能测试转型做技术运维,在运维过程中会从非功能方面(高可用性、高可靠性、可扩展性等)和性能测试优化方面考虑确实可以避免很多生产不必要的故障问题,但是对于开源的技术在版本迭代过程中总会有些不如意的技术故障还是需要我们自己持续性学习、挖掘、积累、提升,才能确保技术能持续满足业务运营发展和市场需求。 如下问题是我们17年上线的系统,经2年的运行,很多业务表达到千万级,导致需要读写分离、分表等来优化,但是问题还是偶尔出现,说明技术还不到位,例如如下:

问题原因:

目前生产环境使用postgres9.5版本,主从配置,但是因为行业业务的特殊性,有些回访表等都是三四百万级别的,而且日常更新频繁度非常高,日常使用频繁比较高的表,一天insert、update都是接近十万,delete三四万以上,导致在对该表的统计信息不准确,而pg默认 autovacuum默认参数导致部分表因本身存量数据大,更新比例小,导致这些日常被用到的大表反而没办法被重新统计分析,最终导致磁盘IO 高,CPU 高问题,而因为在调整过程中调整不当也导致如下,在对表进行批量update 时,而PG就进行 autovacuum_analyze,结果导致出现 ShareLock错误,具体错误如下:

错误内容:

2019-04-14 15:15:47,707 ERROR [thinkgem.jeesite.common.repeat_form_validator.Token] - 2-

2019-04-14 15:15:47,707 ERROR [thinkgem.jeesite.common.repeat_form_validator.Token] - [email protected]

461f4ab1

2019-04-14 15:16:15,952 ERROR [thinkgem.jeesite.common.repeat_form_validator.Token] - 2-

2019-04-14 15:16:15,952 ERROR [thinkgem.jeesite.common.repeat_form_validator.Token] - [email protected]

285d498f

2019-04-14 15:16:18,138 ERROR [thinkgem.jeesite.common.repeat_form_validator.Token] - 1-61322fb9-7ca7-482b-99ee-913074957a94

2019-04-14 15:16:24,227 ERROR [500.jsp] -

Error updating database. Cause: org.postgresql.util.PSQLException: 错误: 检测到死锁

详细:进程6533等待在事务 36964707上的ShareLock; 由进程10733阻塞.

进程10733等待在事务 36964708上的ShareLock; 由进程6533阻塞.

建议:详细信息请查看服务器日志.

在位置:当更新关系"visit_crd"的元组(11314, 33)时

The error may involve defaultParameterMap

The error occurred while setting parameters

SQL: UPDATE visit_crd SET visit_plan_id = ?, customer_number = ?, call_id = ?, time_start = ?, time_end = ?,

duration = ?, type = ?, route = ?, cpn = ?, cdpn = ?, recording = ?, trunk_number = ?, update_by = ?, updat

e_date = ?, remarks = ?, affiliation = ?, update_ind = ?, execute_ind = ? WHERE id = ?

Cause: org.postgresql.util.PSQLException: 错误: 检测到死锁

详细:进程6533等待在事务 36964707上的ShareLock; 由进程10733阻塞.

进程10733等待在事务 36964708上的ShareLock; 由进程6533阻塞.

建议:详细信息请查看服务器日志.

在位置:当更新关系"visit_crd"的元组(11314, 33)时

; SQL []; 错误: 检测到死锁

详细:进程6533等待在事务 36964707上的ShareLock; 由进程10733阻塞.

进程10733等待在事务 36964708上的ShareLock; 由进程6533阻塞.

建议:详细信息请查看服务器日志.

在位置:当更新关系"visit_crd"的元组(11314, 33)时; nested exception is org.postgresql.util.PSQLException: 错误: 检测到死锁

详细:进程6533等待在事务 36964707上的ShareLock; 由进程10733阻塞.

进程10733等待在事务 36964708上的ShareLock; 由进程6533阻塞.

建议:详细信息请查看服务器日志.

在位置:当更新关系"visit_crd"的元组(11314, 33)时

org.springframework.dao.DeadlockLoserDataAccessException:

问题分析

PG 默认 autovacuum

1、autovacuum_vacuum_threshold:默认50

2、autovacuum_vacuum_scale_factor默认值为20%。

3、autovacuum_analyze_threshold:默认50。

4、autovacuum_analyze_scale_factor默认10%

第一次优化:

autovacuum_vacuum_scale_factor = 0.001

autovacuum_analyze_scale_factor = 0.001

结果导致如上错误信息:

第二次优化:

autovacuum_vacuum_scale_factor = 0.03

autovacuum_analyze_scale_factor = 0.03

问题解决

pg库sharelock_PG数据库错误: 检测到ShareLock死锁处理相关推荐

  1. PostgreSQL 数据库检测到 ShareLock 死锁的处理方法

    PostgreSQL 是一个免费数据库,对于处理分析型+交易型混合型系统来说确实很不错,特别是版本的升级到11.2后性能提升很多,很多运行机制跟Oracle越来越接近,确实很强大,但是开源系统确实存在 ...

  2. java联接pg库_Java14:使用Java 14的新记录联接数据库表

    java联接pg库 您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将 ...

  3. java联接pg库_成为Java流大师–第5部分:将联接的数据库表转换为流

    java联接pg库 是否可以将联接的数据库表转换为Java Stream? 答案是肯定的. 由于我们已经多次提出这个问题,因此我们决定写另一篇动手实验文章,说明如何执行更高级的Stream Joins ...

  4. Windows——[检测到可能的windows 更新数据库错误]解决方案

    问题描述 使用疑难解答后 显示 "检测到可能的windows 更新数据库错误" 且无法修复 解决方案 在管理员命令提示符下键入以下命令: Dism /Online /Cleanup ...

  5. Oracle 迁移至 MySQL、PG等分布式数据库,可能遇到的12个典型问题

    近年来,分布式数据库逐渐占据了OLTP领域较大的市场,尤其在互联网领域,MySQL.PG等分布式数据库的应用非常广泛.随着软件国产化.自主可控战略的提出,非互联网企业也开始考虑数据库转型,很多企业原本 ...

  6. Microsoft SQL Server 数据库 错误号大全

    panchzh :Microsoft SQL Server 数据库 错误号大全 0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 ...

  7. 11gR2RAC环境DBCA创建一个数据库错误ORA-15055 ORA-15001

    11gR2RAC环境DBCA创建一个数据库错误ORA-15055 ORA-15001 象: 在11gR2 GridInfrastructure和Database软件安装完毕之后,运行DBCA创建数据库 ...

  8. 不同库表数据库迁移工具_Microsoft提供的数据库迁移助手工具概述

    不同库表数据库迁移工具 This article gives the overview of the Database Migration Assistant Tool to access, plan ...

  9. mysql暴力撞库与弱密码检测

    暴力撞库与弱密码检测 最近在生产数据库上碰到了一个问题,觉得挺有意思,总结出来和大家分享下. 关于暴力撞库和弱密码检测. 相信使用数据库的大家应该都不陌生,暴力撞库,简单通俗的讲通过一堆生成的密码,然 ...

最新文章

  1. Hibernate之检索方式
  2. 樊登读书赋能读后感_文化赋能,助力终端 | 第五届齐心办公节携手樊登读书点亮办公生活...
  3. c/c++十七: 变长参数
  4. IntelliJ IDEA 常用设置 1
  5. 【原】postman常用设置全局变量的js片段
  6. https的ssl证书申请及服务器的nginx的配置教程
  7. CSUOJ 1111 三家人
  8. idea中mapper.xml的头文件配置
  9. 在lua的string库和正则表达式
  10. web前端进阶架构师之路
  11. 修复ie浏览器无访问页面或dns问题
  12. Detours库使用与原理分析
  13. 模块划分-4 模块划分
  14. 是什么撑起了极兔快递近200亿美元的估值?
  15. php文件迅雷下载不弹出来,javascript,_文件下载按钮被迅雷响应后,JS事件无法触发,javascript - phpStudy...
  16. 制作血条/蓝条/蓄力条等进度条(Progress Bar)
  17. 使用DISM启用或禁用Windows功能
  18. 顶点、 图元、片元、像素的含义
  19. 解决IDEA-not allow to run in parallel
  20. python爬虫菜鸟教程-Python数据分析,学习路径拆解及资源推荐

热门文章

  1. 番茄助手 Visual Assist X 下载安装及使用
  2. 活动报名 | 加州大学圣地亚哥分校商静波:如何通过极弱监督来完成海量文本的结构化?...
  3. Java实现多附件的邮件发送
  4. txt文档在html中乱码怎么办,txt文件打开显示乱码怎么办?
  5. mybatis报错:argument type mismatch
  6. 初识ElasticSearch(2) -文档查询之match查询 | 分词器
  7. 31_ElasticSearch 修改IK分词器源码来基于mysql热更新词库
  8. 向上取整⌈⌉和向下取整⌊⌋符号
  9. 【身体这些部位不舒服的时候,你知道意味着什么吗?】收藏起来吧,震惊!实在是太...
  10. 雷电网络RESTful API手册中文版