MySQL-索引与事务

MySQL-关于索引与事务知识点

无聊~突然想尝试着默写一下索引与事务中的知识点,顺带总结总结面试常考问题,默写完在文章后面继续补充默写中没有提及的重要知识点。
~~单纯的尝试尝试看能记住多少

索引

为什么要使用索引

面试中如果遇到这样的概念问题,我个人是比较倾向于大家边画图边和HR解释,很多时候面试官想听的并不是我们能熟练的背出各种问题的标准概念,相反他们更想听到的是我们对于一个概念原理的内化,我们自己理解的索引(事务)是什么,有什么作用。

废话说了那么多,那么到底什么是索引呢?
其实字面意思已经告诉我们了,索—搜索,引—指引,书本—目录,是不是想到了什么,索引其实就是数据库的目录,就这么简单,当书本有了目录整本书的逻辑结构边一目了然,提高了查询效率。

索引有什么缺点?

这个问题用书本–目录这个例子来解释,大家不妨想想,一本书多了目录,很明显多用了几页纸张。换成数据库中的索引自然就占用了硬盘的空间~~,但是有一个问题,数据库可能随时要进行增删查改,要修改索引,这个时候也就会浪费很多时间。当然大部分情况只是查询

索引背后的数据结构原理是什么?

答案:索引背后是靠B+树来实现的。学完数据结构之后现在想想数据结构其实还挺好玩的~

为什么不能使用哈希表

答案:哈希表做不到进行范围查询。但是数据库是一定需要范围查询的。

为什么不能使用二叉搜索树(AVL树,红黑树)

最容易想到的就是使用二叉搜索树来实现索引,但是使用树形结构难免要遇到一个问题,那就是树的高度,当数据库中的数据变多的时候,显然树的高度就会变得非常高,IO次数就会变多。效率会变得非常低,反观B+树,N叉树的优点就被体现的淋漓尽致~。可以说B+树这种数据结构就像为索引量身定做的一样。

什么是B-树,什么是B+树

B树呢大概是这样~
在这里插入图片描述
B+树大概是这样~ 下面的叶子节点用链表结构连接起来。
在这里插入图片描述

事务

打字打累了~~,

事务是什么?

举一个例子吧:事务这玩意就像我们平时去银行转账一样,我们给别人转账过去一笔N亿资金,那么一定是要你转账的要求申请给电脑,然后把你的钱吞进机器,一系列操作进行完后你转账的对象才会收到一条到账的信息。转账过程中就两步骤,一个就是吞钱一个就是收到到账信息,这两步骤其实就是一个整体,缺少任意一个步骤都不能完成,总不能说你钱被了之后却收不到到账信息,或者收到到账N个亿信息结果另一边压根没出钱。显然银行不会这样给你占便宜。把这些步骤给聚合在一起看作一个整体就是事务,其中只要有一个环节出错那么代表全部都错。

事务具有的特点有哪些?

1.原子性(事务的核心特点)------说白了就是聚合起来
2.一致性------类似说聚合起来的东西一样
3.隔离性
3.1 幻读–解决方法-串行化
3.2 脏读–解决方法-给写操作加锁
3.3 ------忘记了我记得是还有一个的。。。。。
4.这个也忘记了。。。。难受

看答案后补充

主要是补充事务中的
隔离性的第三小点应该是不可复读~
事务的基本特性第四点应该是持久性~
事务的实现机制的核心是“回滚”,“回滚”的依据就是MySQL要记录之前执行的一些过程~


可能有些地方有错误,欢迎指正~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值