1.5. MySQL存储引擎本节主要针对MySQL的存储引擎做一个大致的介绍。在这一节,我们不会太深入细节,因为我们将在整本书中来讨论存储引擎和它们各自的一些行为。但是......
MySQL将内存引擎作为处理查询时的中间结果的内部临时数据库来使用。如果中间结果太大或者有TEXT和BLOB列的话,MySQL会把内存表转换为MyISAM表。我们将在后面章节中详细讨论这个问题。
人们经常把内存表和临时表相混淆。事实上临时表是用CREATE TEMPORARY TABLE命令来他创建的。一个临时表可以使用任何存储引擎;它与使用内存引擎的表不是一回事。临时表仅对于单个的连接是可见的,当连接关闭时这个临时表就会被销毁。
1.5.5. Archive存储引擎
Archive引擎只支持INSERT和SELECT语句,并且它不支持索引。它比MyISAM使用更少的磁盘IO,因此它会在写操作之前将数据缓存并利用zlib来压缩。而SELECT查询操作则需要一个全表扫描。因此Archive表是日志和数据采集的理想选择,在这些应用中,一般分析是需要扫描整张表或者需要在一个备份主机上进行快速的INSERT操作。备份从机上可以为相同的表选用一个不同的存储引擎,这意味着从机上的表可以有索引,以达到快速分析的目的。
Archive引擎支持行级别的锁以及一个特殊的缓冲系统以期达到高并发的写操作。它在查询时会将整个表扫描一次。它同时也会将批量写操作屏蔽直到全部的写操作完成。这些特性模拟了事务和MVCC行为的一些方面,但是Archive引擎并不是一个事务型引擎。它只是一个优化了插入操作以及压缩了数据的引擎。
1.5.6. CSV存储引擎
CSV引擎可以将以逗号分隔的CSV文件当作数据表来处理,但是它不支持索引。这个引擎允许你在服务器运行的时候将数据文件拷贝进数据库或者从数据库里拷贝出去。如果你从一个表单中导出了CSV文件并且将它保存到MySQL服务器的数据目的,服务器可以立即读取到它。与此相似的,如果你将数据写入到一个CSV表中,一个外部程序也可以立即读到它。CSV表作为数据格式转换以及特定的日志极为有用。
1.5.7. Federated存储引擎
Federated引擎并不在本地存储数据。每个Federated表都引用一个远程的MySQL上的表,因此它实际将所有的操作转交给远程MySQL来完成。它有时会被用来完成一些类似于hack的工作,比如用来进行复制。
这个引擎目前有许多很怪异的地方,同时也有很多的限制。因为Federated引擎的工作方式,我们可以想像,如果是需要根据主键来获取一条记录或者将一个记录插入到一个远程服务器上,这时Federated引擎将会很有用。它对于聚合查询、连接以及其他的一些基本操作效果并不是很好。
6/14 首页 上一页 4 5 6 7 8 9 下一页 尾页 |