以mysql为基础
innodb mvcc
多版本并发控制,是为了避免加锁而实现的。一般的实现方法是存储快照来实现的。innodb实现方式是在记录后添加两个隐藏列(表项),分别是事务创建时间、过期时间,存储的实际上是系统版本号(系统版本号随着事务的创建而递增)。
这样一来,insert 时加上开始版本号,update/delete时加上过期版本号,这样一来在selete时,就只访问开始系统版本号小于当前的事务的版本号、过期时间要么未定义要么在当前版本号之后的记录,这样就可以保证:访问的记录是在本事务开始前就存在而且在本事务期间没有过期(被删除或被修改过的)。可以避免脏读、不可重复读、幻读的问题。(个人觉得)
ps:大部分情况下,innodb都是正确的选择。---《高性能mysql》
profile 的作用和用法
用于保存sql语句执行状态,需要手动开启,才可以查看。
set profiling = 1; 开启
show profiles; 显示sql查询的profiles概况
show profile all for query x; 查看第x条语句的所有执行情况。
show profile cpu, block io, memory for query x; 查看部分profile信息。
如对本文有疑问, 点击进行留言回复!!
网友评论