V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ksedz
V2EX  ›  程序员

mysql 实例怎么自动识别热点数据?

  •  
  •   ksedz · 2020-02-12 11:56:10 +08:00 · 3014 次点击
    这是一个创建于 1739 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在能想到

    1. 定时采集 Innodb buffer pool 的数据做分析
    2. 镜像 mysql 流量,提取 SQL 查询语句,对查询条件做分析得到热点的查询条件

    前者比较精确,数据库负担大,后者对数据库侵入小,但实现复杂些,得到的也是查询条件

    有没有其他思路?

    8 条回复    2020-02-14 18:17:15 +08:00
    leviathan0992
        1
    leviathan0992  
       2020-02-12 12:24:48 +08:00
    需求是什么?
    ksedz
        2
    ksedz  
    OP
       2020-02-12 13:26:37 +08:00
    @leviathan0992 给 DBA 用的分析工具需要做识别热点数据的需求,现在都是要从使用者(开发)的业务逻辑去判断热点,就想能不能通过数据库使用记录、返回数据、状态信息等来做。
    ps1aniuge
        3
    ps1aniuge  
       2020-02-12 16:58:39 +08:00
    没必要,识别热数据应该在:
    1 数据库前面加个 redis,
    2 然后客户端弄个读取记数。每读取一次就加一。
    3 然后每天半夜,用 redis 客户端+脚本,上来收热数据的记录。
    ivyliner
        4
    ivyliner  
       2020-02-12 17:23:20 +08:00
    从 mysql 的 general log 中分析 ? 不过日志量可能会比较大
    yidinghe
        5
    yidinghe  
       2020-02-12 17:29:26 +08:00
    脱离 SQL 语句去观察热点数据意义不大。一般就是观察下执行最频繁的查询和更新语句就可以了。
    ksedz
        6
    ksedz  
    OP
       2020-02-12 18:03:20 +08:00
    @ps1aniuge 拿结果集的问题是很多查询对数据表的访问不能反应在结果集上,当然也得看实际数据情况。而且支撑的业务较多,开发用什么的都有,在 client 端做操作不太现实。

    @ivyliner 就是方案 2 吧,用分析网络流量替换了 general log,这个不好解决多个条件命中相同数据的问题。

    @yidinghe 现在已经实现了 SQL、SQL 模板、SQL 类型等的执行次数统计和排序,就是想更进一步,从数据的角度去回答使用者更常用哪些数据。“脱离 SQL 语句去观察热点数据意义不大”,我再考虑下这样做的价值,谢谢。
    snappyone
        7
    snappyone  
       2020-02-12 18:58:14 +08:00 via Android
    buffer pool 里面数据怎么采集啊?况且里面数据也不一定准吧
    ps1aniuge
        8
    ps1aniuge  
       2020-02-14 18:17:15 +08:00
    @ksedz
    多查询对数据表的访问不能反应在结果集上---------世界上没有你说的这种。
    1 费劲的查询却不出结果。
    2 出了结果,却不是想要的。
    3 想要的结果,却在 buffer pool 中,不知道。
    4 知道了在 buffer pool 中的结果,必须经过读它,却把 buffer pool 命中率搞乱了。

    所以说,redis 法是最好的方法。比分析 log 好多了。却不会影响 buffer pool。
    在 redis 中设定好 all key lru,想要结果大些,就把内存设定大些。想要结果小些,就把内存设定小些。
    每天凌晨 3 点抓取当天的统计结果,入表。n 天,平均值,最大,最小,一出。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:22 · PVG 13:22 · LAX 21:22 · JFK 00:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.