KunlunBase 读写分离方案

2023年 8月 13日 38.8k 0

KunlunBase 数据库集群在数据库内部支持读写分离,并且对应用透明,用户应用程序不需要做任何修改就可以使用数据库的读写分离功能,从而提高整个系统性能及投资回报率。

一、产品架构

KunlunBase 的整体架构主要由计算层和存储层构成,计算层负责 SQL 响应、解释、执行等,存储层负责数据的存储管理,存储层的数据采用多副本存储机制,备机(从副本)通过强同步技术保持数据与主节点一致性。

备机的存储节点的硬件配置与主节点一致,在一般的生产使用过程中,备机节点的主要目的是作为主机出现故障后的替换节点,不接受应用程序的直接数据处理请求,因此,在非故障切换的情况下,备机的存储节点资源利用率相对较低。

KunlunBase 的读写分离方案是通过路由只读操作到备节点,从而可以减少计算节点的资源竞争,降低主节点负载。

二、实现原理

KunlunBase 的读写分离在计算层的远程查询优化器内实现的,当用户的SQL同时满足如下条件:

  • 当前SQL类型为select;
  • SQL中不包含用户自定义函数(即create function语句创建的函数),除非当前事务为只读事务;
  • 如果不在事务中(autocommit=on),则允许读写分离;如果语句在显示事务中,则要满足:
    • 如果在只读事务中,则允许读写分离;
    • 如果在读写事务中,则该事务尚未更新过任何数据;

    远程查询优化器就会将相应的SQL 执行计划下发到从备机的节点上执行

    KunlunServer 会根据以下规则选择发送select语句到目标存储集群的哪个备机节点:

    • 根据节点权重值选择 (ro_weight)
    • 根据网络延迟(ping)
    • 根据主从副本的数据一致性延迟(latency)

    三、配置实施

    场景说明:某 OLTP 业务系统有大量的查询操作,在业务高峰期数据库响应速度变慢,导致了业务的性能问题。经检查发现存储节点主节点的存储节点的 IO 资源利用到达瓶颈,但备机节点的 IO 资源利用率低。

    以上场景可以通过读写分离方案解决系统性能问题,不需要修改应用, 不需要增加硬件配置,通过读写分离的实施,可以解决性能问题。

    实施步骤:

    步:设置参数,启用读写分离。(根据情况选一种级别)

    设置 enable_replica_read = on (on 开启读写, off 关闭)。

    用户级别开启:(用户登录后生效)

    alter user abc set
    enable_replica_read = true;

    相关文章

    Golang测试中的数据生成技巧

    2023-08-07
    数据
    生成
    技巧

    SQL数据库触发器语法详解 (sql数据库触发器语法)

    2023-08-06
    数据库
    语法
    触发器

    快速简单的删除Oracle数据库字段方法 (删除oracl数据库字段)

    2023-08-06
    数据库
    字段
    删除

    如何打开社工数据库bak文件 (社工数据库bak怎么打开)

    2023-08-06
    数据库
    打开
    社工

    实现数据库按拼音排序的方法和技巧 (数据库按拼音排序)

    2023-08-06
    数据库
    排序
    按拼音

    探究Sybase数据库的性能和功能特点 (sybase数据库怎么样)

    2023-08-06
    数据库
    性能
    探究

    SQL Server 如何成功建立自己的数据库? (sql server 建立数据库)

    2023-08-06
    数据库
    自己的
    建立

    如何在Oracle中查看数据库触发器? (oracle查看数据库触发器)

    2023-08-06
    数据库
    查看
    触发器

    数据库表数据量千万级,对性能影响有多大? (数据库表千万级数据量多吗)

    2023-08-06
    数据库
    级数
    有多大

    如何使用Oracle按时间导出表数据库? (oracle按时间导出表数据库)

    2023-08-06
    数据库
    导出
    如何使用

    数据库存储:帖子长期保存,信息永不丢失 (帖子存数据库)

    2023-08-06
    数据库
    丢失
    帖子

    小米六数据库:全方位数据保障和优化方案 (小米六数据库)

    2023-08-05
    数据库
    优化
    小米

    简易教程:使用dbe数据库实现数据连接 (dbe数据库 数据连接)

    2023-08-05
    数据
    数据库
    连接

    Oracle实现多个数据库链接的简便方法 (oracle链接多个数据库)

    2023-08-05
    数据库
    多个
    链接

    数据库索引:用哪种方法建立? (数据库索引用什么建的)

    2023-08-05
    索引
    数据库
    哪种

    实现高效缓存同步:Redis数据库技巧大全 (redis 数据库缓存同步)

    2023-08-05
    数据库
    缓存
    同步

    如何利用数据库实现高效的模糊匹配查询? (数据库实现模糊查询)

    2023-08-05
    查询
    数据库
    模糊

    数据库有哪些安装方式和位置? (数据库是装在什么上)

    2023-08-05
    数据库
    位置
    装在

    Lactmed数据库:妈妈们必备的喂养指南 (lactmed 数据库)

    2023-08-05
    数据库
    必备
    喂养

    数据库设计中的主属性定义及作用 (数据库主属性是什么)

    2023-08-05
    数据库
    定义
    属性

    相关文章

    Oracle如何使用授予和撤销权限的语法和示例
    Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
    下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
    社区版oceanbase安装
    Oracle 导出CSV工具-sqluldr2
    ETL数据集成丨快速将MySQL数据迁移至Doris数据库

    发布评论