返回首页

gbase数据、南大通用产品文档:GBase8s虚拟处理器

更新日期:2024年09月11日

数据库服务器进程都被称为虚拟处理器,因为它们作用的方式类似于计算机中 CPU 作用
的方式。如同 CPU 运行多个操作系统进程为多个用户提供服务一样,数据库服务器虚拟
处理器运行多个线程来为多个 SQL 客户机应用程序服务。
虚拟处理器是操作系统调度处理的进程。
下图说明了客户机应用程序与虚拟处理器之间的关系。少量的虚拟处理器可以为大量的客
户机应用程序或查询提供服务。
图: 虚拟处理器


GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 76 -


线程
线程是虚拟处理器的一个任务,如同虚拟处理器是 CPU 的一个任务一样。虚拟处理器是
操作系统调度在 CPU 上执行的任务;数据库服务器线程是虚拟处理器调度进行内部处理
的任务。线程有时称为轻量级进程,因为它们类似进程,但是对操作系统的要求更少。
数据库服务器虚拟处理器是多线程的,因为它们运行多个并发线程。
线程的性质如下所示。
操作系统
操作
UNIX™
线程是虚拟处理器为处理而内部调度的任务。
重要: 在这些主题中,对线程的所有引用都是指数据库服务器创建、调度和删除的线程。
虚拟处理器代表 SQL 客户机应用程序运行线程(会话线程),并运行线程以满足内部需
求(内部线程)。在大多数情况下,对于客户机应用程序的每个连接,数据库服务器都运
行一个会话线程。另外,数据库服务器运行内部线程以完成数据库 I/O、日志记录 I/O、
页面清除和管理任务。有关数据库服务器为单个客户机运行多个会话线程的情况,请参阅
并行处理。
用户线程是为来自客户机应用程序的请求提供服务的数据库服务器线程。用户线程包括会
话线程(称为 sqlexec 线程),这些线程是数据库服务器为了向客户机应用程序提供服务
而运行的主线程。
用户线程还包括为来自 onmode 实用程序的请求提供服务的线程、用于恢复的线程、B
型树扫描程序线程以及页清除程序线程。
要显示活动用户线程,请使用 onstat -u。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 77 -
虚拟处理器的类型
每一类虚拟处理器都专用于处理某些类型的线程。
下表显示虚拟处理器的类以及它们执行的处理的类型。
您配置的每个类的虚拟处理器数量取决于物理处理器 (CPU)、硬件内存和使用中数据库应
用程序的可用性。
表 1. 虚拟处理器类
虚拟处理器类 分类
用途
ADM
管理
执行管理功能。
ADT
审计
执行审计功能。
AIO
磁盘 I/O
执行非日志记录磁盘 I/O。如果使用了 KAIO,那么
AIO 虚拟处理器将对格式化的磁盘空间执行 I/O。
BTS
Basic Text Search
运行 Basic Text Search 索引操作和查询。
CPU
中央处理
运行所有会话线程以及一些系统线程。 运行可用时
的内核异步 I/O (KAIO) 的线程。 可以根据配置运
行单个轮询线程。
CSM
通信支持模块
执行通信支持服务操作。
dwavp
数据仓储
在连接到 GBase 8s Warehouse Accelerator 的数据库
服务器上,对 GBase 8s Warehouse Accelerator 运行
管理功能和过程。
加密
加密
调用加密或解密功能时被数据库服务器使用。
IDSXMLVP
XML 发布
运行 XML 发布函数。
Java™ VP
(JVP)
Java UDR
运行 Java UDR。 包含 Java 虚拟机 (JVM)。
LIO
磁盘 I/O
如果逻辑日志文件(内部类)位于格式化的磁盘空
间,那么写入这些逻辑日志文件。
MQ
MQ 消息传递
执行 MQ 消息传递事务。
MSC
其他
为需要很大堆栈的系统调用的请求提供服务。
OPT (UNIX™) Optical
执行对光盘的 I/O。
PIO
磁盘 I/O
如果物理日志文件(内部类)位于格式化的磁盘空
间,那么写入该物理日志文件。
SHM
网络
执行共享内存通信。
SOC
网络
使用套接字执行网络通信。
TLI
网络
使用传输层接口 (TLI) 执行网络通信。
WFSVP
Web 要素服务
运行 Web 要素服务例程。
类名
用户定义的
以线程安全方式运行用户定义的例程,以便在例程失
败时数据库服务器不受影响。 用 VPCLASS 配置参
数指定。 必须指定类名。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 78 -
下图说明了数据库服务器的主要组件以及可扩展性。
图: 数据库服务器



虚拟处理器的优势
与为单台客户机应用程序提供服务的数据库服务器进程相比,数据库服务器虚拟处理器的
动态多线程性质将提供下列优势:

虚拟处理器可以共享处理。

虚拟处理器将保存内存和资源。

虚拟处理器可以执行并行处理。

