本文档基于虚谷数据库12.0.0版本,单机部署模式的情况下的使用介绍。
虚谷数据库是一款自主原创、安全可靠、功能强大、性能优越的关系型数据库管理系统,支持SQL(Structured Query Language)标准语法,支持标准化、双机高可用、分布式集群部署,提供国产化、面向多核的高性能和数据安全服务,融合成都虚谷伟业科技有限公司在数据库领域20多年的研发经验沉淀,结合各类关系型数据库的应用场景需求,持续构建竞争力特性。
虚谷数据库采用NEWSQL架构从0开始设计,即一个无状态的SQL引擎与一个通用(与逻辑解耦)的存储引擎加上管理引擎构建的产品。整个产品采用的是单进程多线程模型,所有的数据库任务(计算、存储、管理)可以独占或混合在单个进程中,所以具有从1到N无缝扩展的特性。
虚谷数据库的定位是通用型、透明化、高性能的单机分布式一体化数据库。
系统配置(${XUGU_HOME}/SETUP/xugu.ini):
max_trans_modify = 0; 单个事务最大允许变更行数(0表示不限制)。当批量写入超过其默认值时,可以修改此参数。
data_buff_mem = 5120; 数据缓冲区内存(单位:M)
swap_buff_mem = 256; 交换缓冲区内存(单位:M)
system_sga_mem = 512; 系统全局区内存(单位:M)
数据库启停:
#后台启动
/data/xugu_sp/BIN/xugu_linux_x86_64_XXX_sp -service
#前台启动,随着窗口关闭结束命令
/data/xugu_sp/BIN/xugu_linux_x86_64_XXX_sp -child
#关闭数据库,进入数据库后执行如下命令
shutdown immediate;
#查看数据库进程是否停止
ps -ef | grep xugu
**进入数据库:**数据库默认端口 5138
xgconsole nssl 127.0.0.1 5138 SYSTEM SYSDBA SYSDBA
扩展空间插件:
CREATE EXTENSION spatial;
数据库系统表查询:
CREATE TABLE geom_test(
id int ,
name varchar(255),
geom Geometry(POINT,4326)
)
1、查询表信息
SELECT sch.schema_name,tab.table_name,tab.table_id
FROM SYSDBA.sys_tables tab
LEFT JOIN
SYSDBA.all_schemas sch
ON tab.schema_id = sch.schema_id
WHERE sch.schema_name = 'SYSDBA' AND table_name = 'geom_test'
2、查询表的主键
SELECT cs.define attname
FROM SYSDBA.DBA_CONSTRAINTS cs
LEFT JOIN SYSDBA.sys_tables tab
ON cs.table_id = tab.table_id
LEFT JOIN SYSDBA.all_schemas sch
ON tab.schema_id = sch.schema_id
WHERE sch.schema_name = 'SYSDBA' AND tab.table_name = 'geom_test' AND cs.cons_type = 'P'
3、查询表的索引列
SELECT tab.table_name,sch.schema_name,idx.index_id,idx.index_name,idx.keys,idx.IS_UNIQUE,idx.is_primary,idx.VALID
FROM SYSDBA.dba_indexes idx
LEFT JOIN SYSDBA.sys_tables tab
ON idx.table_id = tab.table_id
LEFT JOIN SYSDBA.all_schemas sch
ON tab.schema_id = sch.schema_id
WHERE sch.schema_name = 'SYSDBA' AND tab.table_name = 'geom_test' AND idx.index_type = 0 AND idx.VALID=1 AND idx.IS_UNIQUE = true
4、查询表的自增序列
SELECT col.col_name,col.type_name,col.def_val
FROM SYSDBA.ALL_COLUMNS col
LEFT JOIN SYSDBA.sys_tables tab
ON col.table_id = tab.table_id
LEFT JOIN SYSDBA.all_schemas sch
ON tab.schema_id = sch.schema_id
WHERE sch.schema_name = 'SYSDBA' AND table_name = 'geom_test' AND col.def_val LIKE '%NEXTVAL%'
5、判断GEOMETRY_COLUMNS是否存在
SELECT count(*)
FROM SYSDBA.sys_views v
LEFT JOIN SYSDBA.all_schemas sch
ON v.schema_id = sch.schema_id
WHERE sch.schema_name = 'SYSDBA' AND v.view_name = 'GEOMETRY_COLUMNS';
6、获取表的空间列
SELECT F_GEOMETRY_COLUMN FROM SYSDBA.GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'SYSDBA' AND F_TABLE_NAME = 'geom_test';
7、获取表的空间列类型
SELECT TYPE FROM SYSDBA.GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'SYSDBA' AND F_TABLE_NAME = 'geom_test';
select st_geometrytype("geom") from SYSDBA.geom_test limit 1
8、查询表的wkid
SELECT SRID FROM SYSDBA.GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'SYSDBA' AND F_TABLE_NAME = 'geom_test';
SELECT ST_SRID(SHAPE) FROM SYSDBA.geom_test LIMIT 1;
9、获取表的空间引用
SELECT SRID,PROJ4TEXT,SRTEXT FROM SYSDBA.SPATIAL_REF_SYS WHERE SRID = 4326;
10、空间函数 (POINT一定要大写)
SELECT st_geomfromtext('POINT (1 1)') FROM dual
SELECT ST_SetSRID(ST_MakePoint(1, 1), 4326) FROM dual
表操作:
1、创建序列
CREATE SEQUENCE IF NOT EXISTS seq_geom_test_id
increment BY 1
start WITH 1
minvalue 1
maxvalue 2147483647
cache 1;
2、赋值序列给到表字段引用
alter table SYSDBA.geom_test alter column id default seq_geom_test_id.nextval
3、列操作
#新增列
ALTER TABLE geom_test ADD COLUMN objectid int NOT NULL PRIMARY KEY;
#删除列
ALTER TABLE geom_test DROP COLUMN objectid;
#修改列名
ALTER TABLE geom_test RENAME id TO keyid;
#修改列字段类型
ALTER TABLE SYSDBA."geom_test" MODIFY COLUMN "name" VARCHAR(200);
4、删除索引(索引要指定所属的table)
DROP INDEX geom_test.index_name