【PolarDB·专家篇】读写分离·一致性级别

「已注销」 2022-03-18 21:57:02

PolarDB提供了三种一致性级别:最终一致性、会话一致性和全局一致性,满足您在不同场景下对一致性级别的要求。

问题与解决方案

MySQL的读写分离代理功能,代理会伪造成MySQL与应用程序建立好连接,解析发送进来的每一条SQL,如果是UPDATE、DELETE、INSERT、CREATE等写操作则直接发往主库,如果是SELECT则发送到备库,从而实现了读写分离。但是当数据库负载很高时,例如对大表执行DDL(如加字段)操作或大批量插入数据的时候,延迟会非常严重,从而导致无法从只读节点中读取最新数据。MySQL的读写分离代理功能无法解决由于延迟导致的查询不一致问题。

PolarDB采用了异步物理复制方式实现了主节点和只读节点间的数据同步。主节点的数据更新后,相关的更新会应用到只读节点,具体的延迟时间与写入压力有关(一般在毫秒级别),通过异步复制的方式确保了主节点和只读节点间数据的最终一致。PolarDB提供了如下三种一致性级别,满足您在不同场景下对一致性级别的要求:

说明 如何修改一致性级别,请参见配置数据库代理

最终一致性

  • 功能介绍PolarDB是读写分离的架构,传统的读写分离只提供最终一致性的保证,主从复制延迟会导致从不同节点查询到的结果不同,例如在一个会话内连续执行如下查询,最后的SELECT结果可能会不同(具体的访问结果由主从复制的延迟决定)。
    INSERT INTO t1(id, price) VALUES(111, 96);
    UPDATE t1 SET price = 100 WHERE id=111;
    SELECT price FROM t1;
  • 适用场景

    若需要减轻主节点压力,让尽量多的读请求路由到只读节点,您可以选择最终一致性。

····

更多内容可见:https://help.aliyun.com/document_detail/99093.html

...全文
514 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-大数据 发布问题, 以便更快地解决您的疑问

52

社区成员

发帖
与我相关
我的任务
社区描述
PolarDB开发者
其他 企业社区
社区管理员
  • csdnsqst0017
  • kikokingzz
  • karina17
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

社区初立,为了鼓励小友们在社区中积极互动,现在有一个活动如下:

试试用AI创作助手写篇文章吧