MySQL事务与索引

事务:

事务作为最小操作单位,要么执行成功,要么执行失败。

事务特性:

名称解释
原子性同一事务要么执行成功,要么执行失败。
隔离性多个事务之间互不影响
持久性事务提交或回滚后数据回永久保存
一致性事务提交前后数据一致,在事务未提交或回滚时,数据会不一致,提交后,或者提交前才会一致

事务并发下的会出现的问题

名称解释
脏读事务A读取到事务B未提交的数据,但是B最后没有提交事务,所以A读取到的是脏数据(虚假的数据)
虚读虚读又称为不可重复读,在一个事务中两次读取到的数据不一致
幻读事务在执行完具体操作后,发现这些操作可能没有应用到某些符合条件的数据上。就好像法生幻觉一样。

事务隔离级别:

事务隔离级别脏读虚读幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)

注: 从上到下安全级别越来越高,效率越来越低


索引

索引是一种以空间换取时间的优化查询的方式

常见的索引结构有

* 二叉树  
* 红黑树
* hash
* B-Tree
* B+Tree

二叉树

用key/value的形式创建一个树。根节点的左边都是比跟节点小的值,右边是比根节点大的值,然后所有的节点都遵循这个规则,左小右大的规则。

		    1
	   -3       5
	 -5  -2   3    7
1
	2
		3
			4
				5

红黑树

在二叉树的基础上进行了一定优化,会自动的维护这个树,不让这个树的某一个分支过于长 最长与最短的叶子节点到根节点的距离不超过二

hash

用hash算法计算出一个hashCode然后将这个hashCode与行数据的磁盘位置进行绑定,然后下次就可以计算出hashCode找到对应的磁盘位置去出数据

B-Tree

在红黑树的基础上扩大了每个节点的容量,使其不再只能存储一个key/value而是多个

B+Tree

在B-Tree的基础上,设计为除了叶子节点剩下的节点都不存储value值,进一步的扩充了每个非叶子节点的能存储的key的数量并且,每个叶子节点还会存储相邻的节点的磁盘位置

聚簇索引和非聚簇索引

聚簇索引节点上的值存储的是磁盘位置,而聚簇索引存储的是整行数据。减少了I/O次数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值