数据库事务隔离级别与索引的优化

事务隔离级别

并行事务的四大问题:
1.更新丢失:和别的事务读到相同的东西,各自写,自己的写被覆盖了。(谁写的快谁的更新就丢失了)
2.脏读:读到别的事务未提交的数据。(万一回滚,数据就是脏的无效的了)
3.不可重复读:两次读之间有别的事务修改。
4.幻读:两次读之间有别的事务增删。

对应隔离级别
1.READ UNCOMMITTED:不处理。
2.READ COMMITTED:只读提交的数据,无脏读;
3.REPEATABLE READ:加行锁,两次读之间不会有修改,无脏读无重复读;
4.SERIALIZABLE:加表锁,全部串行,无所有问题。

索引

mysql采用MyISAM的存储引擎,以b-树作为索引结构。另一个引擎InnoDB用b+树索引。
m阶的b-树主要特性:
1.非叶子结点的儿子数为[M/2, M]
2.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;
3.所有叶子在同一层
b-树是多叉搜索树,通过分层查找,插入需要分裂算法(1.先放入叶子层位置.2发现叶子层元素数达到了m,则从中间分裂,最中间数字分裂到父节点。3递归检查父节点)。删除节点分多种情况(直接删除,替换,合并都有可能)。
b+树与b-树的主要区别:1.非叶子节点一个关键字对应一个孩子节点,且只用来索引 2.所有关键字都在叶节点出现

索引可以是单列索引,也可以是多列索引,默认主键即为索引列,总之同一层的数据是有序的。
查看当前索引:SHOW INDEX FROM employees.titles
查看当前语句使用索引情况: explain select

根据最左前缀匹配原则:
1.多列索引,从第一匹配条件到连续匹配条件可以进入索引,中间有列不在索引条件中则后面条件都无效。(mysql会对where条件自动按照索引顺序排序)
2.Like条件索引,只有在%不出现头部才会索引。
3.><范围列只有第一个可以用索引,后面均无效

参考

http://www.uml.org.cn/sjjm/201107145.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值