V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
kalsolio
V2EX  ›  MySQL

mysql 这个延迟问题 有解决方案或者尽量降低发生的办法吗?

  •  
  •   kalsolio · 2016-04-28 15:53:03 +08:00 · 3267 次点击
    这是一个创建于 3131 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有一个 一主多从的构架 一个从服务器的程序拿到一些数据 尽快的标记已读取 但是其他从服务器的程序还是有拿到那些标记的数据 每个从服务器拿取数据都不的不比较快 这个问题有什么好的办法吗

    9 条回复    2016-04-29 08:51:02 +08:00
    kalsolio
        1
    kalsolio  
    OP
       2016-04-28 15:57:00 +08:00
    从服务器都在获取数据去处理 但是不允许二次处理
    现在一个从拿到之后 尽快的去标记我拿走了
    但是其他的从 还是会发生拿走那些不应该获取的数据
    kalsolio
        2
    kalsolio  
    OP
       2016-04-28 15:58:46 +08:00
    特别容易发生在 需要处理的数据比较少的时段.
    lecher
        3
    lecher  
       2016-04-28 16:06:07 +08:00 via Android
    MySQL 上面还要分发到从服务器本身就有延时,做这个加锁的事务处理比较麻烦。

    这是个典型的任务分发业务,可以考虑用消息队列,或者用支持队列的数据库进行处理,业务设计上比较简单。

    如果延时要求不是特别高, MySQL 可以考虑用在主库 update taskerlist set tasker = uid where tasker=0 这类的语句。
    查询没有被认领的并直接更新为认领状态,再去取业务数据,这个延时会小一些。
    junweiyang
        4
    junweiyang  
       2016-04-28 16:06:25 +08:00 via Android
    升级数据库版本 (逃
    aru
        5
    aru  
       2016-04-28 16:13:28 +08:00
    每个程序取个名字,表上增加一个字段 worker ,默认值为 NULL
    标记的时候加个限制条件
    update xxxtable set worker='myname' where 原来的限制条件 and worker is NULL;
    如果 affected row 为 0 ,那么表明被其他程序取走了,放弃这个任务,继续取其他任务
    Infernalzero
        6
    Infernalzero  
       2016-04-28 16:49:26 +08:00
    可以试试 5.7 ,主从同步支持多线程了
    kalsolio
        7
    kalsolio  
    OP
       2016-04-28 17:03:59 +08:00
    realpg
        8
    realpg  
       2016-04-28 22:54:07 +08:00
    明显你这是个 MQ 的需求,你非得弄成 MYSQL 复制……
    kalsolio
        9
    kalsolio  
    OP
       2016-04-29 08:51:02 +08:00
    @realpg 嗯 系统的部分确实是 MQ 的需求 但是整体上 还是需要用主从结构才行,还有很多别的类型数据需要主从来降低主库压力.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2679 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:51 · PVG 11:51 · LAX 19:51 · JFK 22:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.