当数据库服务器正在运行时,您可以启动其他的虚拟处理器并终止活动的 CPU
虚拟处理器。

您可以将虚拟处理器绑定到 CPU。
以下主题将描述这些优势。

共享处理

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 79 -
同一类的虚拟处理器具有相同的代码并且共享对内存中的数据和处理队列的访问。类中任
何的虚拟处理器都可以运行任何属于该类的线程。
通常,数据库服务器会尝试将线程保持在同一个虚拟处理器上运行,因为将它移动到不同
的虚拟处理器可能需要来自处理器内存的数据在总线上传送。然而,当线程正等待运行
时,数据库服务器可以将线程迁移至另一个虚拟处理器,因为平衡处理负载的好处要大于
在传送数据时花费的开销。
一类虚拟处理器中的共享处理是自动发生的并且对数据库用户是透明的。

节省内存和资源
相较于一个客户机进程对应一个服务器进程的体系结构,数据库服务器能够用少量的服务
器进程处理大量客户机。对于每台客户机,数据库服务器是通过运行线程而不是进程来实
现这点的。
因为线程共享分配给虚拟处理器的资源,所以多线程允许对操作系统资源进行更有效的使
用。虚拟处理器运行的所有线程对虚拟处理器内存、通信端口和文件具有相同的访问权。
虚拟处理器会按线程协调对资源的访问。但是,每个单独的进程都有一组不同的资源,并
且在多个进程需要访问相同资源时,操作系统必须对访问进行协调。
通常,虚拟处理器从一个线程切换至另一个线程比操作系统从一个进程切换至另一个进程
更快。当操作系统在两个进程间切换时,它必须使一个进程停止在处理器上运行,保存其
当前的处理状态(或上下文),然后启动另一个进程。两个进程都必须进入然后退出操作
系统内核,并且可能需要替换部分物理内存的内容。但是,线程会共享相同的虚拟内存和
文件描述符。在虚拟处理器从一个线程切换到另一个线程时,就相当于从一个执行路径切
换到另一个执行路径。虚拟处理器是一个进程,该进程在 CPU 上持续运行而不会中断。
有关虚拟处理器如何从一个线程切换到另一个线程的描述,请参阅上下文切换。

并行处理
在以下情况中,CPU 类的虚拟处理器可以为单台客户机以并行方式运行多个会话线程:

索引构建

排序

恢复

扫描

连接

聚集

分组

用户定义的例程 (UDR) 执行
有关并行 UDR 执行的更多信息,请参阅《GBase 8s 用户定义的例程与数据类型开发者
指南》。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 80 -
下图说明了并行处理。当客户机启动索引构建、排序或逻辑恢复时,数据库服务器将使用
尽可能多的计算机资源创建多个线程以并行处理任务。当一个线程正在等待 I/O,另一个
线程可能正在工作。
图: 并行处理



在联机方式下添加和删除虚拟处理器
可以添加虚拟处理器以满足数据库服务器运行时对服务的日益增长的需求。例如,如果类
的虚拟处理器变成了计算绑定或 I/O 绑定(意思是可以处理 CPU 工作或 I/O 请求的虚
拟处理器的当前数量满足不了处理 CPU 工作或 I/O 请求数日益累积的需求),那么您可
以为该类启动额外的虚拟处理器来进一步分布处理装入。
可以在数据库服务器运行时为这些类中的任何一个添加虚拟处理器。有关更多信息,请参
阅在联机方式下添加虚拟处理器。
当数据库服务器正在运行时,您可以删除 CPU 的虚拟处理器或用户定义类。有关更多信
息,请参阅设置虚拟处理器配置参数。

将虚拟处理器绑定到 CPU
可使用某些多处理器系统将进程绑定到特定 CPU。此功能称为处理器专用。
在数据库服务器支持处理器专用的多处理器计算机上,您可以将 CPU 虚拟处理器绑定到
该计算机中特定的 CPU。当您将 CPU 虚拟处理器绑定到 CPU 时,虚拟处理器将互斥
运行在该 CPU 上。此操作将提高虚拟处理器的性能,因为它减少了操作系统必须在进程
间进行的切换量。将 CPU 虚拟处理器绑定到特定的 CPU 还可以使您隔离计算机上特定
处理器的数据库工作,以将剩余的处理器释放给其他的工作。仅 CPU 虚拟处理器可以绑
定到 CPU。
有关如何将 CPU 虚拟处理器指定到硬件处理器的信息,请参阅处理器亲缘关系。

