ThreadLocal源码学习
基本结构图片


 |  | 

在老版本的MySQL中sql通过连接进来时会有查询缓存这一块的逻辑。
查询解析器解析sql 是否正确后,然后基本优化sql,生成执行计划,选择引擎执行。
而InnoDB 在执行时 为了保证对数据的执行更快,省去磁盘IO开销 引入了Buffer Pool

 |  | 
脏读脏写 都是因为读取了事务未提交时的事务回滚情况
事务A与事务B同时更新一条数据,由于其中一个事务回滚 导致另外事务执行成功的数据不存在了。
事务A还没提交事务时事务B拿到值做了大量的操作,事务A回滚后出现的数据异常问题。
事务A修改了值并且提交了事务 B读取到 然后B在执行事务期间 C又修改了值并且提交了。这时B读取到的值又变了。 这就时不可重复读问题。 可重复读就相反 并且读取到的值是相同的。
其实就是在事务执行期间第二次查询相比第一次查询出现了之前没出现过的数据。