【 TiDB 使用环境】测试
【 TiDB 版本】7.5.2
【复现路径】java程序多线程对数据库表操作
【遇到的问题:问题现象及影响】jdbc连接。java客户端两个线程http-nio-8080-exec-4和pool-1 thread-4。时间线:线程http-nio-8080-exec-4创建连接进行一些数据库操作---- 线程pool-1 thread-4创建新的连接建表,成功后关闭连接 — 线程http-nio-8080-exec-4进行插入操作(往刚才线程pool-1 thread-4创建的表插入数据)。提示:Table doesn’t exist。
PS:1、同程序,连接切换到mysql正常。
2、尝试使用NOT_SUPPORTED,事务隔离级别也还是报Table doesn’t exist。异常。
一下是跟mysql的对比。直接用mysqlclient连:
Mysql正常:
tidb异常:
【资源配置】该问题给配置没关系,下图证明集群健康状态
【附件:截图/日志/监控】
检查连接池的配置,确保没有错误地关闭或丢弃连接。
如果这是个问题,很早就会暴漏出来的
其他操作数据库动作都能用。然成同一个线程也没问题。这点足够证明你说的配置问题和连接异常问题。
看看我新加的实验图。直接mysqlclient连的。tidb直接不行
h5n1
(H5n1)
5
3 4 5 操作 不显示开启事务直接建表能行不 ?
麻辣机师
(Ti D Ber N Ec Hp7n S)
6
印象中好像官方文档里有描述,tidb是与mysql在这一点上有差异
试了,也不行。只要前面的连接事务开启且没结束。这个期间其他事务提交东西都不可见。
麻辣机师
(Ti D Ber N Ec Hp7n S)
9
胡杨树旁
11
tidb 是快照隔离,只能看到事务开始之前的数据,看不到事务开始之后的数据,但是没有理解mysql 中的行为,
zhanggame1
(Ti D Ber G I13ecx U)
13
tidb的rr隔离级别和mysql的rr有一些不同,一般生产建议用rc隔离级别就没你这个问题了,我测试了下rc的