PHP可以通过odbc,pdo_odbc和pdo_gbasedbt三种方式连接到GBase 8s数据库,这三种方式均需要通过CSDK客户端工具。
操作系统:CentOS 7.9 x86_64
必要组件:
- unixODBC及unixODBC-devel
- php及扩展,如php-fpm/php-odbc/php-pdo等
- nginx服务
数据库连接工具(CSDK)
- GBase 8s CSDK
配置前提
- GBase 8s数据库服务器正常运行
- GBase 8s客户端连接工具
PHP可以通过odbc,pdo_odbc和pdo_gbasedbt三种方式连接到GBase 8s数据库,这三种方式均需要通过CSDK客户端工具。
操作系统:CentOS 7.9 x86_64
必要组件:
数据库连接工具(CSDK)
配置前提
GBase 8s中有一些特殊的关键字,比如rowid,rownum这样的,可以直接在查询语句中直接使用,表示特定的含义。
这种类型的关键字,在使用到表上时需要特别小心,否则可能得非预想要的结果。
如:
select * from tab1 where default_role like '%N%';
表面上的意思是:查询tab1中default_role字段中包含'N'字符的数据,select * from tab1返回的default_role字段中也有包含'N'的数据。但它却返回了空结果?!为什么呢?
原因就是DEFAULT_ROLE是内置关键字,直接写DEFAULT_ROLE是获取当前用户的默认角色,当前默认角色名并不包含'N',因此该语句应该改成
select * from tab1 where tab1.default_role like '%N%';
也就是说:使用表名/表别名限制定符.字段名称时,SQL才会正确解析为字段名称。这也只是规避方法,更合理的方式是:不使用保留的关键字做表名、字段和别名。
注:对于其关键字,也适合于使用 表名/表别名限制定符.字段名称 的方式。
定点变更算法可以提供优于慢速变更算法的诸多性能优势:
定点变更算法:
1,增加了表的可用性
ALTER TABLE操作使用定点变更算法时,其他用户稍后可以访问该表,因为数据库服务器只在更新表定义和重建包含更改列的索引时才锁定该表。
对于要求7 * 24不停运行的应用程序系统,这种对表可用性的增强可以提高系统吞吐量。
使用定点变更算法时,数据库服务器锁定表的时间比慢速变更算法要短,因为数据库服务器:
ALTER TABLE 语句更改表的属性但不影响数据时,数据库服务器将使用快速变更算法.
使用ALTER TABLE 语句执行以下操作时数据库服务器使用快速变更算法:
使用快速变更算法时,数据库服务器对表的锁定只保持很短的时间。在某些情况下,数据库服务器锁定系统目录表只是为了更改属性。无论哪种情况,无法查询此表的时间均很短。
数据库服务器使用慢速变更算法来处理ALTER TABLE语句时,其他用户可能会长时间无法使用该表。
基于以下原因,慢速变更时表可能不可用:
由于数据库服务器复制表数据以将该表转换为新定义,因此慢速变更操作需要的空间至少为原始表大小的两倍与日志空间之和。
最后更新:2024-04-07
版本号使用:
v8.8_3503x1
v8.8_3331x12
Dockerfile
FROM scratch
ADD v8.8_3503x1_x64.tar.gz /
EXPOSE 9088
CMD /start.sh
注:不同数据库版本的ADD 文件名称不一样。
内连接(INNER JOIN)是最常用的连接类型之一,它根据两个或多个表之间的共同列值来联接这些表。在内连接中,只有在连接的表之间有匹配的值时,才会返回结果。
内加接语法示例:
-- 基中 INNER 关键字 可省略
select *
from tableft INNER JOIN tabright
ON tableft.col1 = tabright.col1;
获取实例初始化时间,通过rootdbs的创建时间来确定
-- 获取实例初始化时间(rootdbs创建时间)
SELECT dbinfo('utc_to_datetime',d.created) AS created
FROM sysmaster:sysdbstab d
WHERE dbsnum = 1;
GBase 8s数据库的交互式工具无历史执行语句,但我们知道Linux操作系统本身自带历史执行语句功能(上下翻页和history),我们可以使用调用shell脚本的方式,使用dbaccess加上历史执行语句功能:
脚本内容如下:放置于$GBASEDBTDIR/bin目录下,并加上执行权限
Kettle默认只支持使用mysql/oracle/sqlserver等数据库为资源库,若要使用GBase 8s为资源库,需要从其它资源库迁移相应的结构及数据。
以下为从mysql资源库迁移为GBase 8s资源库的表结构说明,供参考:
序号 | 字段名称 | 字符类型 | 允许空 | 缺省值 | 字段描述 |
---|---|---|---|---|---|
1 | id_cluster | INT8 | 否 | 集群ID | |
2 | name | VARCHAR(255) | 是 | 集群名称 | |
3 | base_port | VARCHAR(255) | 是 | 端口 | |
4 | sockets_buffer_size | VARCHAR(255) | 是 | 缓冲大小 | |
5 | sockets_flush_interval | VARCHAR(255) | 是 | 刷新间隔 | |
6 | sockets_compressed | SMALLINT | 是 | 是否压缩 | |
7 | dynamic_cluster | SMALLINT | 是 | 是否动态集群 |