MySQL跨表数据同步优化

应用场景描述

有两张设备在线状态表,其中一张记录心跳时间戳(tb1),另一张做异地数据同步(tb2).

原始方案

> 查询tb1所有数据,循环(select all)
  >> 判断该条数据对应的设备是否依然在线
    >>> 若在线
      >>>> 查找tb2中是否存在该设备ID(select limit 1)
        >>>>> 若存在,更新(在线:true, update 1)
        >>>>> 若不存在,插入(在线:true, update 1)
    >>> 若不在线
      >>>> 查找tb2中是否存在该设备ID(select limit 1)
              >>>>> 若存在,更新(在线:false, insert 1)
              >>>>> 若不存在,插入(在线:false, insert 1)
      >>>> 删除tb1中已离线的记录(delete)
阅读更多

API接口性能统计之平均响应时间算法

平均响应时间算法

// count,restime
let avg = (restime + parseFloat(val) * (count - 1)) / count;

经过反复测试,临界值为平均响应时间乘以 2 万次(如 200ms 为 400 万次),不会再变化。

如果当天请求超过平均响应时间乘以 2 万次,则不应该再计算新值。

阅读更多