mvccTable

语法

mvccTable(X, [X1], [X2], …..)

mvccTable(capacity:size, colNames, colTypes, [path], [tableName])

参数

对于第一种用法,X, X1, X2 …是向量。

对于第二种用法:

capacity 是正整数,表示表的容量,即建表时系统为该表分配的内存(以记录数为单位)。当记录数超过 capacity 时,系统会自动扩充容量。系统首先会分配当前容量1.2~2倍的内存,然后复制数据到新的内存空间,最后释放原来的内存。对于规模较大的表,扩容时的内存占用会很高。因此,建议创建内存表时预先分配一个合理的容量。

size 是正整数,表示该表新建时的行数。若size=0,创建一个空表。

colNames 是字符串向量,表示列名。

colTypes 是向量,表示列的数据类型。

path 是一个字符串,表示保存表的路径。只能指定磁盘路径,不支持指定为分布式数据库路径。

tableName 是一个字符串,表示保存到磁盘上的表名。

详情

创建一个多版本并发控制的表(mvcc table)。我们可以对该表进行并发读写。多版本并发控制的表适用于频繁读写但很少更新和删除记录的场景。

如果指定了 pathtableName 参数,会把表持久化到硬盘上。通过 loadMvccTable 函数,可以把磁盘上的表加载到内存中。

注:mvcc table 不支持 addColumn、dropColumns!、replaceColumn!、reorderColumns!、upsert!、drop、erase! 函数。

例子

第一种用法:

$ id=`XOM`GS`AAPL
$ x=102.1 33.4 73.6
$ mvccTable(id, x);

id

x

XOM

102.1

GS

33.4

AAPL

73.6

第二种用法:

$ mvccTable(200:10, `name`id`value, [STRING,INT,DOUBLE],"/home/DolphinDB/Data","t1");

name

id

value

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

“/home/DolphinDB/Data“目录下会有一个名为”t1”文件夹、t1.tbl文件和t1.sym文件。如果需要删除磁盘上的表,需要把这三个文件都删除。