GBase 8s 数据库中count(字段) ,count(主键) ,count(1)和count(*)的区别

首先要弄清楚 count() 的语义。count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1,否则不加。最后返回累计值。
所以,count(*)、count(1)和count(主键) 都表示返回满足条件的结果集的总行数;而 count(字段),则表示返回满足条件的数据行里面,参数 "字段" 不为 NULL 的总个数。

以测试表为例,表内加载了10万行记录,其中允许null值的字段name存在3个null值;

create table tabcount 
  (
    id integer,
    name varchar(40),
    age integer not null ,
    primary key (id) 
  );

阅读全文»

统信UOS20(1021a)安装GBase 8s数据库问题记录

统信UOS20操作系统(1021a) AMD64 版本安装GBase 8s V8.8 3.0.0_1版数据库问题记录如下:

1, libjvm.so preloadLibrary(/tmp/install.dir.33990/Linux/resource/jre/jre/lib/amd64/libjava.so): libnsl.so.1: 无法打开共享对象文件: 没有那个文件或目录

解决方法及步骤:
安装libnsl

yum install libnsl -y

2, One or more prerequisite system libraries are not installed on your computer. Install libncurses.so.5 and then restart the installation program.

解决方法及步骤:
1) 安装ncurses-devel

yum install ncurses-devel

2) 在/usr/lib64目录下创建链接文件,执行

cd /usr/lib64
ln -s libncurses.so.6.1 libncurses.so.5
ln -s libtinfo.so.6.1 libtinfo.so.5

GBase 8s 使用sqltrace跟踪sql性能

SQLTrace用于跟踪执行sql的性能,可用于定位性能较差的sql,从而进行优化。

Example
打开sqltrace跟踪15000条sql,所需内存:15000*4k=60MB

dbaccess sysadmin - <<!
EXECUTE FUNCTION task("set sql tracing on","15000","4","high","global");
!

查看执行耗时较长sql:

dbaccess sysmaster -<<!
unload to sql.unl 
select sql_maxtime,sql_avgtime,sql_statement 
from syssqltrace order by sql_maxtime desc;
!

查看当前路径下生成的sql.unl文件


阅读全文»

GBase 8s 设置数据文件自动扩展

根据onstat -d 输出查看需要扩展的数据文件号。

示例:chunk号为8的数据文件打开自动扩展

dbaccess sysadmin -<<!
EXECUTE FUNCTION task ("modify chunk extendable on", 8);
!

示例:chunk号为8的数据文件关闭自动扩展

dbaccess sysadmin -<<!
EXECUTE FUNCTION task ("modify chunk extendable off", 8);
!

GBase 8s 使用dblink访问远端数据库实例

使用场景:

gbase01实例需要访问gbase02实例中的数据。
sql语法:

select * from dbname@gbase02:tabname;

方法一、配置信任

1、配置目标服务器/etc/hosts.equiv信任
如node1(192.168.17.101)上的数据库实例(gbase01) 访问node2(192.168.17.102)上的数据库实例(gbase02)

2、在node1数据库实例gbase01的sqlhosts文件中增加gbase02的实例信息:

echo "gbase02         onsoctcp        192.168.17.102      9088">>$GBASEDBTSQLHOSTS


阅读全文»

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可视文本显示。



阅读全文»