zoukankan      html  css  js  c++  java
  • mysql各种引擎特性对比表

    MyISAM:

      MyISAM不支持事物、不支持外键、表锁定、优势是访问速度快,对事物没有要求或者以select、insert为主的应用基本上都可以用这个引擎建表。每个MyISAM在磁盘上创建三个文件,文件名与表名相同,扩展名为:

    .frm(存储表定义)

    MYD(存储数据)

    MYI(存储索引)

    数据文件和索引文件放置到不同的目录,平均分布IO,获得更快的速度,创建表时通过通过data directory和index  directory语句指定,文件路径需要绝对路径,并且具有访问权限

      MyISAM表容易损坏,通过check table检查MyISAM表的健康,并用repair table语句修复损坏的MyISAM表。

      MyISAM表有三种存储格式:

    静态(固定长度)表:

    都是固定长度,优点:存储速度快、容易缓存、故障容易恢复。缺点:占用空间比动态大,按照列宽度定义补充空格,应用访问的时候不会得到这些空格

    动态表:

    包含变长字段,记录不固定长度,优点:占用空间较少。缺点:频繁的更新删除记录会产生碎片,需要定期执行optimize table或myisamchk -r来改善性能,故障出现后恢复相对困难

    压缩表:

    由myisampack工具创建,占用非常小的磁盘空间,因为每个记录被单独亚压缩,所以只有非常小的访问开支

    InnoDB:

    InnoDB引擎提供了具有提交、回滚和崩溃恢复能力的安全事务。但是比MyISAM存储引擎,InnoDB写处理效率会差一些并且会占用更多的磁盘空间以保留数据和索引。一下介绍一下InnoDB特有的特点:

    1.自动增长列

      InnoDB自动增长列可以手工插入,但是插入的值如果是空或者0,则实际上插入式自动增长后的值。对于InnoDB自动增长列必须是索引,如果是组合索引也必须是组合索引第一列,但是对于MyISAM表,自动增长列可以是组合索引其他列,例如创建一个MyISAM表,自动增长列d1作为组合列第二列,该表插入一些记录后,如下所示:

    root@localhost:cyz--06:40:43 >create table aaa(d1 smallint not null auto_increment, d2 smallint not null, name varchar(10), index(d2,d1))engine=myisam;
    Query OK, 0 rows affected (0.12 sec)

    root@localhost:cyz--06:40:44 >insert into aaa(d2,name) values(2,'2'),(3,'3'),(4,'4'),(2,'2'),(3,'3'),(4,'4')
    -> ;
    Query OK, 6 rows affected (0.03 sec)
    Records: 6 Duplicates: 0 Warnings: 0

    root@localhost:cyz--06:41:30 >select * from aaa;
    +----+----+------+
    | d1 | d2 | name |
    +----+----+------+
    | 1 | 2 | 2 |
    | 1 | 3 | 3 |
    | 1 | 4 | 4 |
    | 2 | 2 | 2 |
    | 2 | 3 | 3 |
    | 2 | 4 | 4 |
    +----+----+------+
    6 rows in set (0.00 sec)

    2.外键约束:

    mysql支持外键的只有InnoDB

    3.存储方式:

    共享表空间:表结构保存在.frm中,数据和索引保存在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以保存多个文件

    独立表空间:需要设置innodb_file_per_tabel=1.只对新建的表起作用,原来该怎么保存还继续保存。表结构保存在.frm中,每个表的数据和索引单独保存到.ibd中,如果是分区表,每个分区对应单独的.ibd文件,文件名“表名+分区名”

    单独表空间数据文件没有大小限制,不需要设置初始大小、最大限制、扩展大小等。

    即使选择了单独表空间,共享表空间也是要存在的,需要InnoDB把内部的数据词典和undo放在这里

    MEMORY:

      MEMORY存储引擎是使用内存中的内容创建表,每个memory表实际对应一个磁盘文件,格式是.frm,memory表访问速度非常快,默认是hash索引。

    你将来想成为什么样子,就一定会成为什么样子,只要你努力坚持的去做!!!
  • 相关阅读:
    第十一单元 beego验证
    第九单元 ORM
    第六单元 go操作redis
    第五单元 go操作mysql
    第四单元 参数配置
    springboot使用外置tomcat
    ⚡ 第二.三章顺序表与链表⚡
    c语言程序设计题 译密码
    翁恺 java进阶第一周作业
    Java 构造素数表的两种方法
  • 原文地址:https://www.cnblogs.com/kucha/p/4835997.html
Copyright © 2011-2022 走看看