MYSQL架构示意图
MYSQL8.0开始移除了查询缓存这个模块;
查询缓存:适合读多写少的任务;
建议:将 have_query_cache 设置为No,在需要使用查询缓存的语句上显式声明;
select SQL_CACHE * from test;
WAL(Write Ahead Logging): 先写日志,再写磁盘;
MYSQL数据更新流程:先记在redo log中,并更新内存;InnoDB会在适当的时候将这个操作记录更新到磁盘中;采用尽管我们修改了redo log也是位于磁盘的,但是相比记录更新语句以及直接修改数据,记录所消耗的时间明显更少;
crash safe: 使用redo log,使得数据库挂掉后依旧可以很好地恢复;
Update 语句流程
我们可以将数据库恢复到binlog记录到的任意时刻;
两阶段提交:即写完redo log 和 binlog之后才可以提交事务;
可以在 information_schema 库中innodb_trx表中查询长事务;(start transaction with consistent snapshot;)
https://time.geekbang.org/column/article/69236