美文网首页
mysql 事务学习

mysql 事务学习

作者: 风情云淡 | 来源:发表于2017-05-07 19:23 被阅读22次

    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:排它锁 :不可读,不可更新

    相关文章

      网友评论

          本文标题:mysql 事务学习

          本文链接:https://www.haomeiwen.com/subject/npxjtxtx.html