myISAM和innoDB引擎

前言

MYSQL有多种存储引擎,也就是数据最终存储在文件中要怎么存储,读写策略.myISAM是默认的存储引擎

myISAM

基于传统的ISAM类型, 支持全文检索, 但不是事务安全的, 而且不支持外键

InnoDB

事务引擎,支持回滚, 崩溃恢复能力,多版本并发控制,ACID事务,支持行级锁定

主要区别

  1. myISAM是非事务的, 而innoDB是事务安全的
  2. myISAM锁的粒度是表的级别,也就是锁定表,innoDB是行级别的锁定
  3. myISAM支持全文检索,innoDB不支持
  4. myISAM相对简单, 所以效率要优于innoDB
  5. myISAM表是保存成文件的形式, 跨平台迁移更方便
  6. innoDB比myISAM更安全,

应用场景

  1. myISAM提供高速的存储和检索, 以及全文搜索.如果要执行大量的select语句, 应该选择myISAM
  2. innoDB在执行大量insert或者update操作下更快和并发效果

命令

  1. 查看表的存储类型

    1
    2
    3
    show create table tablename
    show table status from dbname where name = tablename
    mysqlshow -u user -p password --status dbname tablename
  2. 修改表的引擎

    1
    alter table tablename type = InnoDB
  3. 启动mysql数据库命令中添加参数使新发布的表默认都使用事务

    1
    --default-table-type=InnoDB
  4. 临时改变默认表的类型

    1
    2
    set table_type = InnoDB
    show variables like 'table_type'