mysql 读写分离 事务_mysql 读写分离(基础篇)

mysql 读写分离 事务_mysql 读写分离(基础篇)基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。JanKneschke在《MySQLProxylearnsR/WSplitting》中详细的介绍了这种技巧以及连接池问题:为了实现读写分离我们需要连接池。我们仅在已打开了到一个后端的一条经过认证的连接的情况下,才切换到该后端。MySQL协议首先进行握手。当…

大家好,又见面了,我是你们的朋友全栈君。

基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。

20090413111030727.jpeg

Jan Kneschke在《MySQL Proxy learns R/W Splitting》中详细的介绍了这种技巧以及连接池问题:

为了实现读写分离我们需要连接池。我们仅在已打开了到一个后端的一条经过认证的连接的情况下,才切换到该后端。MySQL协议首先进行握手。当进入到查询/返回结果的阶段再认证新连接就太晚了。我们必须保证拥有足够的打开的连接才能保持运作正常。

实现读写分离的LUA脚本:

— 读写分离

— 发送所有的非事务性Select到一个从数据库

if is_in_transaction == 0 and

packet:byte() == proxy.COM_QUERY and

packet:sub(2, 7) == “SELECT” then

local max_conns = -1

local max_conns_ndx = 0

for i = 1, #proxy.servers do

local s = proxy.servers[i]

— 需要选择一个拥有空闲连接的从数据库

if s.type == proxy.BACKEND_TYPE_RO and

s.idling_connections > 0 then

if max_conns == -1 or

s.connected_clients < max_conns then

max_conns = s.connected_clients

max_conns_ndx = i

end

end

end

— 至此,我们找到了一个拥有空闲连接的从数据库

if max_conns_ndx > 0 then

proxy.connection.backend_ndx = max_conns_ndx

end

else

— 发送到主数据库

end

return proxy.PROXY_SEND_QUERY

注释:此技巧还可以用来实现其他的数据分布策略,例如分片(Sharding)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134635.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ffmeg将多段视频合成一个视频「建议收藏」

    ffmeg将多段视频合成一个视频「建议收藏」ffmeg将多段视频合成一个视频文章目录:一、方法一:利用文件列表二、方法二:不利用文件列表三.方法三:拼接不同编码格式的文件四、注意事项要处理多段视频太费劲啦,如果直接把多段小视频合成一段长视频处理起来就会方便很多,类似剪辑之后的视频合并操作!!!ffmpeg视频拼接需要用concat参数。此外ffmpeg拼接的视频和原视频的封装格式有关一、方法一:利用文件列表建立一个…

    2022年9月24日
    0
  • android文件访问权限_android最高权限名称

    android文件访问权限_android最高权限名称添加权限配置<uses-permissionandroid:name="android.permission.BLUETOOTH"/><uses-permis

    2022年8月5日
    0
  • MySQL中的数据类型_js中的数据类型

    MySQL中的数据类型_js中的数据类型主要介绍了mysql中的数据类型,主要介绍整数类型,浮点类型,日期类型。开发中每个表都会存在主键和更新时间,这时候选择那个数据类型作为主键也是很重要的,如果选择的数据类型太大会浪费空间,如果选择小了会影响后期开发。平时面试官也会问你那个数据类型作为主键最好。

    2022年9月19日
    0
  • 检索学位论文的检索式_怎么用谷歌学术查文献

    检索学位论文的检索式_怎么用谷歌学术查文献学位论文(简称大论文)文献检索格式和平时发表的期刊论文(简称小论文)文献格式往往不一样。小论文归拢大论文的时候,格式调起来很麻烦,很繁琐。而且很多同学并没有使用文献管理软件的习惯。这时候怎么办?答案:谷歌学术搜索。1、把你的文献名粘贴到谷歌学术搜索(注意是http://scholar.google.hk/)搜索,如下图所示2、注意所查文献下方“引用”的链接,点击

    2022年10月11日
    0
  • 在Ubuntu中安装交叉编译器_为什么一直安装中

    在Ubuntu中安装交叉编译器_为什么一直安装中本文讲述了在Ubuntu中安装pycharm的具体步骤准备环境:Ubuntu21.10,Pycharm2021.1.3具体步骤:1.首先下载pycharm:Pycharm官方下载地址我在这里选择的是2021.1.3的专业版,选择下载Linux版本的pycharm下载好的pycharm如图所示:2.右键点击刚刚下载的文件,选择提取到此处3.打开终端,输入cd命令行,进入刚刚解压文件夹下的bin文件夹,命令行是cd文件夹名称,并按回车键cdpycharm-professional-20

    2022年10月26日
    0
  • google浏览器下载安装chrome_谷歌商店网页版

    google浏览器下载安装chrome_谷歌商店网页版。。。

    2022年9月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号