当前位置:   article > 正文

MySQL——简述索引与事务_简述事务和索引

简述事务和索引

一,什么是索引

简单来说,就是目录,其目的就是为了提高查询的效率,快速定位

但会消耗小部分空间,降低增删改的效率

二,如何使用索引

1.创建索引

create index 索引名 on 表名/列名 ;

 

注意:

1.主键自带一个索引 

2.表中数据较多时可能会卡死数据库

2.显示索引

show index from 表名;

 3.删除索引

drop index 索引名 on 表名;

三,索引背后的数据结构是啥样的

1.哈希表

漏!哈希表虽然速度快,但只能查询值相等的情况 ,当进行比较大小的范围查询则不支持

2.二叉搜索树?

也漏!数据库数据特别多时,树的高度会异常的高(logN),不太合适

3.B树?

也不完美

B树也是一个N叉搜索树,每个节点包含N-1个值,也可能更少

N-1个值,就把区间分为N个

B树的值不能重复出现

这样做,比二叉树高度减小,IO次数降低

 4.B+树!

N个值分为N个区间

B+树的值可以重复出现

 观察叶子节点:12 —> 345 —> 678 —>  9 10 11 —> 12 13 14 15 

正因为叶子节点是全集数据,只需要把所有的叶子节点,以链表形式首尾相连,方便范围查找

此时,非叶子节点只需要保存索引即可,在内存中缓存,来减少硬盘IO

三,事务

1.什么是事务

原子性:一系列不能分割的事(要么全部成功,要么全部失败)

事务就是维持原子性的一组操作

事务的回滚(rollback):在事务的执行过程中,MySQL会保存每一步执行记录,一旦出现问题就可以根据记录来回滚

2.事务的使用

(1).开启事务

start transaction;

(2).执行多条SQL语句

(3).回滚或提交:rollback/commit

3.事务的特性

原子性:事务的根本,事务执行中,进行一系列不可分割的操作

一致性:事务执行前后,数据处在“一致”的状态

持久性:事务的改动,都是写在硬盘里,不会随着程序重启/主机重启而丢失

隔离性:多个事务并发执行的时候,事务之间能够保持“隔离”,不互相干扰

4.如何解决事务的脏读问题

  类似考试的时候,有人故意写错误答案给别人抄,后面他又偷偷改了。

可以对写操作加锁,

加锁前,并发性高,隔离性低;加锁后,隔离性高,并发性低

5.隔离级别的四种档位

平衡效率和准确性

从上到下,准确性提高,效率降低

1.read uncommitted   

2.read committed 

3.repeatable read

4.serializable 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/491069
推荐阅读
相关标签
  

闽ICP备14008679号