MySQL的存储引擎以插件式形式接入,用户可以根据应用需要选择如何存储和索引数据、是否使用事务等。MySQL5.0支持的存储引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供了事务安全表,其他存储引擎都是非事务安全表。MySQL5.5之前默认存储引擎为MyISAM,5.5之后改为了InnoDB。MyISAM不支持事务、不支持外键,其优势是访问速度快,主要应用于对事务完整性没有要求或者以SELECT、INSERT为主的场景。MyISAM的表会在磁盘上存储成3个文件,文件名与表名相同,这个三个文件的扩展名如下:.frm:存储表定义.MYD:存储数据.MYI:存储索引索引文件和数据文件的存储路径可以通过配置指定,在创建表的时候通过DATADIRECTORY和INDEXDIRECTORY语句指定,也就是说不同的MyISAM表的索引文件和数据文件可以放置到不同的路径下。注意,这里说的路径是绝对路径,并且要具有访问权限。如果MyISAM类型的表受损了,可以用CHECKTABLE语句来检查MyISAM表的健康。用REPAIRTABLE语句修复一个损坏的MyISAM表。MyISAM表还支持3种不同的存储方式,分别是:静态表动态表压缩表静态表:静态表是默认的存储格式。表中的字段都是非变长字段,因此每个记录都是固定长度,所以存储非常迅速,容易缓存,出现故障容易恢复。缺点是占用的空间通常比动态表多。静态表的数据在存储时会按照列的宽度定义补足空格,但是在应用访问的时候并不会得到这些空格,这些空格在返回给应用之前已经去掉。所以需要特别注意的是,如果需要保存的内容后面本来就带有空格,那么在返回结果的时候也会被去掉。动态表:动态表中包含变长字段,记录不是固定长度的。优点是占用的空间相对较少,但是频繁地更新和删除记录会产生碎片,需要定期执行OPTIMIZETABLE语句或myisamchk-r命令来改善性能,并且在出现故障时恢复相对比较困难。压缩表:由myisampack工具创建,占据非常小的磁盘空间。每个记录都被单独压缩。ps:其他存储引擎放到介绍。
转载请注明:http://www.aierlanlan.com/rzdk/8320.html