返回首页

gbase数据、南大通用产品文档:GBase8a密码安全管理

更新日期:2024年09月11日

为保证密码安全管理在整个集群环境的一致性,
需要在各Coordinator 节点的配置文
件gbase_8a_gcluster.cnf 中和各Data 节点的配置文件gbase_8a_gbase.cnf 中,
对相同
变量配置相同的值。
以下只读参数可以在集群中各gcluster 节点和gnode 节点(gcware 节点除外)的如
下文件中修改:
Gcluster 节点:
$GCLUSTER_BASE/config/gbase_8a_gcluster.cnf
Gnode 节点:
$GBASE_BASE/config/gbase_8a_gbase.cnf

MOT 配置
预置MOT 用于创建工作MOT。为了获得最佳效果,建议根据应用程序的特定要求和
偏好自定义MOT 配置(在mot.conf 文件中定义)。
该文件在服务器启动时只读。
如果在系统运行中编辑此文件,
则必须重新加载服务器才
能使修改内容生效。
mot.conf 文件与postgresql.conf 配置文件在同一文件夹下。
在主备部署模式下,主备节点的mot.conf 文件需要完全相同,否则,系统行为不明确。
阅读总体原则,根据需要查看和配置mot.conf 文件。
以上描述了mot.conf 文件中的各个设置。除上述内容外,要了解特定MOT 功能(如恢
复),可参考本用户手册的相关章节。例如,MOT 恢复说明了mot.conf 文件的恢复,
包含影响MOT 恢复的设置。此外,有关恢复的完整说明,请参阅“MOT 管理”章节
的MOT 恢复。下文各相关章节中还提供了参考链接。
以下介绍了mot.conf 文件中的各个部分,其包含的设置以及默认值。
总体原则
以下是编辑mot.conf 文件的总体原则。

每个设置项都带有默认值,如下所示:
# name = value

可以接受空格或留空。

在各行添加#号可进行注释。

每个设置项的默认值将作为注释显示在整个文件中。

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

如果参数没有注释并且置入了新值,则定义新设置。

对mot.conf 文件的更改仅在数据库服务器启动或重装时生效。
内存单元的表示如下:

KB:千字节

MB:兆字节

GB:吉字节

TB:太字节
如果未指定内存单元,则假定为字节。
某些内存单位为postgresql.conf 中的max_process_memory 的百分比值。例如,20%。
时间单位表示如下:

us:微秒

ms:毫秒

s:秒

min:分钟

h:小时

d:天
如果未指定时间单位,则假定为微秒。
重做日志(MOT)

enable_group_commit = false
是否使用组提交。
该选项仅在GBase 8c 配置为使用同步提交时相关,即仅当postgresql.conf 中的
synchronization_commit 设置为除off 以外的任何值时相关。
有关WAL 重做日志的详细信息,请参阅MOT 日志记录:WAL 重做日志。

group_commit_size = 16

group_commit_timeout = 10 ms
只有当MOT 引擎配置为同步组提交日志记录时,此选项才相关。即postgresql.conf 中

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
444
的synchronization_commit 配置为true,mot.conf 配置文件中的enable_group_commit 配置为
true。
当一组事务记录在WAL 重做日志中时,需确定以下设置项取值:
group_commit_size:一组已提交的事务数。例如,16 表示当同一组中的16 个事务已由
它们的客户端应用程序提交时,则针对16 个事务中的每个事务,在磁盘的WAL 重做日志
中写入一个条目。
group_commit_timeout:超时时间,单位为毫秒。例如,10 表示在10 毫秒之后,为同
一组由客户端应用程序在最近10 毫秒内提交的每个事务,在磁盘的WAL 重做日志中写入
一个条目。
提交组在到达配置的事务数后或者在超时后关闭。
组关闭后,
组中的所有事务等待一个
组落盘完成执行,然后通知客户端每个事务都已经结束。
有关同步组提交日志记录的详细信息,请参阅MOT 日志类型。
检查点(MOT)

checkpoint_dir =
指定检查点数据存放目录。默认位置在每个数据节点的data 文件夹中。

checkpoint_segsize = 16 MB
指定检查点时使用的段大小。
分段执行检查点。
当一个段已满时,
它将被序列化到磁盘,
并为后续的检查点数据打开一个新的段。

