ALTER TABLE 之 定点变更(in-place alter)

定点变更算法可以提供优于慢速变更算法的诸多性能优势:
定点变更算法:
1,增加了表的可用性
ALTER TABLE操作使用定点变更算法时,其他用户稍后可以访问该表,因为数据库服务器只在更新表定义和重建包含更改列的索引时才锁定该表。

对于要求7 * 24不停运行的应用程序系统,这种对表可用性的增强可以提高系统吞吐量。

使用定点变更算法时,数据库服务器锁定表的时间比慢速变更算法要短,因为数据库服务器:

  • 将表转换成新的定义肘,不必为表制作副本
  • 在ALERR TABLE 操作期间,不转换数据行
  • 当您以后更新或插入行时,在变更操作之后使用最新定义来定点变更物理列。数据库服务器对驻留在每页上的行进行转换。

阅读全文»

ALTER TABLE 之 快速变更(Fast alter)

ALTER TABLE 语句更改表的属性但不影响数据时,数据库服务器将使用快速变更算法.
使用ALTER TABLE 语句执行以下操作时数据库服务器使用快速变更算法:

  • 更改下一扩展数据块大小
  • 添加或删除约束
  • 更改表的锁定方式
  • 不修改列类型而更改唯一索引属性

使用快速变更算法时,数据库服务器对表的锁定只保持很短的时间。在某些情况下,数据库服务器锁定系统目录表只是为了更改属性。无论哪种情况,无法查询此表的时间均很短。

ALTER TABLE 之 慢速变更(slow alter)

数据库服务器使用慢速变更算法来处理ALTER TABLE语句时,其他用户可能会长时间无法使用该表。
基于以下原因,慢速变更时表可能不可用:

  • 在ALTER TABLE 操作期间以互斥方式锁定了表
  • 为了将表转换成新的定义而为表制作了副本
  • 在ALTER TABLE 操作期间转换数据行
  • 可以将ALERR TABLE 语句视为长事务,如果超过高水位线LTXHWM阀值时,将出现长事务回滚。

由于数据库服务器复制表数据以将该表转换为新定义,因此慢速变更操作需要的空间至少为原始表大小的两倍与日志空间之和。

阅读全文»

GBase 8s内连接和外连接

GBase 8s内连接和外连接

内连接(INNER JOIN)

内连接(INNER JOIN)是最常用的连接类型之一,它根据两个或多个表之间的共同列值来联接这些表。在内连接中,只有在连接的表之间有匹配的值时,才会返回结果。
内加接语法示例:

-- 基中 INNER 关键字 可省略
select * 
from tableft INNER JOIN tabright 
  ON tableft.col1 = tabright.col1;

阅读全文»

Kettle 8.3 资源库(GBase 8s V8.8)表结构

Kettle默认只支持使用mysql/oracle/sqlserver等数据库为资源库,若要使用GBase 8s为资源库,需要从其它资源库迁移相应的结构及数据。
以下为从mysql资源库迁移为GBase 8s资源库的表结构说明,供参考:

r_cluster(集群信息)

序号字段名称字符类型允许空缺省值字段描述
1id_clusterINT8 集群ID
2nameVARCHAR(255) 集群名称
3base_portVARCHAR(255) 端口
4sockets_buffer_sizeVARCHAR(255) 缓冲大小
5sockets_flush_intervalVARCHAR(255) 刷新间隔
6sockets_compressedSMALLINT 是否压缩
7dynamic_clusterSMALLINT 是否动态集群

阅读全文»