GBASE南大通用-GBase 8s数据库日志模式及切换

一、  GBase 8s数据库共有以下 4 种日志模式:无日志模式、缓冲日志模式、无缓冲日志模式、ANSI 模式。详细介绍如下:

1、无日志模式(Non logging):

采用无日志模式时,所有 DML 操作都不会被记录到日志中,只记录 DDL 操作,且这些操作影响的行并不会被写入日志,只记录操作本身以及返回的代码。该模式的优点是极大地减少了磁盘 I/O,拥有很高的吞吐率,但在该模式下数据库不支持事务控制,当数据库失败时,也无法进行恢复。

创建 无日志模式 数据库的语句,没有with log语句

CREATE DATABASE nologdb;

此种数据库不允许事务相关的使用语句,以下语句无效:

BEGIN WORK; COMMIT WORK; ROLLBACK WORK;

RELEASE SAVEPOINT; ROLLBACK TO SAVEPOINT;

SET IMPLICIT TRANSACTION; SET LOG; SET ISOLATION

部分事务语句实际操作如下:

> BEGIN WORK;

  256: Transaction not available.

Error in line 1

Near character position 9

2、缓冲日志模式(buffered logging)

采用缓冲日志模式时,所有操作在发生时被写到缓冲区中,当缓冲区被写满之后或者发生检查点操作才会回写到磁盘。该模式的优点是可以大大减少磁盘的 I/O,从而提高数据库的性能。但是当系统发生问题需要进行恢复时,缓冲区内的数据将丢失。这些数据是无法恢复的。

创建 缓冲日志模式 数据库的语句:

CREATE DATABASE bufferdb WITH BUFFERED LOG;

3、无缓冲日志模式(Unbuffered logging):

当采用无缓冲日志模式时,所有操作在发生时被写到缓冲区中,当事务被提交时立刻回写到磁盘。该模式的优点是当系统发生问题时可以保证数据丢失最少,数据完整性和一致性可以在事务级得到保证。但是增加了磁盘的I/O,使得数据库的性能受到一定的影响。

创建 无缓冲日志模式 数据库的语句:

CREATE DATABASE nobufferdb WITH LOG;

4、ANSI模式:

创建的数据库就是兼容ANSI的数据库,且符合 SQL 语言的 ANSI/ISO 标准。ANSI模式和无缓冲日志模式基本相同,此外还强制要求与 ANSI 模式的事务处理方式一致。

创建 ANSI模式 数据库的语句:

CREATE DATABASE ansidb WITH LOG MODE ANSI

二、  检查数据库日志模式方法

通过sysmaster库下的sysdatabases表检查相关字段,例如检查无日志模式数据库nologdb的日志模式:

图片

相关字段解释:

图片

三、 更改日志模式的影响

数据库服务器在更改日志记录状态时对数据库加上互斥锁定以防止其他用户访问该数据库,而当更改完成时释放该锁定。

如果在日志记录方式更改期间发生故障,那么在复原数据库服务器数据后,请检查 sysmaster 数据库的 sysdatabases 表内标志中的日志记录方式。

在选择了已缓冲或未缓冲日志记录之后,应用程序就可以使用 SQL 语句 SET LOG 从一种日志记录方式更改为另一种日志记录方式。此更改在会话期间会一直持续。

如果向数据库添加日志记录,那么直至数据库的所有存储空间的下一次 0 级备份才完成该更改。

四、GBase 8s数据库改变日志模式的方法共有以下 4 种:

1、ontape命令

2、ondblog命令

3、SET LOG 语句

4、Admin API SQL method:Execute function admin('alter logmode', 'dbname','n/u/b/a');

1、ontape命令:

可以使用 ontape 的–A、–B、–N 和–U 选项来修改数据库日志模式。

$>ontape -s -B:修改为缓冲日志模式。

$>ontape -s -U:修改为无缓冲日志模式。

$>ontape -s -N:修改为无日志模式。

$>ontape -s -A:修改为 ansi logging 模式,从这个模式无法切换到其他模式,因此一般不使用该项。

使用注意事项:

在将数据库从不记录日志切换为记录日志时,-A、-B、-U 选项必须同-s选项一起使用,并需要备份。

图片

如果将日志方式在缓冲日志模式和无缓冲日志模式之间切换,则不需要-s选项

图片

在切换数据库的日志方式时,服务器会对数据库加一个独占锁,因此此时用户不能使用这个数据库,否则将会报告错误。可以通过 onstat -g sql 查询哪些用户正在使用数据库并通过 onmode -z 命令杀死相关线程。

图片

ontape 还可以通过一个命令同时修改多个数据库的日志方式。例如:将bufferdb数据库从缓冲日志模式切换为无日志模式,将nologdb和nologdb2数据库从无日志模式修改为缓冲日志模式。

图片

ANSI日志模式的数据库无法进行切换,会报错。

图片

2、ondblog命令:

可以通过 ondblog 命令来修改一个或多个数据库的日志模式。此外需要注意的是,在向数据库添加日志时,必须在修改生效之前创建一个 level-0 备份。

将数据库设置为无缓冲日志、缓冲日志:

ondblog unbuf

ondblog buf

图片

将数据库设置为不记录日志:

ondblog nolog

图片

将 dbfile 中记录的所有数据库设置为不记录日志:

ondblog nolog -f dbfile

图片

