返回首页

gbase数据、南大通用产品文档:GBase8s数据库日志记录状态

更新日期:2024年09月11日

您必须对数据库使用事务日志记录以利用需要日志记录的数据库服务器进程中所列的所有
功能。
数据库服务器管理的每个数据库均有日志记录状态。日志记录状态指示数据库是否使用事
务日志记录以及(如果使用)数据库运用哪一种日志缓冲机制。要查明数据库的事务日志
记录状态,请按监视数据库的日志记录方式中的说明,使用数据库服务器实用程序。数据
库日志记录状态将指示下列日志记录类型中的任意一种:
• 未缓冲的事务日志记录
• 已缓冲的事务日志记录
• 符合 ANSI 的事务日志记录
• 无日志记录
所有逻辑日志记录在数据库服务器将其写入磁盘上的逻辑日志之前,均经过共享内存中的
逻辑日志缓冲区。但是,数据库服务器清仓逻辑日志缓冲区的时刻对于已缓冲的事务日志
记录和未缓冲的事务日志记录是不同的。
未缓冲的事务日志记录
如果事务是对使用未缓冲日志记录的数据库进行的,那么逻辑日志缓冲区中的记录可保证
在落实处理期间写入磁盘。当应用程序在 COMMIT 语句之后(对于分布式事务,在

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 273 -
PREPARE 语句之前)重获控制权时,逻辑日志记录在磁盘上。一旦落实缓冲区中的任何
事务(即,将落实记录写入逻辑日志缓冲区),数据库服务器就立即清仓记录。
当数据库服务器清仓缓冲区时,仅将已使用的页写入磁盘。已使用的页包含那些仅部分已
满的页,但这样就浪费了一些空间。由于这个原因,相比在同一数据库服务器上的所有数
据库均使用已缓冲的日志记录这种情况而言,磁盘上的逻辑日志文件会更快地填满。
未缓冲的日志记录对于大多数数据库而言是最好的选择,因为它保证所有已落实的事务可
得以恢复。在发生故障的情况下,仅丢失在发生故障时未落实的事务。但是,有了未缓冲
的日志记录,数据库服务器会更频繁地将逻辑日志缓冲区清仓到磁盘,而缓冲区将包含更
多部分已满的页,因此它比已缓冲的日志记录会更快地填充逻辑日志。

已缓冲的事务日志记录
如果事务是对使用已缓冲日志记录的数据库进行的,那么记录尽可能久地保留(已缓冲)
在逻辑日志缓冲区中。直至发生以下情况之一,这些记录才会从共享内存中的逻辑日志缓
冲区刷新到磁盘上的逻辑日志:
• 缓冲区已满。
• 具有未缓冲日志记录的数据库上的落实清空了缓冲区。
• 出现检查点。
• 连接关闭。
如果您使用已缓冲日志记录并且发生了故障,那么不能期望数据库服务器恢复那些在发生
故障时位于逻辑日志缓冲区中的事务。因此,可能会丢失一些已落实的事务。作为对该风
险的补偿,变更期间的性能会稍有提高。只要您在发生故障的情况下可重新创建更新,那
么已缓冲日志记录最适合用于频繁更新的数据库(这时更新速度很重要)。您可调整逻辑
日志缓冲区的大小以便为您的系统在性能和因系统故障而丢失事务的风险之间找到可接受
的平衡。

符合 ANSI 的事务日志记录
符合 ANSI 标准的数据库日志记录状态表明数据库所有者使用 MODE ANSI 关键字。符
合 ANSI 标准的数据库对事务处理强制执行 ANSI 规则,始终使用未缓冲的事务日志记
录。您无法更改符合 ANSI 标准的数据库的缓冲状态。

无数据库日志记录
如果您关闭了数据库的日志记录,那么将不记录事务,但会记录其他操作。有关更多信
息,请参阅 始终记录的活动。通常,当您要装入数据或仅运行查询时,将关闭数据库的
日志记录。
如果您对恢复源感到满意,可以决定不对数据库使用事务日志记录,从而减少数据库服务
器处理量。例如,如果要将许多行从可恢复的源(如磁带或 ASCII 文件)装入数据库,
那么可能不需要事务日志记录,并且在不使用事务日志记录的情况下装入会进行得更快。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 274 -
但是,如果其他用户在数据库中是活动的,那么您直到重新启动日志记录(这必须等待 0
级备份)后才会拥有其事务的逻辑日志记录。

