MYSQL:存储引擎类型 : — MyISAM、 InnoDB、 BDB 、Memory 、Archive 、Merge 、Federated、 Cluster/NDB 、CSV、 BlackHole 和 各种社区引擎等
MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一
InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。 Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。
ARCHIVE:仅仅支持最基本的插入和查询两种功能。 在MySQL 5.5版以前,Archive是不支持索引,但是在MySQL 5.5以后的版本中就开始支持索引了。Archive拥有很好的压缩机制,它使用zlib压缩库,在记录被请求时会实时压缩,所以它经常被用来当做仓库使用
Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。
Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。
Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件)。
Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。
粗略介绍MyISAM、InnoDB、Memory、Archive。4种存储引擎。
MySIAM:提供索引,包括全文索引。数据压缩,空间函数等... 不支持事务、行级锁(可以使用表级锁)。如果数据崩溃了无法恢复。 MySIAM表可以包括动态或者静态(固定长度)行。 MYSQL会根据定义来选中使用行的格式。---长度可以通过修改配置:MAX_ROWS 和AVG_ROW_LENGTH选项的值改变。 注意:修改这2个值,会导致重设整张表的,以及索引。
加锁与并发: 只能针对整张表进行加锁。读取的时候需要对读取的表进行加共享锁,写入的时候则需要对表加排他锁。在查询读取的时候,往表写入一条数据:称为并发写入 MySIAM: 可以手动或者自动执行修复,但是修复不同与事务恢复,以及崩溃恢复。而且修复的过程中可能会导致数据丢失。可以通过,CHECK TABLE mytable检查错误,REPAIR TABLE mytable修复表。 索引: 支持文本TEXT类型的字段前500字符创建索引。同时支持全文索引。 可以指定延迟更新索引。延迟更新,会将索引数据写入内存的缓存区。只有在对表进行清理以及关闭表的时候才对将对应的索引数据写入磁盘。这种方式可以提高写入的性能,但在崩溃的时候会造成索引损坏。需要进行修复操作
INNODB:索引:与MySIAM区别在于不支持,全文索引。支持事务处理。 InnoDB在执行 select count(*) where...的时候,扫描整表。与MySIAM不同。对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。 AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数 器的计数器,它被用在为该列赋新值。自动增长计数 器仅被存储在主内存中,而不是存在磁盘上