select engine from information_schema.engines; 查看所有的存储引擎
select engine from information_schema.engines where transactions = 'YES' 查询支持事务的存储引擎
对于存储引擎而言,格式文件是与特定数据表相关联的唯一文件,其他存储引擎会把数据表的内容保存到硬盘上
的其他地方,或者使用一个或多个表空间tablespace,由多个数据表共享的存储区域
1. MyISAM存储引擎
MySQL默认使用的存储引擎,与其他存储引擎相比,他为AUTO_INCREATMENT数据列提供了更多的功能
MyISAM数据表有一个标志,当服务器异常关机时,这个标志用来判断数据表是否需要检查或修复,如果需要让
这种检查自动进行,需要在启动服务器时使用--myisam-recover选项,这会使服务器在每次打开一个MyISAM数据表
时自动检查数据表的标志并进行必要的数据表修复处理,他还支持全文检索,但这需要通过FULLTEXT索引来实现
还支持空间数据类型和SPATIAL索引
2. MERGE存储引擎,是把多一个MyISAM数据合并为一个逻辑单元的手段,查询一个MERGE数据表相当于查询其
所有的成员数据表,这种安排的好处是可以绕过文件系统对各个MyISAM数据表的最大长度的限制
构成MERGE数据表的所有数据表必须要有同样的结构,意味着各个成员数据表里的数据列定义同样的名字,同样的类型
同样的顺序,索引也必须以同样的办法按同样的顺序定义,我们把经过压缩和未经过压缩的数据混在一起而构成一个
MERGE数据表(myisamchk程序可以用来创建压缩数据表)
3.MEMORY存储引擎,把数据表保存在内存里,这些数据有着长度固定不变的数据行,这两个特点使得数据表的检索速度非常之快
MEMORY数据表示临时性的,服务器挂掉表中的内容也就消失了,重启之后仍会存在,只是他们的内容将会是一片空白
他的优点是检索速度快,MERORY数据表使用散列索引,这种索引进行"相等比较速度非常快",但是进行"范围比较"
速度比较慢,适用于"=",不适用与"<"或">",也不适用与order by子句里
MERORY数据行的长度固定不变的格式,以此来加快处理速度,意味着不能使用BLOB和TEXT这样的长度可变得数据类型
VARCHAR是一种可变的类型,但是因为它在MySQL内部被当做一种固定不变的CHAR类型,所以可以在MERORY数据表里使用VARCHAR类型
如果需要使用MERORY数据表和"<",">"或BETWEEN操作符进行比较可以使用BTREE索引来加快速度
4.InnDB存储引擎,支持存储和回滚操作,确保数据在事务处理中万无一失,可以通过创建保存点savepoint的办法来实现部分回滚
在系统崩溃后可以自动恢复,外键和引用完整性支持,包括递归式删除和更新,数据行级别的锁定和多版本共存,使得
InnDB数据表需要同时进行检索和更新操作的复杂查询表现出好的并发性能,InnoDB存储引擎把数据集中存储在一个共享
的表空间里,而不是去创建文件,InnoDB表空间可以由多个文件构成,InnoDB表空间就像是一个虚拟的文件系统,他存储
和管理所有InnoDB数据表的内容,也可以把InnoDB存储引擎配置成为每个数据表分别创建一个表空间的样子,每个数据表
在数据库子目录里都有一个对应的.ibd文件
5.Falcon存储引擎,支持事务和回滚,系统奔溃自动恢复,在存储时对数据进行压缩,检索时对数据行进行解压缩以节省空间
6.FEDREATED存储引擎,当创建FEDREATED数据表时,需要指定一台运行在其他服务器程序的主机,并提供服务器的合法账户的
用户名和口令,当你访问时本地服务器将使用这个账号连接那台远程服务器
7. NDB存储引擎,集群存储引擎,这个存储引擎工作时,MySQL服务器的作用是帮助其他进程访问NDB数据表,
其他存储引擎包括:ARCHIVE存储引擎,BLACKHOLE存储引擎,CSV存储引擎,EXAMPLE存储引擎
存储引擎的可移植性,1. 可以使用mysqldump工具把备份文件放到另一台服务器主机. 2. 二进制可移植性,指的是
可以直接把代表某个数据表的硬盘文件复制到另一台机器,并把他们安装到数据子目录下的相应地点,然后那台机器
上的MySQL服务器就可以使用该数据表了,有些存储引擎具备二进制可移植性的一项基本条件是源服务器和目标服务器
的有关功能必须兼容,也就是目标服务器和源服务器必须具有相同的存储引擎.
注意:不要在服务器意外关闭之后把数据表或表空间文件复制到另一台机器上,除非确定服务器的关机操作没有任何问题
异常关闭可能造成数据表需要修复,一些事物信息仍保存在存储引擎的日志里,必须等他们被提交或回滚之后才能更新数据表