具有不同日志缓冲状态的数据库
数据库服务器上的所有数据库使用相同的逻辑日志和相同的逻辑日志缓冲区。因此,对具
有不同逻辑缓冲状态的各数据库的事务可写入相同的逻辑日志缓冲区。在这种情况下,如
果事务是对具有已缓冲日志记录的数据库和对具有未缓冲日志记录的数据库而存在的,那
么数据库服务器在缓冲区已满时或在具有未缓冲日志记录的数据库的事务完成时清空缓冲
区。

X/Open DTP 环境中的数据库日志记录
X/Open 分布式事务处理 (DTP) 环境中的数据库必须使用未缓冲日志记录。未缓冲日志记
录确保数据库服务器逻辑日志始终处于一致状态,并且可与事务管理器同步。如果在
X/Open DTP 环境中打开用已缓冲日志记录创建的数据库,数据库状态会自动更改为未缓
冲日志记录。数据库服务器支持符合 ANSI 标准和不符合 ANSI 标准的数据库。有关更
多信息,请参阅事务管理器。

在安装 Client SDK 或 GBase 8s Connect,或者将客户机应用程序连接到数据
库服务器之前,请先完成适用于您计算机上的 UNIX™ 或 Linux™ 操作系统的准
备步骤。
有关可以安装产品的受支持 UNIX 和 Linux 操作系统的列表,请参阅 GBase 8s 机器
说明。
重要: 以下需求可能会低于系统的需求,这取决于操作系统和环境。
Client SDK 安装需要大约 200 MB 的磁盘空间,GBase 8s Connect 安装需要大约 175
MB 的磁盘空间。
安装需要大约 512 MB RAM。
在 UNIX 或 Linux 上安装之前,
请确保临时目录
(缺省情况下为 /tmp)
中具有 1
GB 的
可用空间。
这样做是为了支持安装介质的解压以及安装程序的运行。
在调用安装程序之
前,可以通过将 IATEMPDIR 环境变量设置为包含足够存储空间的位置来更改此位置。
如果缺省临时位置中的空间不足,安装程序会尝试将信息写入用户帐户的主目录。
注意:

GBase 8s 客户机产品安装指南
南大通用数据技术股份有限公司 - 15 -
 $GBASEDBTDIR 路径(包含路径分隔符)不能超过 200 个字符。
 Client SDK 不支持 RPM 安装。
提示: 请勿使用 back 或 quit 作为 $GBASEDBTDIR 路径中的字符串,也不要将其用在 UNIX
或 Linux 上的任何 GBase 8s 产品安装配置设置(包括密码)中。
使用以下方法在 UNIX 或 Linux 上安装 GBase 8s Client Software Development Kit
(Client SDK)和 GBase 8s Connect:
 安装应用程序
 命令行
 GBase 8s 安装程序
同时查看各产品手册,了解本出版物中未涉及的安装和配置任务。
仅按照 GBase 的许可安装 GBase
8s 产品。
在未重新注册且未获 GBase 书面同意的情
况下,不能将软件从一台计算机转移到另一台计算机或网络的其他部分。

-- /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_tw_buckets = 20000
net.ipv4.tcp_mem = 94500000
915000000
927000000
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
kernel.core_uses_pid = 1
net.core.netdev_max_backlog = 262144
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.somaxconn = 32767
net.core.wmem_default = 8388608

GBase 8a MPP Cluster 最佳实践
6 附录
文档版本(2022-02-11)
南大通用数据技术股份有限公司
183
net.core.wmem_max = 16777216
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_sack = 1
net.ipv4.ip_local_reserved_ports = 5050,5258,5288,6666,6268
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_wmem = 4096 16384 4194304
vm.vfs_cache_pressure = 1024
vm.swappiness = 1
vm.overcommit_memory = 0
vm.zone_reclaim_mode = 0
vm.min_free_kbytes = 101680
-- /etc/security/limits.conf
gbase
soft
nofile
655360
gbase
hard
nofile
655360
gbase
soft
sigpending
unlimited
gbase
hard
sigpending
unlimited
gbase
soft
nproc
unlimited
gbase
hard
nproc
unlimited
-- /etc/security/limits.d/*-nproc.conf
#*
soft
nproc
4096
root
soft
nproc
unlimited