GBase 8s数据库中,两个日期时间的值相减,得到的是interval类型的值(interval day to second),而oracle中直接就是数值了。我们可以通过自定义函数的方式,把interval类型转换成数值型(decimal(20,8))。
TPC-H对GBase 8s数据库基础能力测试
什么是 TPC-H 测试
1、 TPC- H 是针对数据库决策支持能力的测试基准,主要是评价服务器数据库的分析处理能力。测试数据库复杂查询的响应时间,以每小时执行的查询数作为度量指标。
2、 TPC-H 基准模型中定义了一个数据库模型,容量可以在 1GB~10000GB 的 8 个级别中选择。
3、 数据库中共有 8 张表,支持多用户并发执行复杂的动态查询,同时有并发执行表修改操作
4、 TPC-H 测试围绕 22 个 SELECT 语句展开,还有 2 条带有 insert 和 delete 程序段的更新流语句
5、 TPC-H 测试分解为 3 个子测试:数据装载测试、Power 测试和 Throughput 测试
GBase 8s常见锁错误原因及处理办法
-243 Could not position within a table table-name.
错误原因:不能在表的数据行上加锁,该行数据已被锁
示例:
session1
dbaccess testdb -
drop table if exists t;
create table t(col1 int,col2 char(100));
insert into t select tabid,tabname from systables;
begin;
delete from t where col1=1;
GBase 8s自定义使用hex或者unhex函数
从mysql迁移到GBase 8s数据库时,原有hex(有同名函数,但用法不同)、unhex函数在GBase 8s中不可用,因此需要自己创建相应的函数,可以使用C或者JAVA创建自定义例程,也可以使用存储过程。以下以存储过程方式创建。
hexstr函数实现的功能是:将文本转换成十六进制字符串显示。
unhex函数实现的功能是:将十六进制字符串转换成对应的ASCII可视文本显示。
Linux下C++通过SOCI连接到GBase 8s数据库
操作系统:CentOS 7.8 64-bit
软件需求:
SOCI 4.0.1
GBase 8s CSDK
1,安装CSDK
手工安装CSDK,或者下载免安装版本的CSDK
下载地址:
https://gbasedbt.com/odbc/GBase8s_3.0-Linux64-ODBC-Driver.tar.gz
Windows下Python3通过DbtPy连接到GBase 8s数据库
示例使用的操作系统:Win 7 64bit
软件需求:Python 3.7.9
1,安装CSDK,设置环境变量
可从以下地址下载:
免安装CSDK版本。
解压,生成的gbase8s-odbc-driver放置于D:\目录下。
在我的电脑->系统属性->高级->环境变量 中,增加环境变量GBASEDBTDIR 指向D:\gbase8s-odbc-driver,Path中增加%GBASEDBTDIR%\bin;
Linux下Python3通过DbtPy连接到GBase 8s数据库
操作系统:CentOS 7.8 64-bit
软件需求:
Python 3.6.8 及Python-devel 3.6.8
有互联网连接的情况下,可以直接安装DbtPy (仅限Linux x64和Win x64)
1,直接pip3安装DbtPy,将自动安装最新的DbtPy
[root@a02 ~]# pip3 install DbtPy
Collecting DbtPy
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/1f/45/22d842ffe40fbcb58878b891ba8f4e319a3585afd0f09ac13fd3d51b0a9b/DbtPy-3.0.5.tar.gz (165kB)
100% |████████████████████████████████| 174kB 13.0MB/s
# 注:对于Linux x64和Win x64,这步可以需要些时间下载对应的csdk驱动。
Installing collected packages: DbtPy
Running setup.py install for DbtPy ... done
Successfully installed DbtPy-3.0.5
GBase 8s数据库SQL对象中关键字使用
数据库开发人员在使用SQL的时候,不可避免的会碰到类似以下情况。比如:使用user作为用户名的字段名称,使用timestamp作为时间戳的字段名称。然而,大多数数据库均可能把user,timestamp等作为了保留的关键字。这时如果开发人员设计了user关键字为表字段,在SQL操作时,可能就会碰到些问题。
比如以下示例:
create table tab2(id serial,user varchar(60), timestamp timestamp);
--插入记录
insert into tab2 values(0,'test001',current year to second);
GBase 8s存储过程中获取当前时间
GBase 8s数据库中获取当前时间,可以使用current year to second这样方式。
但在存储过程中,如果我们想要获取某一段语句的执行时间长度,需要使用两个变量获取当时时间,如下:
drop procedure if exists proc_datetime;
create procedure proc_datetime() returns varchar(255);
define dt1 datetime year to second;
define dt2 datetime year to second;
let dt1 = current year to second;
system "sleep 5";
let dt2 = current year to second;
return "dt1: " || dt1 || " dt2: " || dt2;
end procedure;
GBase 8s数据库中的二进制、八进制、十进制、十六进制相互转换函数
用户可能会用到二进制、八进制、十进制、十六进制之间的相互转换。
注:支持0至bigint(9223372036854775807)的间的进制转换