mysql myisam 事务_mysql 事务学习

1: mysql  存储引擎 主要包括 innodb ,myisam ,memory 等等

innodb 与 myisam 优缺点对比:

innodb 支持事务处理(ACID), 支持行锁,更强大的索引

myisam 在数据量大,查询时效率高

1:存储结构

myisam 数据保存在三个文件中,第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI

innodb 数据都保存在一个文件中

2: 存储空间

MyISAM:可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。

InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。

3、 事务支持

MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。

InnoDB:提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。

4、 CURD操作

MyISAM:如果执行大量的SELECT,MyISAM是更好的选择。(因为没有支持行级锁),在增删的时候需要锁定整个表格,效率会低一些。相关的是innodb支持行级锁,删除插入的时候只需要锁定改行就行,效率较高

InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。DELETE 从性能上InnoDB更优,但DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除,在innodb上如果要清空保存有大量数据的表,最好使用truncate table这个命令。

5、 外键(一个表的一列,作为另一表的主键)

MyISAM:不支持

InnoDB:支持

innodb 事务 有四种隔离级别:(聚簇索引 包括 主键b+tree 辅助键 b+tree)

脏读:当一个事务update 一行数据,没有commit ,另一个事务会读取到未提交的数

不可重复读:一个事务在执行过程中,查询了两次数据,另外一个事务更新了该条数据,导致这个事务两次读的数据不一致

幻读:一个事务在执行时,另一个事务向里面插入一条新的数据,会出现新数据没有执行事务操作。

1:不可提交读 会出现脏读 , 不可重复读 , 幻读

2:可提交读  会出现不可重复读,幻读

3:可重复读 会出现幻读

4:可串行读 都不会出现 , 但使用锁会较多,占用内存资源

锁类别:

1:共享锁 : 可读  不可更新

2:排它锁 :不可读,不可更新

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值