mysql常用引擎以及各个引擎间的差异
2016-09-27 22:47
218 查看
mysql常用引擎:MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表
InnoDB——>事务安全 (MyISAM、MEMORY、MERGE)——>非事务安全
事务(Transaction)指一组sql语句;
回退(rollback)指撤销指定SQL语句的过程;
提交(commit)指将为存储的SQL语句结果写入数据库表;
保留点(savepoint)指事务处理中设置的临时占位符(placeholder),可以对它发布回退。
(1)InnoDB支持外键和事务,MyIsam不支持;
(2)InnoDB支持数据行锁定,MyISAM只支持锁定整张表;
(3)InnoDB不支持全文索引FULLTEXT,MyISAM支持;
(4)InnoDB主键范围更大;
(5)MyISAM支持gis数据,InnDB不支持。
(6)MyISAM会保存表的行数,所以select (*) from table;的速度更快,但如果带有where子句,而俩者的操作是一样的。
mysql默认是使用MyISAM引擎
事务开始的标志:START
TRANSACTION
例如以下为一个事务过程:
MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。
MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除的操作,就是对内部的MyISAM表进行的。
MyISAM表还支持3中不同的存储格式:
1 静态表
2 动态表
3 压缩表
静态表是默认的存储格式,静态表中的字段都是非变长的字段,优点是:存储非常迅速,容易缓存,出现故障容易恢复;缺点是:占用的空间通常比动态表多。(注意: 在存储时,列的宽度不足时,用空格补足,当时在访问的时候并不会得到这些空格)
动态表的字段是变长的,优点是:占用的空间相对较少,但是频繁地更新删除记录会产生碎片,需要定期改善性能,并且出现故障的时候恢复相对比较困难。
压缩表占用磁盘空间小,每个记录是被单独压缩的,所以只有非常小的访问开支。
MySQL支持外键存储引擎只有InnoDB,在创建外键的时候,要求附表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。
InnoDB存储方式为两种:1 使用共享表空间存储 2 使用多表空间
MEMORY类型的存储引擎主要用于那些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效地堆中间结果进行分析并得到最终的统计结果。对MEMORY存储引擎的表进行更新操作要谨慎,因为数据并没有实际写入到磁盘中,所以一定要对下次重新启动服务后如何获得这些修改后的数据有所考虑。
MERGE用于将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用它。MERGE表的优点在于可以突破对单个MyISAM表大小的限制,通过将不同的表分布在多个磁盘上,可以有效的改善MERGE表的访问效率。
创建表结构的时候就可以选择引擎
InnoDB——>事务安全 (MyISAM、MEMORY、MERGE)——>非事务安全
事务(Transaction)指一组sql语句;
回退(rollback)指撤销指定SQL语句的过程;
提交(commit)指将为存储的SQL语句结果写入数据库表;
保留点(savepoint)指事务处理中设置的临时占位符(placeholder),可以对它发布回退。
(1)InnoDB支持外键和事务,MyIsam不支持;
(2)InnoDB支持数据行锁定,MyISAM只支持锁定整张表;
(3)InnoDB不支持全文索引FULLTEXT,MyISAM支持;
(4)InnoDB主键范围更大;
(5)MyISAM支持gis数据,InnDB不支持。
(6)MyISAM会保存表的行数,所以select (*) from table;的速度更快,但如果带有where子句,而俩者的操作是一样的。
mysql默认是使用MyISAM引擎
事务开始的标志:START
TRANSACTION
例如以下为一个事务过程:
<span style="color:#3333ff;background-color: rgb(255, 255, 255);">SELECT * FROM ordertotals;//显示该表不为空 START TRANSACTION;//开始事务 DELETE FROM ordertotals;//删除全部数据 ROLLBACK;//回退 SELECT * FROM ordertotals;//显示该表不空</span>
MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。
MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除的操作,就是对内部的MyISAM表进行的。
MyISAM表还支持3中不同的存储格式:
1 静态表
2 动态表
3 压缩表
静态表是默认的存储格式,静态表中的字段都是非变长的字段,优点是:存储非常迅速,容易缓存,出现故障容易恢复;缺点是:占用的空间通常比动态表多。(注意: 在存储时,列的宽度不足时,用空格补足,当时在访问的时候并不会得到这些空格)
动态表的字段是变长的,优点是:占用的空间相对较少,但是频繁地更新删除记录会产生碎片,需要定期改善性能,并且出现故障的时候恢复相对比较困难。
压缩表占用磁盘空间小,每个记录是被单独压缩的,所以只有非常小的访问开支。
MySQL支持外键存储引擎只有InnoDB,在创建外键的时候,要求附表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。
InnoDB存储方式为两种:1 使用共享表空间存储 2 使用多表空间
MEMORY类型的存储引擎主要用于那些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效地堆中间结果进行分析并得到最终的统计结果。对MEMORY存储引擎的表进行更新操作要谨慎,因为数据并没有实际写入到磁盘中,所以一定要对下次重新启动服务后如何获得这些修改后的数据有所考虑。
MERGE用于将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用它。MERGE表的优点在于可以突破对单个MyISAM表大小的限制,通过将不同的表分布在多个磁盘上,可以有效的改善MERGE表的访问效率。
创建表结构的时候就可以选择引擎
CREATE TABLE `caiji` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `url` varchar(200) NOT NULL, `lanm` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ENGINE=MyISAM 表示选用MyISAM,也可以选InnoDB或者其它,根据需要。
相关文章推荐
- mysql常用的存储引擎以及各个使用场景
- Mysql常用的几种的引擎以及性能介绍
- MySQL常用命令介绍以及字符集问题
- mysql常用命令以及使用tip
- MYSQL:union, 以及常用函数
- web测试常用python代码——mysql连接以及语句执行
- MySQL常用的存储引擎
- MYSQL常用命令(三) 建库和建表以及插入数据
- mysql常用存储引擎对比(转)
- mysql 远程连接数据库的方法以及常用命令(转)
- mysql常用字符串操作函数大全,以及实例
- 方维系统常用的jquery库以及各个库的含义
- Mysql常用命令简介以及应用实例
- 浅谈MySQL存储引擎 InnoDB和MyISAM 以及行锁注意事项
- MYisam和InnoDB区别以及MySQL引擎简介
- MySQL下数据表混乱的字符编码处理以及一些处理字符编码时的常用命令整理
- mysql常用字符串操作函数大全,以及实例
- MySql的增删改查以及常用的一些操作
- 查看 MySQL 表使用的存储引擎--正确方式 以及修改存储引擎的方式
- Mysql常用储存引擎比较