Mysql---索引和事物

索引:(用空间换时间)

定义:相当于一本书的目录,用于加快查找书中某一页的效率.
EG:以查找为例:
如果是顺序表查找,顺序表在内存中.内存访问速度很快,而且数据也没有很多,所以速度还可以.
如果针对数据库进行顺序查找,数据库的数据在磁盘上,磁盘的访问速度很慢,并且此时的数据可能会非常得多,因此导致查找的速度很慢,效率很低.
解决的问题:快速定位,检索数据.加快查找的效率.
应用的场景:
1.数据量较大,且经常对这些列进行条件查询。删除 修改 增加不常见
2.该数据库表的插入操作,及对这些列的修改操作频率较低。
3.索引会占用额外的磁盘空间。

索引可以考虑的数据结构:
1.二叉搜索树 :中序遍历结果是有序的
缺点:每个树只有两个叉,当树的深度比较高的时候查找效率就比较低.
针对树的中序遍历也不是很高效O(N)
2.哈希表:数据库的索引可以考虑哈希,但是哈希也有一些问题无法处理.
哈希是把key代入哈希函数中计算下标的值,根据下标取到对应的链表,再去遍历比较key是否相等.
哈希的时间复杂度O(1)查找的时间效率很高但是只能处理相等的情况,(< > >= between.and)这些情况无法处理.

因此引入B+树
先来看看B树:
在这里插入图片描述
B树的优点:查找效率比二叉搜索树快很多 同时处理范围查找更容易一些
但是B树在Mysql这种关系型数据库中不是很适用

B+树:

在这里插入图片描述
其他注意事项:
索引的效果:
1.优点:加快查找效率
2.缺点:对于插入,删除,修改数据(需要重新调整索引结构) 会减慢效率
会占用额外的空间(内存 磁盘)
3.创建索引,删除索引都是比较耗时的操作最好避免在线上操作 先准备好在启动服务器
4.主键索引的叶子节点存储的是数据的完整记录
在这里插入图片描述
其他索引的叶子节点存的是主键的id
在这里插入图片描述
比如
创建主键约束 外键约束 唯一约束时会自动创建对应列的索引
补充1:

在这里插入图片描述
补充2:
在这里插入图片描述

索引对应的mysql:

1.查看索引:
在这里插入图片描述
2.创建索引:
在这里插入图片描述
3.删除索引:
在这里插入图片描述

事物:

定义:把一组操作封装在一起.成为了一个共同的执行单元.
特性:
1.原子性(最重要):事物的若干个操作要么就全部执行成功,要么就全不执行(如果中间某个步骤出错就把之前的步骤回滚回去 还原原来造成的影响)
2.一致性:执行事物前后 数据一直处于一种合法状态
3.持久性:事物执行完毕 对数据的修改持久有效(写入磁盘)

举个栗子:
我妈现在要给我转1000生活费 在她的卡里扣1000(如果给我转完她的账户负的了就不符合一致性) 我的卡里就要增加1000这就叫做原子性 给我转1000之后这笔钱就任我挥霍了这就叫做持久性

4.隔离性(复杂):“并发执行事物”
在这里插入图片描述
写在前面:[针对以下几点好好准备]
在这里插入图片描述
事物隔离的四个级别:
读已提交 读未提交 可重复读 串行化

并发执行事物时会产生的问题:
在这里插入图片描述在这里插入图片描述
再举个栗子:
单纯的觉得画图好用! 画图怎么这么好用 爱了爱了! 太傻了之前没发现!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值