当前位置: 首页 > news >正文

openGauss学习笔记-90 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用重试中止事务

文章目录

    • openGauss学习笔记-90 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用重试中止事务

openGauss学习笔记-90 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用重试中止事务

在乐观并发控制(OCC)中,在COMMIT阶段前的事务期间(使用任何隔离级别)不会对记录进行锁定。这是一个能显著提高性能的强大优势。它的缺点是,如果另一个会话尝试更新相同的记录,则更新可能会失败。所以必须中止整个事务。这些所谓的更新冲突是由MOT在提交时通过版本检查机制检测到的。

img 说明: 使用悲观并发控制的引擎,如标准Postgres和openGauss基于磁盘的表,当使用SERIALIZABLE或REPEATABLE-READ隔离级别时,也会发生类似的异常中止。

这种更新冲突在常见的OLTP场景中非常少见,在使用MOT时尤其少见。但是,由于仍有可能发生这种情况,开发人员应该考虑使用事务重试代码来解决此问题。

下面以多个会话同时尝试更新同一个表为例,说明如何重试表命令。有关更多详细信息,请参阅“OCC与2PL的区别举例”部分。下面以TPC-C支付事务为例。

int commitAborts = 0; while (commitAborts < RETRY_LIMIT) { try {                         stmt =db.stmtPaymentUpdateDistrict; stmt.setDouble(1, 100); stmt.setInt(2, 1); stmt.setInt(3, 1); stmt.executeUpdate(); db.commit();                      break; }               catch (SQLException se) { if(se != null && se.getMessage().contains("could not serialize access due to concurrent update")) { log.error("commmit abort = " + se.getMessage()); commitAborts++; continue; }else { db.rollback(); } break; } 
}

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

image-20230630163615589

http://www.lryc.cn/news/182690.html

相关文章:

  • 【Docker】搭建 Docker 镜像仓库
  • Python数据攻略-Pandas的数据计算、拼接与可视化
  • 【计算机网络】HTTPS协议详解
  • Septentrio接收机二进制的BDS b2b改正数解码
  • nvm 管理 node版本
  • LeetCode 15.三数之和
  • Linux实用操作(固定IP、进程控制、监控、文件解压缩)
  • Redis高可用之哨兵模式、集群
  • Python数据攻略-DataFrame的创建与基础特性
  • 【word】从正文开始设置页码
  • 计算机网络 快速了解网络层次、常用协议、常见物理设备。 掌握程序员必备网络基础知识!!!
  • CUDA 安装
  • Springboot+vue的在线试题题库管理系统(有报告),Javaee项目,springboot vue前后端分离项目。
  • 【简单的留言墙】HTML+CSS+JavaScript
  • linux 火狐浏览器报错Firefox is already running, but is not responding
  • Python:操作SQLite数据库简单示例
  • 第8期ThreadX视频教程:应用实战,将裸机工程移植到RTOS的任务划分,驱动和应用层交互,中断DMA,C库和中间件处理等注意事项
  • 【NeurIPS 2023】Backdoor对抗攻防论文汇总
  • (Note)在Excel中选中某一行至最后一行的快捷键操作
  • 古记事法:Windows 下 16 位汇编环境搭建指南(DOSBox-X 篇)
  • 云计算基础:理解AWS、Azure和Google Cloud
  • 【数据结构初阶】七、非线性表里的二叉树(堆的实现 -- C语言顺序结构)
  • 基于SpringBoot的网上超市系统
  • 在springboot项目中整合Druid
  • 微信支付费率降低到0.2%,商家收款开户手续费0.6%降低的操作方法
  • 计算机毕业设计 基于SSM的民宿推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 【机器学习】训练集/验证集/测试集释疑
  • LCR 120.寻找文件副本
  • 代码随想录算法训练营第44天|动态规划:完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ
  • 309.买卖股票的最佳时机含冷冻期【Java】