MySQL系列(四)---引擎

MySql中的引擎

目录

引擎种类

  • FEDERATED
  • MRG_MYISAM
  • MyISAM
  • BLACKHOLE
  • CSV
  • MEMORY
  • ARCHIVE
  • InnoDB
  • PERFORMANCE_SCHEMA
  • 输入show storage Engines,可以看到当前mysql的所有引擎,本文主要讲常用的两种索引MyISAM和InnoDB

引擎使用

  • 查看表的引擎,show create table table_name ,可以看到表的引擎
  • 在创建表的时候,我们就可以设置表的的引擎CREATE TABLE user (id INT NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL,password VARCHAR (50) NOT NULL DEFAULT 1,PRIMARY KEY(id)) ENGINE =INNODB
  • 修改表的引擎 alter table note engine=myisam;

比较

MyISAM InnoDB
文件 三个文件组成。.frm(存储表定义).MYD (存储数据文件)。.MYI (存储索引)。 所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。
外键 不支持 支持
事务 不支持 支持
自增长列 必须是索引列,不需要一定是组合索引的第一列 必须是索引,如果是组合索引,必须是组合索引的第一列
查找行数 存储了表的行数,查找时候很快 必须扫描全表
增删该查 select更适合 insert 和 update更适合
表锁 既支持行锁也支持表锁
删表 重建表 一行一行删
存储空间 表支持3种存储格式,静态表(默认存储格式,每条记录固定长度),动态表(每条记录不是固定长度,存储的空间减少了),压缩表(每条记录被单独压缩,占据空间更少) 需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引
可移植性 数据以文件形式存储,跨平台转移方便 所有表都保存在同一个数据文件(也可能是多个文件),相对来说不好备份

引擎选择

  • 选择密集还是更新密集,MyISAM读操作性能更好,InnoDb写操作更好
  • 并发度如何,InnoDB支持事务,并发下表现更好
  • 是否需要外键支持

我觉得分享是一种精神,分享是我的乐趣所在,不是说我觉得我讲得一定是对的,我讲得可能很多是不对的,但是我希望我讲的东西是我人生的体验和思考,是给很多人反思,也许给你一秒钟、半秒钟,哪怕说一句话有点道理,引发自己内心的感触,这就是我最大的价值。(这是我喜欢的一句话,也是我写博客的初衷)

上一篇:Joke


下一篇:MySQL高可用架构之MHA