【Mysql】Mysql数据库的存储引擎和事务的简单解释

一、数据库的存储引擎分为以下四种
1、MyISAM
2、InnoDB
3、MOMERY
4、ARCHIVE
二、下面我们简单说明这几个存储引擎的特点
1、MyISAM
不支持事务、支持全文索引,但是对于一些在线分析处理操作速度快。
文件组成由myd存放数据的。myi存放索引的。
2、InnoDB
支持事务,主要是面向在线事务处理方面的应用,特点是行锁设计,并支持外键。InnoDB采用聚集索引的方式。没有主键,没有唯一键,为每一行生产一个6字节的行id作为主键。
3、MOMERY
将数据放在内存中,如果数据库重启或者宕机,表数据就会丢失。非常适合存储一些临时表,默认的是哈希索引,不是B+树索引,varchar()默认 是按照char()存储的,浪费内存。不支持text和BLOB类型。如果数据中有text和BLOB类型,数据库会把这些数字转换到磁盘上。
4、ARCHIVE
只支持INSERT和SELECT操作,使用压缩算法将数据进行压缩后存储,压缩比列一般是1:10,主要提供插入和压缩功能。
三、各个引擎的各功能对比

功能MYISAMMEMORYINNODBARCHIVE
存储限制256TBRAM64TBNone
支持事务nonoyesno
支持全文索引yesnonono
支持数索引yesyesyesno
支持哈希索引noyesnono
支持数据缓存noN/Ayesno
支持外键nonoyesno

四、事务
(一)事务的概念
事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。
(二)事务的特性
A C I D

  • A(原子性):一个事务的执行被视为一个不可分割的最小单元。事务里面的操作,要么全部成功执行,要么全部失败回滚,不可以只执行其中的一部分。
  • C(一致性):事务的运行并不改变数据库中数据的一致性 AID是数据库的特征,通过AID手段保证C这个目的
  • I(隔离性):两个以上的事务不会出现交错执行的状态(因为会导致数据不一致)
  • D(持久性):事务提交之后,需要将提交的事务持久化到磁盘。即使系统崩溃,提交的数据也不应该丢失。

(三)如何保证事务的原子性
两个日志系统保证原子性和持久性
日志系统:redo logc 重做日志 和 undo logc 未做日志,两个合起来就可保证原子性
redo logc 重做日志记录了事务将要执行的每一个操作保存了事务执行过程中的每一个状态点
日志先行—》一旦开启先刷新到磁盘上,事务将要执行的操作永久的保存下来
(四)事务不隔离会产生什么问题(并发事务带来的问题)

  • 脏读:事务获取到其他事务执行过程中的结果
  • 丢失修改: 事务A 、B都读取同一个数据。事务A 、B先后修改数据,则 第一次修改操作丢失。
  • 不可重复读:事务执行过程中读取了其他事务不同阶段的结果(修改操作导致的)
  • 幻读:事务执行过程中获取到其他事务不同的阶段的结果(插入或删除的结果导致的)

(五)事务的隔离级别

  • 未提交读 : 会出现脏读、不可重复读、幻读的问题
  • 已提交读 : 会出现不可重复读和幻读的问题
  • 可重复读 : 会出现幻读的情况(MySQL 默认且通过其他机制 间隙锁解决幻读问题)
  • 可序列化 : 串行处理,效率差 上表锁,读写相互阻塞。效率低下 无并发问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值