现在能想到
前者比较精确,数据库负担大,后者对数据库侵入小,但实现复杂些,得到的也是查询条件
有没有其他思路?
1
leviathan0992 2020-02-12 12:24:48 +08:00
需求是什么?
|
2
ksedz OP @leviathan0992 给 DBA 用的分析工具需要做识别热点数据的需求,现在都是要从使用者(开发)的业务逻辑去判断热点,就想能不能通过数据库使用记录、返回数据、状态信息等来做。
|
3
ps1aniuge 2020-02-12 16:58:39 +08:00
没必要,识别热数据应该在:
1 数据库前面加个 redis, 2 然后客户端弄个读取记数。每读取一次就加一。 3 然后每天半夜,用 redis 客户端+脚本,上来收热数据的记录。 |
4
ivyliner 2020-02-12 17:23:20 +08:00
从 mysql 的 general log 中分析 ? 不过日志量可能会比较大
|
5
yidinghe 2020-02-12 17:29:26 +08:00
脱离 SQL 语句去观察热点数据意义不大。一般就是观察下执行最频繁的查询和更新语句就可以了。
|
6
ksedz OP |
7
snappyone 2020-02-12 18:58:14 +08:00 via Android
buffer pool 里面数据怎么采集啊?况且里面数据也不一定准吧
|
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 天,平均值,最大,最小,一出。 |