返回首页

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

更新日期:2024年09月11日

 摘要:
返回由服务器上的数据库名称组成的结果集,该服务器与由通配符参数指
定的简单正则表达式匹配。通配符参数可以包含通配符“%”或“_”
,也可以是
NULL 指针,以便与所有的数据库匹配。调用gbase_list_dbs()的方法类似于执
行查询show database [LIKE wild]。
必须用gbase_free_result()释放结果集。
 语法:
GBASE_RES * gbase_list_dbs(GBASE *gbase,const char *wild);
 参数:
 返回值:
成功后返回GBASE_RES 结果集。如果出现错误,返回NULL。

gbase_stmt_attr_get
 摘要:
获取预处理语句属性的值。
 语法:
gs_bool gbase_stmt_attr_get(GBASE_STMT *stmt, enum
enum_stmt_attr_type attr_type, void *attr);
 参数:
attr_type 和atttr 类型的清单参考gbase_stmt_attr_set()。
 返回值:
如果OK,返回0。如果选项未知,返回非0 值。



GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 55 -

运行在同一个虚拟处理器上和运行在个别虚拟处理器上的数据库服务器线程将共享对共享
内存中资源的访问权。当线程写入共享内存时,它将使用称为互斥和锁定的机制来防止其
他线程同时写入相同的区域。互斥将给予线程访问共享内存资源的权限。防止其他线程写
入缓冲区直到放置锁的线程完成对缓冲区的操作并且释放锁定为止的锁定。
共享内存互斥
数据库服务器在尝试修改共享内存中的数据时使用互斥来协调线程。每个可修改的共享内
存资源都与互斥相关联。在线程可以修改共享内存资源之前,它必须先获取与该资源关联
的互斥。在线程获取该互斥后,它便可以修改该资源。当修改完成时,线程将释放互斥。
如果线程试图获取互斥并发现该互斥正由另一个线程所持有,那么进入的线程必须等待互
斥被释放。
例如,两个线程可以尝试访问块表中的同一个插槽,但只有一个线程可以获取与块表关联
的互斥。只有持互斥的线程才可以将其条目写入块表。第二个线程必须等待该互斥被释
放,然后才能获取该互斥。
有关监视互斥(也称为锁存器)的信息,请参阅监视共享内存概要文件和锁存器。
共享内存缓冲区锁定
共享内存的主要好处在于数据库服务器线程能够共享对存储在共享内存缓冲池中的磁盘页
的访问权。数据库服务器将在通过有关锁定数据缓冲区的策略获得此增长的并行性时保持
线程隔离。
缓冲区锁定的类型
数据库服务器使用两种类型的锁定来管理到共享内存缓冲区的访问权:
• 共享锁定
• 互斥锁定
这些锁定类型中的每种类型都将在执行期间强制实施所需级别的线程隔离。
共享锁定

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 125 -
如果多个线程可以访问缓冲区以读取数据但没有一个想要修改数据,那么缓冲区为共享方
式或有一个共享锁定。
互斥锁定
如果线程要求对缓冲区进行互斥访问,那么缓冲区为互斥方式或具有互斥锁定。所有访问
缓冲区的其他线程请求都放置在等待队列中。当正在执行的线程准备好释放互斥锁定,它
将唤醒等待队列中的下一个线程。