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

2023-12-30 18:52

本文主要是介绍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表检查相关字段。

这篇关于GBASE南大通用-GBase 8s数据库日志模式及切换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/553721

相关文章

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window