myisam与innodb的区别

1.存储结构

  myisam 

    在磁盘上存为3个文件,文件类型:  .frm(文件存储表定义)   .myd(存储数据文件)     .myi(存储索引文件)

  innodb 

    所有表保存在同一数据文件中(也可以为多个文件,若是开启独立表空间,则以表分组,每个表存在统一数据文件中)。innodb的大小受操作系统限制,一般为2GB

2.存储空间

  myisam 

    可压缩,存储空间小,支持三种压缩格式: 静态表,动态表,压缩表。

  innodb 需要更多的内存与存储空间   ,  在内存中有缓存池

3.可移植性 备份,恢复

  myisam

    以文件的形式储存,方便移植。备份与恢复时可对单一表进行操作

  innodb

    移植数据文件时,可用mysqldump等操作,数据量大时不如myisam

4.事务

  myisam

    查询具有原子性(要么一起成功,要么一起失败),速度快,但是不支持事务

  innodb

    支持事务

5.表锁差异

    myisam 

      只支持表级锁

    innodb

      支持行锁,大幅度提高用户的并发。innodb的行锁只在通过索引检索的数据使用行锁,否则使用表锁

行锁与表锁

  用户对表进行CRUD时,行锁将对相应的行数据锁上,表锁则是将整个表锁上。防止其他用户操作

6.fulltext  全文索引

  myisam支持全文索引

  innodb 不支持全文索引

7.主键

  myisam 允许没有主键和索引的表存在

  innodb  若是没有主键和唯一索引,则生成一个6字节的主键(用户不可见)

8.表的总行数

  myisam 提前保存表的总行数,直接读取

  innodb  需要遍历整个表,消耗大

  但是加上where 都需要查询

9.CRUD

  myisam 

    select 查询速度快

  innodb

    insert与update 性能好,delete innodb比myisam快

  但是 delete from table   innodb删除数据是一行一行的删除。最好使用truncate table

  myisam 直接删除表,再建一个表

10.外键

  myisam 不支持外键

  innodb 支持外键

posted @ 2020-10-15 18:47  雨后星辰zxj  阅读(146)  评论(0)    收藏  举报