缓存表写入延迟 是指返回写入结果阻塞吗

请问下,如果我用客户端向缓存表中更新数据,这里说的数据更新延迟,是指插入结果会延迟返回,还是说插入结果会立即返回成功,但是有可能查到旧的数据, 因为我本地测试 都是立即返回结果的 更新数据也是立即生效。

指数据插入会变慢,数据返回始终是最新的

1 个赞

和你连接的tidb节点有关。如果你读写都是一个tidb节点自然不会感觉有什么问题。如果跨tidb节点了,一个tidb节点写完了,另一个tidb节点读取到内存再给你,是会有一定延迟的。

这个地方指的是延迟返回,不会查到旧数据,查到旧数据就是破坏一致性了。

说说我的理解:
tidb_table_cache_lease这个值就是缓存表的租约时间,理论上你修改一张缓存表,最长可能等待这么长的时间。
举个例子,你有三个tidb节点ABC,一张缓存表t,租约时间为10秒,A 缓存了t刚4秒钟,B缓存了3秒钟,C刚刚缓存,即0秒钟,ABC的t表剩余租约时间分别为6/7/10。这时如果你在任意一个节点去修改t表,是需要ABC三个节点中的t都过了租约时间才可以修改成功的,也就是必须等C的剩余租约时间10秒钟过去,才能修改这张表。
如果刚刚好,这三个节点都是缓存了这个缓存表10秒钟,剩余租约时间全部是0,那你在任意一个节点去修改t表,都是可以立刻修改成功的。。
你可以调大这个值,然后三个节点分别查询这个表之后,选其中一个节点来修改这个缓存表,看下修改需要话费的时间。
不过你修改可能很慢,但是如果修改成功,所有节点肯定看到的是修改后的值,不会出现查询到旧数据的情况。

1 个赞

调lease?