MySQL存储引擎
承接:《高性能MySQL》阅读 Mysql架构和历史 三、
【鬼王棺】诗号:
遥遥天涯判死生,近近咫尺索命魂。
- MySQL存储引擎之MyISAM
- MySQL5.1版本之前默认的存储引擎,5.5之后完全使用innoDB存储引擎
- MyISAM提供了大量的特性:全文索引、压缩、空间函数(GIS)等,MyISAM不支持事务和行级锁,并且崩溃之后无法安全恢复。
- 如果-对于只读的数据,或者比较小、可以忍受修复操作,则依然可以继续使使用MyISAM
- 存储:MyISAM会将表存储在两个文件中:数据文件和索引文件,分别以.MYD和.MYI为扩展名
- 特性:表锁和并发–读时共享锁,写时排他锁;但在表读取时,可往表中插入数据,被称为并发插入;
修复–可以CHECK TABLE mytable检查表的错误,如果有错误,嗯可以通过REPAIR TABLE mytable进行修复;但是修复和事务恢复以及崩溃后的数据恢复是概念不同的;执行表的修复可能导致一些数据的丢失,而且修复操作非常慢
索引特性–MyISAM支持全文索引,这是一种基于分词创建的索引,可以支持复杂的查询
延迟更新索引键 - MyISAM压缩表–表在创建并导入数据之后,不会再尽心修改操作,那么这样的表或许适合采用MyISAM压缩表
- MyISAM性能–该引擎设计简单,数据以紧密格式存储,所以在某些场景下的性能很好
- MySQL内建的其他存储引擎
- Archive存储引擎–①只支持INSERT和SELECT操作,5.1版本之前也不支持索引;②支持行级锁和专用的缓冲区,所以可以实现高并发的插入
- Blackhole引擎–引擎没有实现任何的存储机制,它会丢弃所有插入的数据,不做任何的保存操作,但是服务器会就表的日志,所以可以用于复制数据到备库
- CSV–可以将普通的csv文件作为MySQL表来处理,但是这种表不支持索引
- Federated
- Memory
- Merge–是MyISAM的一个变种。merge表是有多个MyISAM表合并而来的虚拟表
- NDB集群引擎–
- 转换表的引擎
- ALTER TABLE–ALTER TABLE mytable engine = InnoDB;执行需要很长时间
- 导出与导入–
- 创建与查询–综合以上方法,先创建一个新的存储引擎的表,然后利用INSERT…SELECT语法来导出数据:①CREATE TABLE inndb_table LIKE myisam_table; ②ALTER TABLE innodb_table ENGINE=InnoDB;③INSERT INTO innodb_table SELECT * FROM myisam_table;
- MySQL时间线
3.23-2001MySQL诞生、4.0-2003、4.1-2005、5.0-2006、5.1-2008(这是sun收购MySQL AB以后的首个版本)、5.5-2010这是Oracle收购sun之后的首个版本