mysql各种引擎特性对比表
来源:互联网 发布:微信数据怎么放到sd卡 编辑:程序博客网 时间:2024/05/22 04:30
事务安全,只有InnoDb支持!
如果使用myisam,是没有事务安全的,开发的时候具体的表现:
1、每次执行executeUpdate()后,数据就马上能在DB中查到。但按理来说,我还没执行commit(),DB中不应该有这个数据;2、执行rollback()时,数据也没回滚。
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索引。
- mysql各种引擎特性对比表
- Mysql数据库引擎类型与特性对比
- Mysql数据库引擎类型与特性对比
- MySQL各种存储引擎的对比
- MySql 各种数据库引擎的简单对比
- 【MySQL存储引擎】MyISAM、InnoDB和MEMORY特性对比
- Mysql中各种常见数据库存储引擎对比
- mysql存储引擎对比
- MYSQL 数据库引擎对比
- MySQL存储引擎对比
- MYSQL 数据库引擎对比
- Mysql存储引擎对比
- MySQL存储引擎对比
- Mysql各种存储引擎的特性以及如何选择存储引擎
- Mysql各种存储引擎的特性以及如何选择存储引擎
- Mysql各种存储引擎的特性以及如何选择存储引擎
- 详细介绍Mysql各种存储引擎的特性以及如何选择存储引擎
- Mysql各种存储引擎的特性以及如何选择存储引擎
- Unity5的AssetBundle(一、打包)
- Tomcat 的 JDBC 连接池
- first one
- python︱用pyodbc连接数据库
- 二叉排序树与平衡二叉树
- mysql各种引擎特性对比表
- opencv3UMat介绍,以及测试比较opencl,cuda性能
- Vue+axios 实现http拦截及路由拦截实例
- 程序员最核心的竞争力是什么?
- android隐藏标题栏
- java 独立存储线程变量技术——ThreadLocal
- 利用CombineFileInputFormat合并小文件
- GPIO 输入—按键检测
- protobuf入门教程(四):repeated限定修饰符