innodb与myisam的区别


1myisam 2.innodb区别
1.不支持事务 2.支持
show variables like '%autocommit%';,默认都是自动提交的
我之前一直有疑问,我怎么从来没用过事务,现在知道,是系统自动的
insert into test values(1)
比如这个,在开始执行的时候,开启事务,在执行完成后,关闭事务


1.非聚集索引存储 2.聚聚索引存储
innoodb的idb文件既存储索引,又存储实际记录。myisam B+树叶子节点存储记录的指针


1.表锁,2.行锁,表锁
innodb如果操作命中索引,是行锁,否则上升到表锁
innodb必须有主键,没有的话系统生成,因为他就是按照主键存储记录的。myisam可以没有

存储文件不一样
innodb:frm,idb
myisam:frm,myi,myd

如何选择:
    1. 是否要支持事务,如果要请选择innodb,如果不需要可以考虑MyISAM;

    2. 如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读也有写,请使用InnoDB。

    3. 系统奔溃后,MyISAM恢复起来更困难,能否接受;

    4. MySQL5.5版本开始Innodb已经成为Mysql的默认引擎(之前是MyISAM),说明其优势是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不会差。


InnoDB为什么推荐使用自增ID作为主键?

答:自增ID可以保证每次插入时B+索引是从右边扩展的,可以避免B+树和频繁合并和分裂(对比使用UUID)。如果使用字符串主键和随机主键,会使得数据随机插入,效率比较差。

innodb引擎的4大特性

插入缓冲(insert buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead)

 

select VERSION();
show ENGINES;
select @@tx_isolation; //查看事务级别

select @@global.tx_isolation;//系统事务级别
show variables like '%autocommit%';

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-05-17 14:32  zzyoucan  阅读(548)  评论(0编辑  收藏  举报