【读写分离】
经过这段时间的学习,大家都知道,在巨杉数据库的数据节点中,同一组数据节点,主数据节点提供读写服务,备节点只提供读服务,那么如果在实际生产中想要实现读写分离,该如何配置呢?今天带大家来了解一下巨杉数据库中读写分离的配置与实践。
【基本概念和应用场景】
读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
数据库中,一般读操作的耗时要比写操作的耗时少的多。所以写操作可能会影响到读操作的效率,为了解决这一问题,可以采用读写分离的手段来提升数据的读写效率。
【参数介绍】
在巨杉数据库中,可以在协调节点(Coord)层面控制数据的读操作在哪个类型(主、备)的数据节点上执行。
用来实现这一功能的参数是:preferedinstance和PreferedInstanceMode
preferedinstance参数含义(作用):
1. 指定执行读请求时优先选择的实例
2. 如果不指定,则默认值为M,即选择可读写实例。
preferedinstance参数取值:
"M", "m":优先选择可读写实例(主节点),默认值。
"S", "s":优先选择只读实例(备节点)
"A", "a":选择任意实例
1-255:优先选择通过 --instanceid 指定实例 ID 的实例
PreferedInstanceMode 指定会话当多个实例符合 PreferedInstance 的条件时的选择模式。
"random":从候选的实例中随机选择。
"ordered":从候选的实例中按照 PerferedInstance 的顺序进行选择。
【参数设置】
我们都知道,巨杉数据库中,写请求只在主数据节点中执行。所以为了实现读写分离,我们应该让读请求优先访问只读实例(备节点),即把preferedinstance设置为:"S"或"s"。
会话级别设置
db=new Sdb();
db.setSessionAttr({PreferedInstance:"S"});
节点级别设置
db=Sdb();
db.updateConf({preferedinstance:”S”},{GroupName:”SYSCoord”});
确认生效
db.getSessionAttr()
执行语句触发数据库的读操作。通过top命令观察主备数据节点的压力。
读写分离是分布式数据库的一个重要功能,大家可以快速上手实践哦~
我们今天的辅助阅读也是有关读写分离机制的介绍,大家可以参考一下!
辅助阅读:巨杉Tech | 读写分离机制与实践