返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

SQLConnect
功能描述
在驱动程序和数据源之间建立连接。
连接上数据源之后,
可以通过连接句柄访问到所有
有关连接数据源的信息,包括程序运行状态、事务处理状态和错误信息。
原型
SQLRETURN
SQLConnect(SQLHDBC ConnectionHandle,
SQLCHAR
*ServerName,
SQLSMALLINT NameLength1,
SQLCHAR
*UserName,
SQLSMALLINT NameLength2,
SQLCHAR
*Authentication,
SQLSMALLINT NameLength3);

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
256
参数
表8-20 SQLConnect 参数
关键字
参数说明
ConnectionHandle
连接句柄,通过SQLAllocHandle 获得。
ServerName
要连接数据源的名称。
NameLength1
ServerName 的长度。
UserName
数据源中数据库用户名。
NameLength2
UserName 的长度。
Authentication
数据源中数据库用户密码。
NameLength3
Authentication 的长度。
返回值

SQL_SUCCESS:表示调用正确。

SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。

SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。

SQL_INVALID_HANDLE:表示调用无效句柄。其他API 的返回值同理。
注意事项
当调用SQLConnect 函数返回SQL_ERROR 或SQL_SUCCESS_WITH_INFO 时,通过
调用SQLGetDiagRec 函数,并将HandleType 和Handle 参数设置为SQL_HANDLE_DBC 和
ConnectionHandle,可得到一个相关的SQLSTATE 值,通过SQLSTATE 值可以查出调用此
函数的具体信息。
示例
参见8.2.23 示例。

背景信息
GBase 8c 部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。GBase 8c
提供了gs_basebackup 工具做基础的物理备份。
gs_basebackup 的实现目标是对服务器数据库
文件的二进制进行拷贝,其实现原理使用了复制协议。远程执行gs_basebackup 时,需要使
用系统管理员账户。gs_basebackup 当前支持热备份模式和压缩格式备份模式。

gs_basebackup 仅支持主机和备机的全量备份,不支持增量。

gs_basebackup 当前支持热备份模式和压缩格式备份模式。

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
206

若打开增量检测点功能且打开双写,gs_basebackup 也会备份双写文件。

gs_basebackup 在备份包含绝对路径的表空间时,如果在同一台机器上进行备份,
可以通过tablespace-mapping 重定向表空间路径或使用归档模式进行备份。

若pg_xlog 目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路
径的pg_xlog 目录下。

备份过程中收回用户备份权限,可能导致备份失败或者备份数据不可用。

如果因为网络临时故障等原因导致Server 端无法应答,gs_basebackup 将在最长等
待120 秒后退出。

MOT 的关键技术如下:

内存优化数据结构:
以实现高并发吞吐量和可预测的低延迟为目标,
所有数据和索引都
在内存中,不使用中间页缓冲区,并使用持续时间最短的锁。数据结构和所有算法都是
专门为内存设计而优化的。

免锁事务管理:MOT 在保证严格一致性和数据完整性的前提下,采用乐观的策略实现
高并发和高吞吐。在事务过程中,MOT 不会对正在更新的数据行的任何版本加锁,从
而大大降低了一些大内存系统中的争用。事务中的乐观并发控制(Optimistic
Concurrency Control,OCC)语句是在没有锁的情况下实现的,所有的数据修改都是在
内存中专门用于私有事务的部分(也称为私有事务内存)中进行的。
这就意味着在事务
过程中,相关数据在私有事务内存中更新,从而实现了无锁读写;而且只有在提交阶段
才会短时间加锁。更多详细信息,请参见MOT 并发控制机制。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
430

免锁索引:
由于内存表的数据和索引完全存储在内存中,
因此拥有一个高效的索引数据
结构和算法非常重要。MOT 索引机制基于最先进的Masstree,这是一种用于多核系统
的快速和可扩展的键值(Key Value,KV)存储索引,以B+树的Trie 实现。通过这种
方式,高并发工作负载在多核服务器上可以获得卓越的性能。同时MOT 应用了各种先
进的技术以优化性能,如优化锁方法、高速缓存感知和内存预取。

NUMA-aware 的内存管理:
MOT 内存访问的设计支持非统一内存访问(NUMA)
感知。
NUMA-aware 算法增强了内存中数据布局的性能,
使线程访问物理上连接到线程运行的
核心的内存。这是由内存控制器处理的,不需要通过使用互连(如英特尔QPI)进行额
外的跳转。MOT 的智能内存控制模块,为各种内存对象预先分配了内存池,提高了性
能,减少了锁,保证了稳定性。事务的内存对象的分配始终是NUMA 本地的。本地处
理的对象会返回到池中。同时在事务中尽量减少系统内存分配(OS malloc)的使用,
避免不必要的锁。

高效持久性:
日志和检查点是实现磁盘持久化的关键能力,
也是ACID 的关键要求之一
(D 代表持久性)。目前所有的磁盘(包括SSD 和NVMe)都明显慢于内存,因此持
久化是基于内存数据库引擎的瓶颈。作为一个基于内存的存储引擎,MOT 的持久化设
计必须实现各种各样的算法优化,
以确保持久化的同时还能达到设计时的速度和吞吐量
目标。这些优化包括:

并行日志,所有磁盘表都支持。

每个事务的日志缓冲和无锁事务准备。

增量更新记录,即只记录变化。

除了同步和异步之外,创新的NUMA 感知组提交日志记录。

最先进的数据库检查点(CALC)使内存和计算开销降到最低。

高SQL 覆盖率和功能集:MOT 通过扩展的PostgreSQL 外部数据封装(FDW)以及索
引,几乎支持完整的SQL 范围,包括存储过程、用户定义函数和系统函数调用。有关
不支持的功能的列表,请参阅MOT SQL 覆盖和限制。

使用PREPARE 语句的查询原生编译:通过使用PREPARE 客户端命令,可以以交互方
式执行查询和事务语句。这些命令已被预编译成原生执行格式,也称为Code-Gen 或即
时(Just-in-Time,JIT)编译。这样可以实现平均30%的性能提升。在可能的情况下,
应用编译和轻量级执行;否则,使用标准执行路径处理适用的查询。Cache Plan 模块已
针对OLTP 进行了优化,
在整个会话中甚至使用不同的绑定设置以及在不同的会话中重

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
431
用编译结果。

MOT 和数据库的无缝集成:
MOT 是一个高性能的面向内存优化的存储引擎,
已集成在
GBase 8c 数据库包中。MOT 的主内存引擎和基于磁盘的存储引擎并存,以支持多种应
用场景,同时在内部重用数据库辅助服务,如WAL 重做日志、复制、检查点和恢复高
可用性等。用户可以从基于磁盘的表和MOT 的统一部署、配置和访问中受益。根据特
定需求,灵活且低成本地选择使用哪种存储引擎。
例如,把会导致瓶颈的高度性能敏感
数据放入内存中。