摘要:你首先要明确的是,在不同的 MySQL 引擎中,count(*) 有不同的实现方式。 MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高; 而 InnoDB 引擎就麻烦了,它执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来 阅读全文
posted @ 2019-04-24 19:02 郁冬 阅读 (104) 评论 (0) 编辑
摘要:平时的工作中,不知道你有没有遇到过这样的场景,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。 当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据 阅读全文
posted @ 2019-04-24 17:06 郁冬 阅读 (239) 评论 (0) 编辑
摘要:说到这个问题之前,首先我们需要先了解一下change buffer 当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InooDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。在下次 阅读全文
posted @ 2019-04-24 10:26 郁冬 阅读 (50) 评论 (0) 编辑