【 TiDB 使用环境】生产环境 /测试/ Poc
测试
【 TiDB 版本】
6.5.1
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
缓存表放到tidbserver的下,设置tidb_table_cache_lease的值,等到这个值过了才能写。想问下这个值到下个值生效期间是有多少间隔,跟写入有关么。
【资源配置】
【附件:截图/日志/监控】
说说我的理解:
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秒钟过去,才能修改这张表。
这个我知道,我想知道的是租约过期之后到下次租约之前的间隔是多久,与参数有关不。难道是租约过了,如果没有写入,立马开启下一个租约?那我向这个表写入数据岂不是要掐着点
租约过期就会立刻续租啊,但是如果你做了修改这个表的动作,还处于等待所有节点的租约过期时,所有节点续租这个动作就会被你修改的动作阻塞啊,它们只能读tikv中的此表数据而不能续租此表了,所以如果一个表需要频繁修改的话,还是不要缓存了
那就应该是这种机制了:修改时写入会阻塞,然后等租约过期就写入,相当于一直在排队,不阻塞就赶紧写入。这个只是用测试环境测试下,有些不经常修改的关联表需要放到缓存表里。
频繁更改的表是不适合缓存的。。