我的想法是:比如tikv有两台,分别是5.1和5.2 一次写请求将123写入到了5.1,另一次写请求将456写入到了5.2 那么读123的请求每次就会到5.1上读取,我想5.1这台tikv扩展副本来到达负载的目的,另外如果可以这么做,能不能指定读副本(比如5.1扩展了一个副本在5.5这台机器,每次读123都指定去5.5读)
没有很理解你的意思。
tidb集群默认就是负载的,比如集群5.1、5.2、5.3三台服务器,副本3,写入123后,会在5.1里写入leader副本,5.2、5.3里自动写入follow副本。读取的时候默认是从leader副本读取的,同时leader是动态切换的,不一定一直在5.1上。
你说的5.1,5.2,5.3是三台kv吗
是的,是三个tikv节点
你说的写入123后,5.1kv本身存了123,然后5.1还创建了一个leader副本存123。还是5.1只有leader。我想表达的是5.1上有两个还是一个存储,我的语境里两个代表5.1本身加leader、一个存储就是leader
5.1存了123,5.2、5.3里也异步存了123,取数的时候,如果5.1是leader,就从5.1取,如果5.2是leader,就从5.2取。
这样说是否理解?
理解。那leader是动态的这个怎么进一步理解
好的。我现在有这么个场景,就是like查询,tidb我不太了解,比如MySQL双%会造成全表扫描,如果like时同时又有写入,可能会造成死锁。tidb会吗
这个MySQL也不会吖,怎么会锁呢
好的。那tidb的like双%%会造成全表扫描吗,like的性能怎么样
必然会造成全表扫描,不建议使用
你是想做读写分离吗?
tidb 目前没有完全的读写分离技术,只有大标签,但都是系统慢时 follower 才会读
我的想法是当我like的时候去读副本,这样就不会影响写入,tidb可以实现吗
当我like的时候去读副本,这样就不会影响写入,tidb可以实现吗
tidb 目前还没有这样的功能
读本来就不会影响写入
读写分离的话,你从leader读也没影响呀。 如果说的是全表扫描,从哪个副本读都是有影响的。
搞分区,将你要分散的字段用分区打散。
但是解决不了like 全表扫描的。左边不是%那就可以走索引了。