checkpoint_workers = 3
指定在检查点期间要使用的工作线程数。
检查点由多个MOT 引擎工作线程并行执行。
工作线程的数量可能会大大影响整个检查
点操作的整体性能,以及其它正在运行的事务的操作。
为了实现较短的检查点持续时间,应
使用更多线程,直至达到最佳数量(根据硬件和工作负载的不同而不同)。但请注意,如果
这个数目太大,
可能会对其他正在运行的事务的执行时间产生负面影响。
尽可能低这个数字,
以最小化对其他运行事务的运行时的影响。当此数目过高时,检查点持续时间会较长。
有关配置的更多信息,请参阅MOT 持久性中的MOT 检查点。
恢复(MOT)

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

checkpoint_recovery_workers = 3
指定在检查点数据恢复期间要使用的工作线程数。
每个MOT 引擎工作线程在自己的核
上运行,通过将不同的表读入内存,可以并行处理不同的表。缺省值为3,可将此参数设置
为可处理的核数。恢复后,将停止并杀死这些线程。
有关配置的详细信息,请参阅MOT 恢复。
统计(MOT)

enable_stats = false
设置周期性统计打印信息。

print_stats_period = 10 minute
设置汇总统计报表打印的时间范围。

print_full_stats_period = 1 hours
设置全量统计报表打印的时间范围。
以下设置为周期性统计报表中的各个部分。如果没有配置,则抑制统计报表。

enable_log_recovery_stats = false
日志恢复统计信息包含各种重做日志的恢复指标。

enable_db_session_stats = false
数据库会话统计信息包含事务事件,如提交、回滚等。

enable_network_stats = false
网络统计信息包括连接/断连事件。

enable_log_stats = false
日志统计信息包含重做日志详情。

enable_memory_stats = false
内存统计信息包含内存层详情。

enable_process_stats = false
进程统计信息包含当前进程的内存和CPU 消耗总量。

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

enable_system_stats = false
系统统计信息包含整个系统的内存和CPU 消耗总量。

enable_jit_stats = false
JIT 统计信息包含有关JIT 查询编译和执行的信息。
错误日志(MOT)

log_level = INFO
设置MOT 引擎下发的消息在数据库服务器的错误日志中记录的日志级别。有效值为
PANIC、ERROR、WARN、INFO、TRACE、DEBUG、DIAG1、DIAG2。

Log/COMPONENT/LOGGER=LOG_LEVEL
使用以下语法设置特定的日志记录器。
例如,要为系统组件中的ThreadIdPool 日志记录器配置TRACE 日志级别,请使用以下
语法:

Log.System.ThreadIdPool.log_level=TRACE
要为某个组件下的所有记录器配置日志级别,请使用以下语法:

Log.COMPONENT.log_level=LOG_LEVEL
例如:
Log.System.log_level=DEBUG
内存(MOT)

enable_numa = true
指定是否使用可识别NUMA 的内存。
禁用时,
所有亲和性配置也将被禁用。
MOT 引擎
假定所有可用的NUMA 节点都有内存。如果计算机具有某些特殊配置,其中某些NUMA
节点没有内存,则MOT 引擎初始化将因此失败,因此数据库服务器启动将失败。在此类计
算机中,建议将此配置值设置为false,以防止启动失败并让MOT 引擎在不使用可识别
NUMA 的内存分配的情况下正常运行。

affinity_mode = fill-physical-first
设置用户会话和内部MOT 任务的线程亲和模式。
使用线程池时,用户会话将忽略此值,因为它们的亲和性由线程池控制。但内部MOT

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
447
任务仍然使用。
有效值为fill-socket-first、equal-per-socket、fill-physical-first、none。

Fill-socket-first 将线程连接到同一个槽位的核上,直到槽位已满,然后移动到下一
个槽位。

Equal-per-socket 使线程均匀分布在所有槽位中。

Fill-physical-first 将线程连接到同一个槽位中的物理核,直到用尽所有物理核,然
后移动到下一个槽位。当所有物理核用尽时,该过程再次从超线程核开始。

None 禁用任何亲和配置,并让系统调度程序确定每个线程调度在哪个核上运行。

lazy_load_chunk_directory = true
设置块目录模式,用于内存块查找。
Lazy 模式将块目录设置为按需加载部分目录,从而减少初始内存占用(大约从1GB 减
少到1MB)。然而,这可能会导致轻微的性能损失和极端情况下的内存损坏。相反,使用
non-lazy 块目录会额外分配1GB 的初始内存,产生略高的性能,并确保在内存损坏期间避
免块目录错误。

reserve_memory_mode = virtual
设置内存预留模式(取值为physical 或virtual)。
每当从内核分配内存时,都会参考此配置值来确定所分配的内存是常驻(physical)还
是非常驻(virtual)。这主要与预分配有关,但也可能影响运行时分配。对于physical 保留
模式,通过强制内存区域所跨越的所有页出现页错误,使整个分配的内存区域常驻。配置
virtual 内存预留可加速内存分配(特别是在预分配期间),但可能在初始访问期间出现页错
误(因此导致轻微的性能影响),并在物理内存不可用时出现更多服务器错误。相反,物理
内存分配速度较慢,但后续访问速度更快且有保障。

