InnoDB存储引擎
存储引擎
在系统执行 update
语句时,经过 Server层
的处理,最终要由执行器去调用存储引擎去执行。
而 MySQL 存储引擎有很多种,比如 InnoDB
、MyISAM
等。
MySQL的默认存储引擎已经变更为了 InnoDB
update
语句操作的数据最终是要写入磁盘中的,但是如果每次都直接操作磁盘,磁盘I/O的开销是很大的。所以需要每次将操作的数据加载到内存中,减少磁盘I/O次数,再在适当时机进行刷盘操作即可。InnoDB 中使用的这块内存叫做 Buffer Pool
。
缓冲池 - Buffer Pool
MySQL的数据最终存在磁盘中,而缓冲池位于内存中。在第一次查询的时候数据会被加载到缓冲池中,后续请求会从缓冲池中获取。
执行器调用存储引擎的查询流程:
- InnoDB 会在缓冲池中查找 id=1 的数据是否存在。
- 不存在,会从磁盘中查找,并将其放在缓冲池中。
- 该条记录会被加上独占锁(保证同时只能被一个线程操作)。