关于mysql事务引发的死锁异常解决
场景
问题
死锁日志[^2]
锁类型与隔离级别
InnerDB 锁:
mysql事务
解决方案
场景
mysql 5.7
InnoDB存储引擎
jdk 8 springboot
hikari 连接池
spring:
application:
name: product
datasource:
url: jdbc:mysql://123456:3306/productdb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
userName:
password:
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
#连接只读数据库时配置为true, 保证安全
readOnly: false
#等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒
connectionTimeout: 3000000
#一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
idleTimeout: 600000
#一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';,一般为8小时)
#maxLifetime: 600000
#连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count)
maximumPoolSize: 200
pool-name: pool-lxl
connectionTestQuery: SELECT 1
minimum-idle: 50
导入号和修改手机号场景