store_memory_policy = compact
设置内存存储策略(取值为compact 或expanding)。
当定义了compact 策略时,未使用的内存会释放回内核,直到达到内存下限(请参见下
面的min_mot_memory)。在expanding 策略中,未使用的内存存储在MOT 引擎中,以便
后续再使用。compact 存储策略可以减少MOT 引擎的内存占用,但偶尔会导致性能轻微下
降。此外,在内存损坏时,它还可能导致内存不可用。相反,expanding 模式会占用更多的
内存,但是会更快地分配内存,并且能够更好地保证在解分配后能够重新分配内存。

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

chunk_alloc_policy = auto
设置全局内存的块分配策略。
MOT 内存以2MB 的块为单位组织。源NUMA 节点和每个块的内存布局会影响表数据
在NUMA 节点间的分布,因此对数据访问时间有很大影响。在特定NUMA 节点上分配块
时,会参考分配策略。
可用值包括auto、local、page-interleaved、chunk-interleaved、native。

Auto 策略根据当前硬件情况选择块分配策略。

Local 策略在各自的NUMA 节点上分配每个数据块。

Page-interleaved 策略从所有NUMA 节点分配由交插内存4 千字节页组成的数据块。

Chunk-interleaved 策略以轮循调度方式从所有NUMA 节点分配数据块。

Native 策略通过调用原生系统内存分配器来分配块。

chunk_prealloc_worker_count = 8
设置每个NUMA 节点参与内存预分配的工作线程数。

max_mot_global_memory = 80%
设置MOT 引擎全局内存的最大限制。
指定百分比值与postgresql.conf 中max_process_memory 定义的总量有关。
MOT 引擎内存分为全局(长期)内存,主要用于存储用户数据,以及本地(短期)内
存,主要用于用户会话,以满足本地需求。
任何试图分配超出此限制的内存的尝试将被拒绝,并向用户报告错误。请确保
max_mot_global_memory 与max_mot_local_memory 之和不超过postgresql.conf 中配置的
max_process_memory。

min_mot_global_memory = 0 MB
设置MOT 引擎全局内存的最小限制。
指定百分比值与postgresql.conf 中max_process_memory 定义的总量有关。
此值用于启动期间的内存预分配,
以及确保MOT 引擎在正常运行期间有最小的内存可
用量。当使用compact 存储策略时(参阅上文store_memory_policy),该值指定了下限,超
过下限的内存不会释放回内核,而是保留在MOT 引擎中以便后续重用。

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

max_mot_local_memory = 15%
设置MOT 引擎本地内存的最大限制。
指定百分比值与postgresql.conf 中max_process_memory 定义的总量有关。
MOT 引擎内存分为全局(长期)内存,主要用于存储用户数据,以及本地(短期)内
存,主要用于用户会话,以满足本地需求。
任何试图分配超出此限制的内存的尝试将被拒绝,并向用户报告错误。请确保
max_mot_global_memory 与max_mot_local_memory 之和不超过postgresql.conf 中配置的
max_process_memory。

min_mot_local_memory = 0 MB
设置MOT 引擎本地内存的最小限制。
指定百分比值与postgresql.conf 中max_process_memory 定义的总量有关。
此值用于在启动期间预分配内存,
以及确保MOT 引擎在正常运行期间有最小的可用内
存。当使用compact 存储策略时(参阅上文store_memory_policy),该值指定了下限,超过
下限的内存不会释放回内核,而是保留在MOT 引擎中以便后续重用。

max_mot_session_memory = 0 MB
设置MOT 引擎中单个会话的最大内存限制。
指定百分比值与postgresql.conf 中max_process_memory 定义的总量有关。
通常,MOT 引擎中的会话可以根据需要分配尽可能多的本地内存,只要没有超出本地
内存限制即可。为了避免单个会话占用过多的内存,从而拒绝其他会话的内存,通过该配置
项限制小会话的本地内存分配(最大1022KB)。
请确保该配置项不影响大会话的本地内存分配。
0 表示不会限制每个小会话的本地分配,除非是由max_mot_local_memory 配置的本地
内存分配限制引起的。

min_mot_session_memory = 0 MB
设置MOT 引擎中单个会话的最小内存预留。
指定百分比值与postgresql.conf 中max_process_memory 定义的总量有关。
此值用于在会话创建期间预分配内存,
以及确保会话有最小的可用内存量来执行其正常
操作。

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