将数据库设置为 ANSI 兼容模式:

onbdlog ansi

图片

3、SET LOG 语句:

使用 SET LOG 语句来将您的数据库日志记录模式从缓冲的事务日志记录更改为未缓冲的事务日志记录,反之亦然。

语法:

图片

SET LOG语句仅定义当前会话的模式。不会更改ondblog设置的缺省模式。

图片

符合 ANSI 的数据库不可使用缓冲的日志记录,下例中ansidb是ANSI数据库。

图片

在Non logging数据库中使用SET LOG语句无效,下例中nologdb是Non logging数据库。

图片

 4、Admin API SQL method:

sysadmin 数据库中有一个admin函数,可以更改数据库模式,可使用如下执行语句:

Execute function admin('alter logmode', 'dbname','n/u/b/a');

图片

在向数据库添加日志时,必须在修改生效之前创建一个 level-0 备份,也就是说通过admin将无日志模式修改为其他日志模式后,要使用ontape语句进行备份后才会生效。

图片

其他模式之间的转换:

图片

五、  检查数据库日志模式方法

通过sysmaster库下的sysdatabases表检查相关字段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/309715.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day52 算法训练|动态规划part13

参考:代码随想录 300.最长递增子序列 1. dp[i]的定义 本题中,正确定义dp数组的含义十分重要。 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 为什么一定表示 “以nums[i]结尾的最长递增子序” ,因为我们在 做 递增比较的时…

C语言课程设计参考题目

一、工资管理系统 需求分析 工资信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能,提供显示、排序操作;而查询功能要求实现查找操作;另外还应该提供键盘式选择菜单以实现功能选择。 2、总体设计 整个系统可…

【JavaEE】多线程(7) -- 线程池的概念和简单实现

目录 1.线程池是什么 2.标准库中的线程池 2.1ThreadPoolExecutor 2.2构造方法参数介绍 2.3拒绝策略(面试易考) 2.4Executor的使用 3.实现线程池 1.线程池是什么 线程池是一种用来管理线程的机制,它可以有效地控制线程的创建、复用和销毁,从而提高程…

PathWave Device Modeling (IC-CAP) 建模系统——IC-CAP概述

建模系统 PathWave Device Modeling(IC-CAP)建模系统用于测量半导体器件并分析器件的电路建模特性以及分析所得数据。 要使用PathWave Device Modeling(IC-CAP),您需要以下设置: 一台工作站执行直流、电…

Python编程技巧 – format格式化文本

Python编程技巧 – format格式化文本 Python Programming Essentials - Using format() to format texts By JacksonML 本文简要介绍Python语言的format()方法(也即函数)相关实例和技巧,希望对读者有所帮助。 1. format定义和方法 forma…

CCNP课程实验-Route_Path_Control_CFG

目录 实验条件网络拓朴需求 配置实现基础配置需求实现1.A---F所有区用Loopback模拟,地址格式为:XX.XX.XX.XX/32,其中X为路由器编号。根据拓扑宣告进对应协议。A1和A2区为特例,A1:55.55.55.0/24,A2&#xff…

LOAM: Lidar Odometry and Mapping in Real-time 论文阅读

论文链接 LOAM: Lidar Odometry and Mapping in Real-time 0. Abstract 提出了一种使用二维激光雷达在6自由度运动中的距离测量进行即时测距和建图的方法 距离测量是在不同的时间接收到的,并且运动估计中的误差可能导致生成的点云的错误配准 本文的方法在不需要高…

MendelianRandomization | 孟德尔随机化神包更新啦!~(一)(小试牛刀)

1写在前面 今天发现MendelianRandomization包更新v0.9了。😜 其实也算不上更新。🫠 跟大家一起分享一下这个包做MR的用法吧。🤩 还有一个包就是TwoSampleMR,大家有兴趣可以去学一下。😅 2用到的包 rm(list ls())# ins…

第七课:计算机网络、互联网及万维网(WWW)

第七课:计算机网络、互联网及万维网(WWW) 第二十八章:计算机网络1、局域网 Local Area Networks - LAN2、媒体访问控制地址 Media Access Control address - MAC3、载波侦听多路访问 Carrier Sense Multiple Access - CSMA4、指数…

【openlayers-3】加载图标

目录 1、通过overlay方式添加 2、通过overlay css方式 3、通过Feature style方式实现 在OpenLayer3中添加图标有两种方式&#xff0c;一种是通过overlay方式&#xff0c;另一种是通过Feature Style的方式。 1、通过overlay方式添加 <div id"mapCon" styl…

阶段性复习(三)

if后面是赋值符&#xff0c;所以最后的值是a for&#xff08;&#xff1b; &#xff1b;&#xff09;是死循环 大小写转换 在这道题中&#xff0c;通过分析可知&#xff0c;在小写转换大写的过程中&#xff0c;需要满足的条件是word0&#xff0c;同时是小写&#xff0c;而在第…

基于中微89F2265B的200w智能电饭煲

大三暑假的时候&#xff0c;小组三人从零设计了一个智能电饭煲项目 文章目录 一、主要功能二、硬件设计2.1 控制板2.2 电源板 三、软件设计3.1 总体框架3.2 功能细化3.2.1 开机3.2.2 各按键功能3.2.3 电饭煲定时与预约功能3.2.4 电饭煲加热功能3.2.5 其他说明 3.3 主流程图3.4 …