读一致性问题

tidb版本


先打开会话1,然后再打开会话2,先查询表数据,得到一个结果,然后在会话2中删除数据,并重新插入同样的数据,同时执行查询语句,查询会话1和会话2,发现数据的插入时间是不一样的。

您好:

    1. 请发送建表语句,和这两个insert语句
    2. 右边是会话1对吧,是指hiredate时间,两个session查询不一致吗?
    3. 请问这两个session是同一个tidb服务器吗?  是直连的tidb还是有lsb? 
    4. 请在这两个session执行下now(),看下时间是否一致,多谢

create table emp (empno int,ename varchar(30),job varchar(30),deptno int,hiredate timestamp,sal int,comm int,mgr int);
insert into emp values(7499,‘jack’,‘work’,2001,now(),1000,0,40);
insert into emp values(7500,‘john’,‘work’,2001,now(),1000,0,40);
从同一台机器的MySQL客户端,连接同一个tidb服务器,两个会话的区别就是,会话1先连上,会话2后连上
新开一会会话3,查询就能与会话2同步

您好:

  1. 我这边模拟了一下,没有复现问题,方便重启下tidb-server进程,再试试吗?

  2. ps -ef | grep tidb-server 检查下是否只有重复的tidb-server进程

我把整个集群重启了下,现在正常了,这可能是哪方面的原因啊

  1. 不知道您这边有没有先检查tidb-server有几个进程, 我怀疑是tidb-server进程由于OOM或者其他操作系统问题,导致某一块的缓存可能存在问题,如果您先检查了ps -ef | grep tidb-server,如果有两个,可能就是有一个之前的没有正常停止,导致有问题。

这个查过,就一个进程,而且这个是测试环境,基本没有压力,就调过lower-case-table-names这个参数,后来又调整回去了,不过只重启了调整的tidb服务器

您可以再测试一下,是否能复现问题,可能是您之前启停的方式有问题,或者是有其他人kill过进程之类的吧。这个原因现在不好猜测了,多谢

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。