2021-09-24 数据库总结

数据库总结

一.存储引擎

MylSAM和InnoDB两种存储引擎,MySql中常用的存储引擎为InnoDB。

MylSAM和InnoDB的主要区别:

  1. InnoDB支持事务
  2. InnoDB是聚集索引,MylSAM是非聚集索引。
    1)聚集索引的文件存放在主键索引的叶子节点上。因此,InnoDB必须要有主键,通过主键索引的效率很高。但是辅助索引需要两次查询,先查询到主键,再通过主键查询到数据。
    2)MylSAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

二.事务

1) 什么是事务?
事务是指在程序中一系列逻辑操作需要全部成功完成,否则在每个操作中的修改都会被撤销。
2) 事务的四个特性
(ACID)

  1. A 原子性,操作这些指令,要不全部执行成功,要不全部不执行。如果只要有一条指令执行失败,所有的指令都执行失败,数据需要回滚。
  2. C 一致性,整个数据的完整性保持稳定
  3. I 隔离性,多个用户并发访问数据库是,数据库为每一个用户开启的事务,不能被其他事务的操作干扰。
  4. D 持久性,当事务正确完成时,对数据的更改是永久的。

3) 并发事务导致的问题

  1. 撤销一个事务时,把其他事务已提交的更新数据覆盖。(银行存款100元,年费扣了5元,撤回存款100元,5元去哪了?)
  2. 脏读:一个事务处理过程中读取了另一个未提交的事务中的数据。
  3. 幻读:也叫虚读,一个事务执行两次查询,第二次结果包含第一次中没有或某些行已经被删除的数据,造成两次结果不一致,这是另一个事务在这两次查询中插入或者删除数据造成的。
  4. 不可重复读:一个事务两次读取同一行数据,结果得到不同状态的结果,中间正好另一个事务更新了该数据,两次结果不一致,不可被信任。(另一事务提交了数据)

4) 数据库事务的隔离级别
MVCC
读未提交 -> 导致脏读
读已提交 -> 解决脏读 -> 可能会产生不可重复读
可重复读 -> 解决脏读和不可重复读 -> 可能会产生幻读
序列化 串行化执行

参考文献:
[1] https://cloud.tencent.com/developer/article/1133074

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值