长事务的理解和预防

        我们常常听说数据库发生了“长事务”而导致很严重的后果。那么何为长事务?长事务是如何产生的?长事务对数据库有什么影响?如何防止长事务的产生?以下对这几方面进行阐述和说明,以加深对SinoDB长事务的理解。

1.什么是长事务

  长事务,顾名思义就是一个事务(transaction)执行了很长时间仍未结束。那么一个事务执行多长时间算是长事务?对于SinoDB数据库来说占用逻辑日志个数的百分比达到长事务高水位线就被定义为一个长事务。

2.事务的控制

  事务的开始和结束,以“begin”为开始,以“commit”或“rollback”结束。“commit”表明事务执行成功,对数据库所做的修改已经生效,“rollback”则说明事务执行失败,对数据库的所有操作均需要撤销,恢复到事务执行之前的状态。为了使事务能被撤销,数据库也必须对所有操作及被修改前的数据进行日志记录,以便撤销时能够执行逆向操作,将数据恢复到以前的状态。

3.对日志的使用和影响

  为了防止数据库因日志资源耗尽发生阻塞,SinoDB设置了长事务高水位线(LTXHWM)和独占的长事务高水位线(LTXEHWM),当一个事务占用日志个数的百分比达到长事务高水位线LTXHWM就被标识为一个长事务,并自动触发回滚操作,当百分比达到独占的长事务高水位线时,其它会话均进入阻塞状态,只进行长事务回滚操作。

4.长事务产生的几种原因

  在SinoDB数据库中,长事务现象发生的原因主要有:

1) 逻辑日志参数设置不合理,日志个数太少或长事务高水位线LTXHWM太低;

2) 数据库并发很高,事务的粒度太粗,长时间不能提交,最终触及长事务高水位线;

3) 事务启动后,未使用commit或rollback来终止事务;

4) 大表连接插入目标表,连接条件不正确产生笛卡尔集,结果集超出预期,长时间不能处理完成;

5) 使用临时表装载大量数据,未指定with no log子句,也未设置TEMPTAB_NOLOG参数。

5.如何避免长事务

  长事务带来的后果是严重的,虽然在长事务发生时可以通过手工添加逻辑日志方式来挽救,但是及时性难以保证。不过长事务也是可以避免的,具体可以从以下几点做起:

1) 根据并发用户数和业务量合理设置逻辑日志大小和个数,保证大部分事务能正常完成;

2) 适当调低长事务高水位线LTXHWM,确保在长事务发生时有足够的日志文件用于回滚;

3) 设置参数DYNAMIC_LOGS为2,当无可用日志文件时会自动增加,需要注意的是日志并不是在事务到达LTXHWM之后就开始增加;

4) 合理控制事务的颗粒度,将大事务分割为小事务进行多次提交批量处理,减少单个事务处理时间,提高逻辑日志资源利用率;

5) 事务操作闭环,事务开始之后必须结束,尽量避免回滚,减少对日志和锁的消耗;

6) 大表进行连接时,尽量保证连接条件唯一,避免产生笛卡尔集,避免产生事务日志;

7) 在创建临时表应加上with no log字句,或将数据库参数TEMPTAB_NOLOG指定为1。

更多信息内容请移步星瑞格官方社区,期待大家加入
Sinoregal Tech ForumAsk questions, share solutions, and get to know the Sinoregal community.icon-default.png?t=N7T8https://forum.sinoregal.cn/

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

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

相关文章

Python-VBA函数之旅-super函数

目录 一、super函数的常见应用场景 二、super函数使用注意事项 三、如何用好super函数? 1、super函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://myelsa1024.blog.csdn.net/ 一、su…

AI代理和AgentOps生态系统的剖析

