
美河学习在线 www.eimhe.com 收集分享
默认的存储引擎。InnoDB 还引入了行级锁定和外键约束,在以下场合下,使用 InnoDB 是最理想的
选择:(重点)
1.更新密集的表。InnoDB 存储引擎特别适合处理多重并发的更新请求。
2.事务。InnoDB 存储引擎是支持事务的标准 MySQL 存储引擎。
3.自动灾难恢复。与其它存储引擎不同,InnoDB 表能够自动从灾难中恢复。
4.外键约束。MySQL 支持外键的存储引擎只有 InnoDB。
5.支持自动增加列 AUTO_INCREMENT 属性。
一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB 是不错的选择。
(3)MEMORY
使用 MySQL Memory 存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质
是系统内存。虽然在内存中存储表数据确实会提供很高的性能,但当 mysqld 守护进程崩溃时,所有
的 Memory 数据都会丢失。获得速度的同时也带来了一些缺陷。它要求存储在 Memory 数据表里的
数据使用的是长度不变的格式,这意味着不能使用 BLOB 和 TEXT 这样的长度可变的数据类型,
VARCHAR 是一种长度可变的类型,但因为它在 MySQL 内部当做长度固定不变的 CHAR 类型,所
以可以使用。
一般在以下几种情况下使用 Memory 存储引擎:
目标数据较小,而且被非常频繁地访问。在内存中存放数据,所以会造成内存的使用,可以通过参数
max_heap_table_size 控制 Memory 表的大小,设置此参数,就可以限制 Memory 表的最大大小。
如果数据是临时的,而且要求必须立即可用,那么就可以存放在内存表中。
存储在 Memory 表中的数据如果突然丢失,不会对应用服务产生实质的负面影响。
Memory 同时支持散列索引和 B 树索引。B 树索引的优于散列索引的是,可以使用部分查询和通
配查询,也可以使用<、>和>=等操作符方便数据挖掘。散列索引进行“相等比较”非常快,但是对“范
围比较”的速度就慢多了,因此散列索引值适合使用在=和<>的操作符中,不适合在<或>操作符中,
也同样不适合用在 order by 子句中。
(4)MERGE
MERGE 存储引擎是一组 MyISAM 表的组合,这些 MyISAM 表结构必须完全相同,尽管其使用
不如其它引擎突出,但是在某些情况下非常有用。说白了,Merge 表就是几个相同 MyISAM 表的聚
合器;
Merge 表中并没有数据,对 Merge 类型的表可以进行查询、更新、删除操作,这些操作实际上
是对内部的 MyISAM 表进行操作。Merge 存储引擎的使用场景。
对于服务器日志这种信息,一般常用的存储策略是将数据分成很多表,每个名称与特定的时间端
相关。例如:可以用 12 个相同的表来存储服务器日志数据,每个表用对应各个月份的名字来命名。
当有必要基于所有 12 个日志表的数据来生成报表,这意味着需要编写并更新多表查询,以反映这些
表中的信息。与其编写这些可能出现错误的查询,不如将这些表合并起来使用一条查询,之后再删除
Merge 表,而不影响原来的数据,删除 Merge 表只是删除 Merge 表的定义,对内部的表没有任何影
响。
(5)ARCHIVE
Archive 是归档的意思,在归档之后很多的高级功能就不再支持了,仅仅支持最基本的插入和查
询两种功能。在 MySQL 5.5 版以前,Archive 是不支持索引,但是在 MySQL 5.5 以后的版本中就开
始支持索引了。
Archive 拥有很好的压缩机制,它使用 zlib 压缩库,在记录被请求时会实时压缩,所以它经常被
评论