session_large_buffer_store_size = 0 MB
设置会话的大缓冲区存储。
当用户会话执行需要大量内存的查询时(例如,使用许多行),大缓冲区存储用于增加
此类内存可用的确定级别,并更快地为这个内存请求提供服务。对于超过1022KB 的会话,
任何内存分配都是大内存分配。
如果未使用或耗尽了大缓冲区存储,
则这些分配将被视为直
接从内核提供的巨大分配。

session_large_buffer_store_max_object_size = 0 MB
设置会话的大分配缓冲区存储中的最大对象大小。
大缓冲区存储内部被划分为不同大小的对象。
此值用于对源自大缓冲区存储的对象设置
上限,以及确定缓冲区存储内部划分为不同大小的对象。
此大小不能超过session_large_buffer_store_size 的1/8。如果超过,则将其调整到最大可
能。

session_max_huge_object_size = 1 GB
设置会话单个大内存分配的最大尺寸。
巨大分配直接从内核中提供,因此不能保证成功。
此值也适用于全局(非会话相关)内存分配。
垃圾收集(MOT)

enable_gc = true
是否使用垃圾收集器(Garbage Collector,GC)。

reclaim_threshold = 512 KB
设置垃圾收集器的内存阈值。
每个会话管理自己的待回收对象列表,
并在事务提交时执行自己的垃圾回收。
此值决定
了等待回收的对象的总内存阈值,超过该阈值,会话将触发垃圾回收。
一般来说,
这里是在权衡未回收对象与垃圾收集频率。
设置低值会使未回收的内存保持
在较少的水平,但会导致频繁的垃圾回收,从而影响性能。
设置高值可以减少触发垃圾回收
的频率,但会导致未回收的内存过多。此设置取决于整体工作负载。

reclaim_batch_size = 15432
设置垃圾回收的批次大小。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
451
垃圾收集器从对象中批量回收内存,以便限制在一次垃圾收集传递中回收的对象数量。
此目的是最小化单个垃圾收集传递的操作时间。

high_reclaim_threshold = 8 MB
设置垃圾回收的高内存阈值。
由于垃圾收集是批量工作的,
因此会话可能有许多可以回收的对象,
但这些对象不能回
收。在这种情况下,为了防止垃圾收集列表变得过于膨胀,尽管已经达到批处理大小限制,
此值继续单独回收对象,直到待回收对象小于该阈值,或者没有更多符合回收条件的对象。
JIT(MOT)

enable_mot_codegen = true
指定是否对计划查询使用JIT 查询编译和执行。
JIT 查询执行为在计划阶段准备好的查询准备了JIT 编译的代码。每当调用准备好的查
询时,
都会执行生成的JIT 编译函数。
JIT 编译通常以LLVM 的形式进行。
在原生不支持LLVM
的平台上,MOT 提供了基于软件的回退(Tiny Virtual Machine,TVM)。

force_mot_pseudo_codegen = false
当前平台支持LLVM 时,是否使用TVM(伪LLVM)。
在原生不支持LLVM 的平台上,MOT 自动默认为TVM。
在原生支持LLVM 的平台上,默认使用LLVM。该配置项允许在支持LLVM 的平台上
使用TVM 进行JIT 编译和执行。

enable_mot_codegen_print = false
指定是否为JIT 编译的查询打印发出的LLVM/TVM IR 代码。

mot_codegen_limit = 100
限制每个用户会话允许的JIT 查询数。
默认MOT.conf 文件
最小设置和配置指定将postgresql.conf 文件指向MOT.conf 文件的位置:
postgresql.conf
mot_config_file = '/tmp/gauss/ MOT.conf'
确保max_process_memory 设置的值足够包含MOT 的全局(数据和索引)和本地(会
话)内存。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
452
MOT.conf 的默认内容满足开始使用的需求。设置内容后续可以优化。



sword GCILobErase2 (
GCISvcCtx *svchp,
GCIError *errhp,
GCILobLocator *locp,
gbsub8 *amount,
gbsub8 offset

);

从指定的偏移量开始擦除内部 LOB 数据的指定部分,暂不支持大于 4G 的 LOB 对象。

参数
输入
/输出


svchp
输入
上下文句柄的指针
errhp
输入/输出
错误信息句柄,该接口调用失败时,错误信息会存在该句柄上
locp
输入/输出
被删除数据的LOB 对象
amount

输入/输出
删除的字节数
offset

输入
擦除数据的字节绝对偏移量,从1 开始

如果执行成功,返回 GCI_SUCCESS,否则返回 GCI_ERROR。