1、AI代理的构成:AI代理能够根据用户的一般性指令自行做出决策和采取行动。 主要包含四个部分: (1)大模型(LLM) (2)工具:如网络搜索、代码执行等 (3&#x…

探索未来:IT行业的革新脉动与明日图景

你眼中的IT行业现状与未来趋势 随着技术的不断进步,IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链,这些技术正在重塑我们的生活和工作方式。你眼中IT行业的现状及未来发展趋势是怎么样的&#xf…

开散列哈希桶

通过上面这幅图,读者应该能较为直观地理解何为开散列,以及闭散列与开散列的区别在哪里 —— 数据的存储形式不同,至于其他的,如确定每个元素的哈希地址等一概相同。 与闭散列相比,开散列能够更好地处理发生冲突的元素 …

Taro + React + Tailwind 开发微信小程序问题汇总(持续更新中...)

搞小程序也有两周了,踩了很多坑,有些问题很难搜索到,在这里记录一下问题和自己的解决方案,希望能帮助到需要的小伙伴~ 1. 真机调试报错:Error: module ‘babel/runtime/helpers/Arrayincludes.js’ is not …

Transformers 加速的一些常用技巧

Transformers 是一个强大的架构,但模型因其采用的自注意力机制,虽然能够有效地处理序列数据并捕获长距离依赖关系,但同时也容易导致在训练过程中出现OOM(Out of Memory,内存不足)或者达到GPU的运行时限制。…

AI大模型探索之路-训练篇22: ChatGLM3微调实战-从原理到应用的LoRA技术全解

系列篇章💥 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概…

MPLAB X IDE编译attiny1616工程报错却无报错信息

MPLAB X IDE(XC-8编译器)编译报错,无具体错误内容,仅显示需要xc-8 pro的警告。 内存占用率显示为81%,未超标。 原因:软件使用了microchip的bootloader功能。应用程序起始地址(也是bootloader结束地址)设置错…

社交巨头:探索Facebook的震撼力量

Facebook作为社交媒体领域的巨头,不仅在数字化社会中占据着重要地位,更是影响了人们的生活、工作和社交方式。本文将深入探索Facebook的震撼力量,从多个角度解读其在当今社会中的重要性和影响。 1. 全球用户覆盖的壮观规模 Facebook作为全球…

软件定义汽车七大典型应用场景

随着软件定义汽车典型应用场景的落地,用户将明显体验到汽车从交通工具向智能移动终端的转变。几十年前主要用高性能的底盘操稳与动力系统定义一台好车,几年前主要用智能化系统与智能交互满足终端用户的用车体验,未来将调度全车传感器与数据驱…

c 数组遍历

#include <stdio.h> #include <stdlib.h> int main() { printf(“指针数组练习&#xff01;&#xff01;&#xff01;\n”); /* 数组名就是数组的首地址 数组存在一段连续的内存空间中 */ double score[] {60, 70, 80, 90, 100}; double *ptr_score; i…

docker安装时报错:Error: Nothing to do

安装docker时报以下错误 解决方法&#xff1a; 1.下载关于docker的相关依赖环境 yum -y install yum-utils device-mapper-persistent-data lvm22.设置下载Docker的镜像源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3…

FMEA存在的五个主要不足及改进措施——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 在制造业和产品设计领域&#xff0c;失效模式与影响分析&#xff08;Failure Modes and Effects Analysis&#xff0c;简称FMEA&#xff09;被广泛运用&#xff0c;用于预防潜在的设计或制造缺陷。然而&#xff0c;尽管FMEA在风险管理方面发挥…

开发者集结号:大湾区 Open Source Day 邀您共探技术前沿

开源技术正以其开放、协作的特性&#xff0c;引领着软件开发的新潮流&#xff0c;是推动社会进步的重要力量。作为开发者&#xff0c;您是否渴望深入了解开源项目的前沿动态&#xff1f;由ALC深圳与2024中国互联网发展创新与投资大赛联合举办、FISCO金链盟深度参与的大湾区 Ope…

MySQL————创建存储过程函数

存储过程使用大纲 有参数传递 delimiter $$ 声明一个名称为get_student_introduce create procedure add_student_infor( in p_userName VARCHAR(20),in p_phone VARCHAR(11),in p_sex char(2),in p_introduce VARCHAR(255)) 开始操作 BEGIN 撰写真正在操作DMLDQL都行 INSE…

CSS---复合选择器、元素显示模式和背景(三)

一、CSS的复合选择器 1.1 什么是复合选择器 在CSS中&#xff0c;可以根据选择器的类型把选择器分为基础选择器和复合选择器&#xff0c;复合选择器是建立在基础选择器之上&#xff0c;对基本选择器进行组合形成的。 复合选择器是由两个或多个基础选择器连写组成&#xff0c;它…

SpringBoot3和SpringBoot2分别整合knife4j(openApi)

文章目录 一、SpringBoot2进行整合knife4j1.1 导入依赖1.2 配置knife4j 配置文件1.3 可以在接口上配置 注解进行信息的配置 二、SpringBoot3 整合kinfe4j(openApi)2.1 导入依赖2.2 yaml配置文件2.3 swagger初始化配置2.4 创建接口 一、SpringBoot2进行整合knife4j 1.1 导入依赖…

【云原生】kubernetes核心组件

引言&#xff1a; Kubernetes 是为运行分布式集群而建立的&#xff0c;分布式系统的本质使得网络成为 Kubernetes 的核心和必要组成部分&#xff0c;了解 Kubernetes 网络模型可以使你能够正确运行、监控和排查应用程序故障。 一、Kubernetes的核心组件 1.1、Master组件 1.1.…

基于Springboot+Vue的Java项目-农产品直卖平台系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…