dolphindb dba一些常用的维护sql

本文详细介绍了DolphinDB数据库的各种操作,包括登录、查看数据库、创建和删除数据库、表操作、权限管理、备份与恢复、资源监控等。内容涵盖分布式和本地数据库的管理,以及数据的读写、查询和删除。此外,还提到了用户管理和系统性能监控等功能。
摘要由CSDN通过智能技术生成

login(‘admin’, ‘123456’)
–登录dolphindb

getHomeDir()
查看本地节点的主目录,通俗理解就是我们说的安装目录

version()
查看数据库版本

创建数据库
db = database(“dfs://testdb”,RANGE,0 5 10)
–新建分布式数据库testdb,按范围分区,有两个分区:[0,5)和(5,10]
–新数据库创建后在服务器上看不到新数据库的目录,只有插入第一条数据后才能看到目录

db=database("/home/dolphindb/Data/datanode1/testdb2");
–新建非分布式数据库testdb2,数据库目录是/home/dolphindb/Data/datanode1,创建好后,可以立刻在服务器上看到testdb2的目录
–如果不加目录,则默认在软件安装目录

dropDatabase(“dfs://testdb”)
–删除分布式数据库testdb,这个函数也可以删除本地数据库
–多节点时,这个函数只能用于数据节点,不能用于控制节点,否则有报错The current node isn’t a data node and can’t run function [dropDatabase] to manipulate a dfs database.

创建表
db=database("/home/dolphindb/Data/datanode1/testdb2");
t=table(take(1…10,100) as id, rand(10,100) as x, rand(10.0,100) as y);
saveTable(db, t, `t1);
select * from t
–连接本地数据库testdb2,创建表t

db=database(“dfs://testdb3”)
t1=table(take(1…10,10) as id, rand(10,100) as x, rand(10.0,10) as y);
saveTable(db, t1);
–连接分布式数据库,创建表t1并插入数据出现报错,saveTable方式只能用于本地库,不适用于分布式数据库

db = database(“dfs://testdb”)
t=table(take(1, 86400) as id, 2020.01.01T00:00:00 + 0…86399 as timestamp, rand(1…100, 86400) as val)
dt = db.createTable(t, “dt”, {timestamp:“delta”, val:“delta”})
dt.append!(t)
select * from t
–连接分布式数据库dfs://testdb,创建表t,此时在服务器上看不到新数据库的目录,插入数据,可以在服务器上看到testdb目录,createtable才能用于分布式数据库
–数据库目录在参数volumes的目录

db = database(“dfs://testdb”)
t=table(take(1, 8) as id, 2020.01.01T00:00:00 + 0…7 as timestamp, rand(1…8, 8) as val)
pt =db.createPartitionedTable(t, “pt”, “id”)
pt.append!(t)
select * from pt
–连接分布式数据库dfs://testdb,创建分布式表pt,分布式表可以创建于本地库也可以创建于分布式数据库

db=database(“dfs://testdb”)
dropTable(db,“dt”);
–删除dfs://testdb下面的dt表
–不能直接dropTable(“dfs://testdb”,“dt”)这样删除,第一个参数必须是dbHandle数据库句柄

getAllDBs()
–当前节点上的分布式数据库

getClusterDFSDatabases()
–返回集群中所有的分布式数据库,单节点时,结果和getAllDBs()一致
–本地库通常用于学习研究,现在还没有提供查找的函数。

getClusterDFSTables()
–查询实例中所有分布式数据库的分布式表

getDFSTablesByDatabase(directory)
getDFSTablesByDatabase(“dfs://testdb4”)
–查询某个分布式数据库中的表

getTables(dbHandle)
db = database(“dfs://testdb4”)
getTables(db)
–查询某个数据库中所有的表,此数据库包括分布式数据库和本地数据库

getTabletsMeta("/testdb/*", “pt1”,true,-1)
select * from getTabletsMeta("/testdb/%",true,-1) where tableName=‘pt1’
查询testdb下pt1表各个分区占用的磁盘空间大小,单位是字节

select sum(diskUsage/1024/1024) as diskMb from getTabletsMeta("/testdb/%",true,-1) group by tableName
查询testdb下每一张表占用的磁盘空间大小

select sum(diskUsage/1024/1024) as diskMb from getTabletsMeta("/testdb/%",true,-1)
查询testdb下所有表占用的磁盘空间大小总量

监控正在执行或者队列中的作业和任务的数量。
getJobStat()

查询当前节点包含的所有会话信息
getSessionMemoryStat()
select * from getSessionMemoryStat()

查询一个小时内没有活动的会话
select * from getSessionMemoryStat() where now() - localtime(lastActiveTime) > 3600000

关闭某个会话
closeSessions(sessionId)

关闭任意一个会话
closeSessions(getSessionMemoryStat().sessionId[1]);

createUser(“u1”, “123456”)
–创建用户u1

createGroup(“g1”, [“u1”,“u2”,“u3”])
–创建用户组g1,保护u1、u2、u3三个用户

grant(“g1”, TABLE_READ, “dfs://db1/pt1”)
–授权用户或用户组g1可以访问dfs://db1/pt1 表中的数据

grant([“u1”,“u2”,“u3”], TABLE_READ, “dfs://db1/pt1”)
报错User/Group [[“u1”,“u2”,“u3”]] does not exist.–一个语句不能同时对多个用户授权
grant(“g1”, [TABLE_READ,TABLE_WRITE], [“dfs://testdb/dt1”])
报错A scalar object is expected. But the actual object is a vector.一个语句不能授权多个权限

getUserList().sort();
–除管理员之外的所有用户名称,顺序排序,createUser使用isAdmin=true创建的用户也会列出来

getGroupList().sort();
–返回所有组

getUserAccess([userIds])
–用户拥有的权限。当没有指定userId时,返回管理员的权限表
–getUserAccess([‘lukes’,‘tony’])查询lukes和tony两个用户的权限

getGroupAccess(groupIds)
–返回组的权限

deleteUser(“u1”)
–删除用户u1

getUsersByGroupId(“g1”)
–查询用户组g1下有哪些用户

deleteGroup(‘groupName1’)
–删除用户组groupName1,隶属于groupName1下面的用户不会被删除

addGroupMember(‘u4’,‘g1’)
–添加某个用户到用户组,对u4添加到g1

dolphindb里需要先加载再访问数据
dt = loadTable(“dfs://testdb4”,“pt9”)
select * from dt where date>2017.08.10
可以简写成如下,但是createTable()创建的不能这样,见备份恢复本地表
select * from loadTable(“dfs://testdb4”,“pt9”) where date>2017.08.10

getConsoleJobs()
–查询交互式作业(同步作业)信息

cancelConsoleJob(rootJobId)
–取消某个交互式作业(同步作业)

getRecentJobs(n)
–查询最近N个批处理作业状态

cancelJob(jobId)
–取消某个批处理作业

getScheduledJobs([jobIdPattern])
–查询某个定时作业,如果jobIdPattern没有指定,返回所有已有的定时作业。

deleteScheduledJob(jobId)
–删除定时作业

getClusterPerf()
–查询服务器整体内存使用情况

getSessionMemoryStat()
–查询哪些会话哪些用户消耗了内存

getPerf()
–查询性能监控度量值

table(1…5 as id, 6…10 as v)
–创建一个内存数据表

查看pt9表的备份信息
getBackupList("/home/dolphindb/dolphindb/backup",“dfs://testdb4”,“pt9”)

查看pt9表的分区/20170807/0_50的备份信息,会返回分区的chunkID号
getBackupMeta("/home/dolphindb/dolphindb/backup/diff2",“dfs://testdb4”, “/20170807/0_50”,“pt9”);

pt9是一张分区表,按日期分区
select count(*) from loadTable(“dfs://testdb4”,“pt9”) where date=2017.08.07

查询表t1对应的物理路径
select * from pnodeRun(getAllChunks) where dfsPath like ‘%t1.tbl%’

查询数据库db1下面的分区对应的物理路径
select * from pnodeRun(getAllChunks) where path like ‘%db1%’

删除分区
db = database(“dfs://testdb4”)
dropPartition(db,"/20170807/0_50");
把testdb4数据库下面的所有表的/20170807/0_50分区都删除了实际存放在磁盘上的分区目录也被删除了

查询某个分区被多少张表使用了
目前没有直接的查看方法,可以通过进入linux操作系统分区目录的情况下使用ll命令来大概获取有哪些表吧

查看表结构
schema(table_name)

删除testdb分布式数据库
dropDatabase(“dfs://testdb”)

查询所有的函数视图,即addFunctionView创建的函数视图
getFunctionViews()

mkdir("/home/dolphindb/dolphindb/backup/" + datetimeFormat(today(), “yyyyMMdd”))
创建当天日期的文件目录

shell(’/dir/linuxshell.sh’)
调用linux shell

修改用户admin的密码
resetPwd(“admin”, “XX”);

Dolphindb数据库的重启方法
1、关闭dolphindb进程
ps -ef |grep dolphindb |grep -v grep|awk ‘{print $2}’ | xargs kill -9

2、进入dolphindb安装目录,依次启动代理节点、控制节点、
2.1、启动代理节点
cd /DolphinDB/server
./startAgent.sh

2.2、启动控制节点
cd /DolphinDB/server
./startController.sh

2.3、启动数据节点
两种方法
方法1、登陆GUI,连接控制节点IP:PORT,执行startDataNode([“DFS_NODE1”, “DFS_NODE2”,“DFS_NODE3”])
方法2、使用Chrome与Firefox的浏览器打开控制节点IP:PORT,在web页面启动各个数据节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值