如何在节点启动时自动加载mvcc表

启动服务的时候自动挂载mvccTable 只需指定表的路径即可,自动加载系统所有的mvcc表,这个有办法能做到吗?

假设用下面代码创建3张mvcc表,

n=5
syms=`IBM`C`MS`MSFT`JPM`ORCL`FB`GE
timestamp=09:30:00+rand(18000,n)
sym=rand(syms,n)
qty=100*(1+rand(100,n))
price=5.0+rand(100.0,n)
temp=table(timestamp,sym,qty,price)
t1= mvccTable(1:0,`timestamp`sym`qty`price,[TIMESTAMP,SYMBOL,INT,DOUBLE],"/home/xjqian/mvcctables","t1")
t1.append!(temp);
t2= mvccTable(1:0,`timestamp`sym`qty`price,[TIMESTAMP,SYMBOL,INT,DOUBLE],"/home/xjqian/mvcctables","t2")
t2.append!(temp);
t3= mvccTable(1:0,`timestamp`sym`qty`price,[TIMESTAMP,SYMBOL,INT,DOUBLE],"/home/xjqian/mvcctables","t3")
t3.append!(temp);

创建后,cd 到/home/xjqian/mvcctables,tree命令显示如下:

[xjqian@cnserver5 mvcctables]$ tree
.
├── t1
│   ├── log
│   │   └── log.bin
│   ├── price.col
│   ├── qty.col
│   ├── sym.col
│   └── timestamp.col
├── t1.sym
├── t1.tbl
├── t2
│   ├── log
│   │   └── log.bin
│   ├── price.col
│   ├── qty.col
│   ├── sym.col
│   └── timestamp.col
├── t2.sym
├── t2.tbl
├── t3
│   ├── log
│   │   └── log.bin
│   ├── price.col
│   ├── qty.col
│   ├── sym.col
│   └── timestamp.col
├── t3.sym
└── t3.tbl

6 directories, 21 files

请先 登录 后评论

1 个回答

wale

用files函数得到表名,并share:

login(`admin,`123456)
tables=select * from files("/home/xjqian/mvcctables") where isDir=true
for (tableName in tables.filename){
       share( loadMvccTable("/home/xjqian/mvcctables",tableName) , "share_"+tableName)
}

把上述代码加入startup.dos,在系统启动时执行即可。注意:启动脚本有关配置和脚本编写事项请参阅启动脚本教程(https://gitee.com/dolphindb/Tutorials_CN/blob/master/Startup.md)。

节点启动后,用objs(true)可查到共享表已存在:

select * from objs(true) where name like "share_%"

执行上述代码结果如下:

name	type	form	rows	columns	bytes	shared	extra
share_t1	MVCC	TABLE	5	4	368	true	
share_t2	MVCC	TABLE	5	4	368	true	
share_t3	MVCC	TABLE	5	4	368	true	

请先 登录 后评论