场景
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
导入号和修改手机号场景,高并发情况下频繁修改数据库同一张表。
先通过手机号搜索出数据。
再通过uin搜索出相关的数据,如果搜索出的数据大于1则删除后再添加通过手机号搜索出的数据。
语句是delete,通过uin删除数据,当前情景下uin无索引。
同样的执行操作,并发场景:
登录失败时删除
用户手动删除数据
问题
mysql删除语句
delete from device where uin = xxxxxxxxxx
等待锁
index PRIMARY of table productdb
.device
trx id 27264001 lock_mode X lock