可以显示通过 SMI 表或 ON-Monitor 创建的数据库。
SMI 表
查询 sysdatabases 表以显示对应于数据库服务器管理的每个数据库的行。 有关此表中的
列的描述,请参阅《GBase 8s 管理员参考》中有关 sysmaster 数据库的主题中的
sysdatabases 信息。
使用 GBase 8s Server Administrator
要使用 Server Administrator (ISA) 查询 sysdatabases,请遵循以下步骤:
1. 选择 SQL > 查询。
2. 在数据库列表中选择 sysmaster 数据。
3. 输入以下命令并单击提交:select * from sysdatabases;
使用 ON-Monitor 查找数据库状态 (UNIX™)
要使用 ON-Monitor 查扎每个数据库的当前状态,请选 择状态 > 数据库选项。
ON-Monitor 仅能显示最多 100 个数据库。若您的数据库服务器上有 100 多个数据库,请
按上一节所述,使用 SMI 表来显示完整列表。


GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 230 -

语法格式
NEAR ((term1, term2), num[,Order])
表5- 46 参数说明
参数名称


term
为搜索词,
无论是否有引号标识,
都按照短语搜索,
如near((北
京,天津),10)等价于near(("北京","天津"),10),
term 也可以是一
个Near 表达式,两个term 用逗号分割。英文为词,中文默认
为单字。
NUM
表示词距数,非0 整数,词距(包括匹配词),实际词距小
于num 值即为符号要求
Order
表示词序。为0 代表无词序,
为1 代表有词序。
Order 为可
选项,默认值为0,表示无词序。
例如near((great, place), 3,1), 查找great 和place 两词词距不超过3,按词序查询。
1.
文本匹配条件描述

按照参数order 输入值:

0:无顺序包括所有查询词语;

非0 整数:有顺序包括所有查询词语。

匹配词词距不超出预期值(包括匹配词);

支持递归匹配,
每层递归结果均需要满足(1)(2)条件,
递归结果作为一个整体
传入下一次递归计算,其长度为匹配长度。
2.
搜索实例说明

输入查询语句“near((cat, dog), 5, 1)":

文本“cat dog”--- 匹配,词序正确;

文本“dog cat”--- 不匹配,dog cat 词序不匹配;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
940

文本“cat aaa bbb ccc ddd dog”---不匹配,cat dog 之间有6 个词(包括匹配
词),超出匹配长度5。

输入查询语句“near((cat, dog), 5, 0)":

文本“cat dog”--- 匹配;

文本“dog cat”--- 匹配,无词序要求。

文本“dog aaa bbb ccc ddd cat”---不匹配,dog,cat 之间有6 个词(包括匹配
词),超出匹配长度5

输入查询语句"near( (near((cat, dog), 5, 1), mouse), 8, 0)"

文本“cat dog mouse”--- 匹配;

文本“mouse cat dog”--- 匹配;

文本“dog cat mouse”--- 不匹配,dog, cat 词序不匹配;

文本“cat aaa bbb ccc ddd dog mouse” ---不匹配,cat,dog 词距为6,超出匹
配长度5;

文本“cat aaa bbb ccc dog aaa bbb ccc ddd mouse”---不匹配,
cat, mouse 词距
为10 超出匹配长度8;

文本“cat aaa bbb ccc dog ddd
mouse”---匹配, cat 和dog 词距未超出,cat
和mouse 词距未超出;

文本“mouse ddd cat aaa bbb ccc dog”---匹配, cat 和dog 词距未超出,
mouse
和dog 词距未超出;
以上为句法讲解的例子,下面以实际的示例说明。
示例
示例1:要查询制作假文凭的垃圾短信内容。
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text, '"文
凭"/2');
+--------------------------------------------------------------+
| MB_Text
|
+--------------------------------------------------------------+
| 明天去公司办公柜里查找合同文件、档案和报销凭证。
|
| 本公司办理各种文*凭、证/件,绝对保真,联系电话:022-30088200。|
+--------------------------------------------------------------+
2 rows in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
941
从上面信息中发现正常的短信也查询出来了,我们改进一下查询方法。
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text, 'NEA
R((文,凭),4,1)');
+---------------------------------------------------------------+
| MB_Text
|
+---------------------------------------------------------------+
| 本公司办理各种文*凭、证/件,绝对保真,联系电话:022-30088200。|
+---------------------------------------------------------------+
1 row in set
示例2:查询包含南大两字,词距在4 的短信。
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text, '(NE
AR((南,大),4,0))');
+--------------------------------------------------------------+
| MB_Text
|
+--------------------------------------------------------------+
| 晚上去南大上英语课,在南大主楼115 房间
|
| 周末去天津博物馆参观,在南开区南门外大街公交车站集合
|
| 南大通用数据技术股份有限公司地址:...
|
| 南大开设java 编程培训班,每周五晚上7:00-9:00 上课
|
+--------------------------------------------------------------+
4 rows in set
示例3:想查询包含南大两字、词距在4 并且以课字结尾的短信。
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text,
'(NEAR((南,大),4,0))&课$');
+-----------------------------------------------------+
| MB_Text
|
+-----------------------------------------------------+
| 南大开设java 编程培训班,每周五晚上7:00-9:00 上课
|
+-----------------------------------------------------+
1 row in set