查询mysql innodb以查找记录是否在其缓冲池中

fcwjkofz  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(363)

对于我们来说,对于查询大型数据库的网站php脚本来说,获得高响应时间是非常重要的。它本质上是为访问页面的用户获取用户信息。数据库中可能有数百万用户。
如果记录不在mysql数据库的innodb缓冲池中,我们不想麻烦使用用户数据,只在上面的缓存中才使用信息。
有没有办法直接询问mysql/innodb记录是否在缓存中?

6vl6ewon

6vl6ewon1#

海森堡说,这将是低效的(好吧,也许这是个错误的解释。)
如果同时没有数百万用户,以太网电缆就会融化。
你想做什么?说“你的数据不在缓存中,所以你不能访问你的帐户”?我怀疑。
一百万用户的基本行可能需要0.1gb。你的机器有多小?
好吧,我说正经的。
不,无法询问行是否缓存在缓冲池中。
我认为没有必要问。想想“缓存”(在lru机制中)意味着什么。一个在记录被从缓存中删除之前返回的用户将在内存中找到它;其他用户将额外延迟几毫秒来获取数据。这假设您没有空间一直缓存整个0.1gb(一旦缓冲池预热)。
打个比方,想想新闻文章。每个人都想要“今天的新闻”,所以这几行就留在缓存中。偶尔要求上个月的新闻要花一点时间。
大局。。。假设整个数据集对于缓冲池来说太大了。然后优化是最小化磁盘命中。相反,如果您的表扫描效率低下(由于缺少适当的索引),则会“太快”地从缓存中跳出。
如果您想进一步讨论php网页性能,请给我们一些关于数据集大小、ram大小、查询类型等的线索。

相关问题