You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中使用MySQL1实现数据库实时数据更新求助

MySQL数据实时同步更新实现方案

方案1:基于MySQL CDC(Change Data Capture)捕获数据变更

MySQL的二进制日志(binlog)会记录所有数据修改操作,通过监听binlog可以实时获取变更:

  1. 启用binlog:修改MySQL配置文件my.cnf或my.ini,添加以下配置后重启服务
    log-bin=mysql-bin
    binlog-format=ROW
    server-id=1
    
  2. 使用CDC工具(如Debezium、MaxWell)监听binlog,捕获到数据变更事件后,直接推送给前端应用触发页面更新。这类工具能精准捕获INSERT/UPDATE/DELETE操作,延迟极低。

方案2:前端短轮询(快速落地)

如果不想改动数据库和后端架构,最简单的方式是让前端定时自动请求数据:

// 每30秒自动拉取一次最新数据
setInterval(async () => {
  const res = await fetch('/api/getLatestData');
  const data = await res.json();
  // 更新页面展示逻辑
  updatePageData(data);
}, 30000);
  • 优点:实现零成本,无需额外配置;缺点:存在固定延迟,高频请求会增加服务器负载,可根据业务调整轮询间隔。

方案3:Server-Sent Events(SSE)长连接推送

通过后端与前端建立长连接,数据库数据变更时主动推送更新:

后端(Node.js示例)

app.get('/data-stream', (req, res) => {
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');
  res.setHeader('Connection', 'keep-alive');

  // 监听数据库变更事件(可通过CDC工具或触发器触发)
  const onChange = (newData) => {
    res.write(`data: ${JSON.stringify(newData)}\n\n`);
  };
  dbEmitter.on('dataChange', onChange);

  // 客户端断开连接时清理监听
  req.on('close', () => {
    dbEmitter.off('dataChange', onChange);
  });
});

前端

const eventSource = new EventSource('/data-stream');
eventSource.onmessage = (e) => {
  const newData = JSON.parse(e.data);
  updatePageData(newData);
};
// 监听连接错误
eventSource.onerror = () => {
  eventSource.close();
};

方案4:触发器+消息队列

在MySQL中创建触发器,将数据变更写入中间表或消息队列,后端监听队列并推送更新:

  1. 创建变更日志触发器
DELIMITER //
CREATE TRIGGER after_table_update
AFTER UPDATE ON your_target_table
FOR EACH ROW
BEGIN
  INSERT INTO data_change_log (table_name, record_id, change_type, change_time)
  VALUES ('your_target_table', NEW.id, 'UPDATE', NOW());
END //
DELIMITER ;
  1. 后端定时查询data_change_log表,或用Redis List作为消息队列,触发器直接将变更信息推入队列,后端监听队列并向前端推送更新。

内容的提问来源于stack exchange,提问作者Sahira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:25:15