TmStorage 是一个用 .NET 开发的虚拟文件系统,用来存储流数据。使用扁平结构进行数据存储,通过类型为 GUID 的流 id 来引用数据。
TmStorage 使用一个主文件用来存储所有流数据。主文件被分成多个可变长度的段,每个段只由一个流来占用。每个流由 0 到多个段组成。
每个段包含一个段的元数据,这些元数据存放在段的起始位置,包含如下信息:
段大小 (Int64)
下一个段的位置,如果是最后一个段则为 null(Int64)
元数据的校验和 (Int)
为了防止碎片化严重,段大小固定为 512 字节的整数倍。
使用实例:
Image image = Image.FromFile("c:\\image.png"); Storage storage = new Storage("c:\\images.storage", "c:\\images.storagelog"); Guid streamId = Guid.NewGuid(); storage.StartTransaction(); try{ Stream stream = storage.CreateStream(streamId); image.Save(stream, ImageFormat.Png); stream.Close(); storage.CommitTransaction(); }finally{ storage.RollbackTransaction(); }
实施新存储引擎的最简单方法是,通过拷贝和更改EXAMPLE存储引擎开始。在MySQL 5.1源码树的sql/examples/目录下可找到文件ha_example.cc和ha_example.h。关于如何获得5.1源码树的说明,请参见2.8.3节,“从开发源码树安装”。 复制文件时,将名称从ha_example.cc和ha_example.h更改为与存储引擎相适应的名称,如ha_foo.cc和ha
MySQL常用存储引擎 MySQL常用存储引擎之MyISAM MySQL 5.5 之前版本默认存储引擎,在排序、分组等操作中,当数量超过一定大小之后,由查询优化器建立的临时表。 MyISAM 存储引擎表由 MYD (表数据) 、MYI (表索引) 与 frm (表结构) 组成。 MyISAM 特性 并发性与锁级别 表级锁 表损坏修复 check table tableName repair tab
BLACKHOLE存储引擎就像“黑洞”一样,它接收数据但丢弃它而不是存储它。取回总是返回空集: mysql> CREATE TABLE test(i INT, c CHAR(10)) ENGINE = BLACKHOLE; Query OK, 0 rows affected (0.03 sec) mysql> INSERT INTO test VALUES(1,'record one'),(2,
CSV存储引擎使用逗号分隔值格式的文本文件存储数据。 要允许使用这个存储引擎,当你建立MySQL之时,使用--with-csv-storage-engine选项来configure。 当你创建一个CSV表之时,服务器在数据库目录创建一个表定义文件。文件由表的名字开始,并且由一个.frm的扩展名。存储引擎也创建一个数据文件。它的名字由表的名字开始,并且有一个.CSV的扩展名。数据文件是无格式文本文件
ARCHIVE存储引擎被用来以非常小的覆盖区存储大量无索引数据。 要允许这个存储引擎,在建立MySQL之时使用--with-archive-storage-engine选项来configure。如果这个存储引擎可带这个语句使用,你可以看见: mysql> SHOW VARIABLES LIKE 'have_archive'; 当年创建一个ARCHIVE表,服务器在数据库目录创建一个表定义文件。文件
15.7.1. 安装FEDERATED存储引擎 15.7.2. FEDERATED存储引擎的介绍 15.7.3. 如何使用FEDERATED表 15.7.4. FEDERATED存储引擎的局限性 FEDERATED存储引擎访问在远程数据库的表中的数据,而不是本地的表。 FEDERATED存储引擎仅在-MAX版的MySQL上可用。 要为FEDERATED引擎检查源码,请查看MySQL源码分发版的sq