mysql索引和事务_MySql索引和事务

MySQLde 索引:目的:是为了加快查询的速度,避免顺序查找,但是拖慢了插入和删除的速度.,应用在在经常查询,很少少出插入的场景中.

结构:B+树,N叉搜索树,使用链式的结构把每一层的节点连接在一起,叶子节点中保存数据,非叶子节点辅助查找.

主键索引和其他索引的不一样

主键索引叶子节点储存一条一条的数据,借助主键查询,一步到位直接查询到结果.

其他索引储存的是主键的id先根据索引找到主键的id,再拿id在主键索引中查找.

事务:

事务的一个典型应用就是银行转账.

事务就是一组操作的集合.

事务的四个基本特性

1.原子性:事务是不可再分的了,其中包含的操作要么完全正确的执行,要么一次都不执行.

2.一致性:事务执行前后,保持合法性.

3.持久性:事务一旦被执行完,对于数据库的改变是永修性的.对后面的操作是没有任何影响的.

4.隔离性:多个事务执行的时候是并发执行的,事务的内部操作和其他事务是隔离的.

隔离性在并发过程中的一些问题.

1.脏读:值得是在编写代码的时候,我们从中使用了一个属性元素,之后再代码提交的使用有删除了这个属性元素,此时同学在读代码的时候产生的脏读的问题读到了脏的数据.

解决思路:此时我们对隔离性没有过多的要求,为了避免脏读我们在写入的时候加入锁,可以避免脏读.(提高了隔离性,降低了并发).

2.不可复读性:一个事务中读取两次结果不相同.

我在写的代码提交了之后,同学可以读取代码,但是我有改写了代码,同学在读取的时候代码改变了,

解决思路:上面我们对写入操作进行了加锁,避免了脏读,但是不能避免不可重复度,所以我们在读取操作中加入锁操作,可以避免不可从复性.(提高了隔离性,降低了并发性).

3.幻读:对多个事务进行读取的时候结构集不相同.

例如:先头我对Studentzhege类进行了读加锁,但是现在我对Soret进行操作.读取的时候有的同学可以读到Soret这个类,有的同学读取不到.

解决思路:为了解决幻读,我们严格执行"串行化",同学们在读取代码的时候老师休息,不可以更改代码,同学休息的时候老师在去更改代码.这样子并行就完全没有了,直接实行串行化.隔离性最高,多个事务之间完全没有任何影响.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值