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

2023-09-22 monetdb-事务管理-乐观并发控制-记录

摘要:

2023-09-22 monetdb-事务管理-记录

相关文档:

Transaction Management | MonetDB Docs

https://en.wikipedia.org/wiki/Optimistic_concurrency_control

monetdb事务管理:

MonetDB/SQL 支持以 START TRANSACTION 标记并以 COMMIT 或 ROLLBACK 关闭的多语句事务方案。如果每个 SQL 语句应被视为独立事务,则可以将会话变量 AUTOCOMMIT 设置为 true(默认)。

在AUTOCOMMIT模式下,可以使用START TRANSACTION和COMMIT/ROLLBACK来指示包含多个SQL语句的事务。在这种情况下,AUTOCOMMIT 由 START TRANSACTION 自动禁用,并由 COMMIT 或 ROLLBACK 重新启用。

如果 AUTOCOMMIT 模式为 OFF,则 START TRANSACTION 是隐式的,您应该只使用 COMMIT/ROLLBACK。

警告:事务管理方案基于乐观并发控制。它为每个事务提供了数据库的一致视图,但更新被收集在事务提交时处理的附录中。如果在提交时可以确保准备更新影响表的数据同时没有更改,则结果将被合并。否则交易将中止。这种乐观并发方案对于查询主导环境特别有用。它会对长时间运行的事务产生负面影响,这些事务同时受到其基础表更新的影响。对于尝试从单个应用程序中的多个线程执行并发更新的应用程序也是如此。它们应该由应用程序在内部序列化,以避免意外的事务中止。

乐观并发控制可能会让那些构建在线事务应用程序的人感到困惑,因为并发控制方案的粒度将显示比预期更高的事务失败。没有锁定模式可以避免这种情况。应用程序可能必须诉诸串行执行。

被删除的元组仅被标记为这样。它们不会减小表的大小。您甚至会在多次更新后遇到查询运行速度变慢的情况,因为每个查询首先必须通过检查删除/更新列表在数据库上建立一致的私有视图。它需要在后台使用真空清洁算法,但目前尚不可用。

使用可选的事务模式或隔离级别启动事务和本地事务(关闭自动提交)。

SET TRANSACTION
| SET_LOCAL_TRANSACTION[ READ ONLY | READ WRITE | ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE } |DIAGNOSTICS _sqlSize_ ]

使用可选的事务模式或隔离级别启动本地事务(关闭自动提交)

 | { START | BEGIN } TRANSACTION[ READ ONLY | READ WRITE | ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE } | DIAGNOSTICS _sqlSize_ ]</pre>

禁用自动提交并启动用户控制的事务

注意:事务还可以包含数据定义 (DDL) 命令,例如 CREATE、ALTER、DROP。

 | COMMIT [ WORK ] [ AND [ NO ] CHAIN ]| ROLLBACK [ WORK ] [ AND [ NO ] CHAIN ]| SAVEPOINT savepoint_id_name| ROLLBACK [ WORK ] [ AND [ NO ] CHAIN ] TO SAVEPOINT savepoint_id_name| RELEASE SAVEPOINT savepoint_id_name

您需要先启动一个事务,然后才能使用保存点 使自事务启动以来完成的所有更改持久化

例子
SET TRANSACTION;
ROLLBACK;
SET TRANSACTION READ ONLY;
ROLLBACK;
SET TRANSACTION READ WRITE;
ROLLBACK;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
ROLLBACK;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
ROLLBACK;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
ROLLBACK;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
ROLLBACK;

乐观并发控制

乐观并发控制OCC)也称为乐观锁定,是一种应用于关系数据库管理系统、软件事务内存等事务系统的并发控制方法。OCC 假设多个交易可以频繁完成而不会相互干扰。运行时,事务使用数据资源而不获取这些资源的锁。在提交之前,每个事务都会验证没有其他事务修改了它所读取的数据。如果检查发现冲突的修改,则提交事务将回滚并可以重新启动。[1]乐观并发控制由HT Kung和 John T. Robinson于 1979 年首次提出。[2]

OCC 一般用于数据争用较少的环境。当冲突很少时,事务可以完成,而无需管理锁的费用,也无需事务等待其他事务的锁清除,从而比其他并发控制方法具有更高的吞吐量。然而,如果数据资源的争用频繁,则重复重新启动事务的成本会显着损害性能,在这种情况下,其他并发控制方法可能更适合。然而,基于锁定(“悲观”)的方法也会带来较差的性能,因为即使避免了死锁,锁定也会极大地限制有效并发性。

乐观并发控制的阶段[编辑]

乐观并发控制事务涉及以下阶段:[2]

  • Begin:记录标记事务开始的时间戳。
  • 修改:读取数据库值,并暂时写入更改。
  • Validate:检查其他事务是否修改了本事务已使用(读或写)的数据。这包括在此事务开始时间之后完成的事务,以及(可选)在验证时仍处于活动状态的事务。
  • Commit/Rollback:如果没有冲突,则使所有更改生效。如果存在冲突,通常通过中止事务来解决它,尽管其他解决方案也是可能的。必须小心避免检查时间到使用时间错误,特别是如果此阶段和前一阶段不是作为单个原子操作执行的。

例子[编辑]

  • MediaWiki的编辑页面使用 OCC。[4]
  • Bugzilla使用 OCC;编辑冲突称为“空中冲突”。[5]
  • Ruby on Rails框架有一个用于 OCC 的 API。[6]
  • Grails框架在其默认约定中使用 OCC 。[7]
  • GT.M数据库引擎使用 OCC 来管理事务[8](甚至单个更新也被视为小型事务)。
  • Microsoft的实体框架(包括 Code-First)内置了对基于二进制时间戳值的 OCC 的支持。[9]
  • Mimer SQL是一种仅实现乐观并发控制的DBMS 。[10]
  • Google App Engine数据存储使用 OCC。[11]
  • Apache Solr搜索引擎通过 _version_ 字段支持 OCC。[12]
  • Elasticsearch搜索引擎通过版本属性支持 OCC 。[13]
  • CouchDB通过文档修订的方式实现OCC。[14]
  • MonetDB面向列的数据库管理系统的事务管理 方案是基于OCC的。[15]
  • 大多数软件事务内存的实现都使用 OCC。[需要引用]
  • Redis通过WATCH命令提供OCC。[16]
  • Firebird使用多代架构作为 OCC 的数据管理实现。[需要引用]
  • DynamoDB使用条件更新作为 OCC 的实现。[17]
  • Kubernetes在更新资源时使用 OCC。[18]
  • YugabyteDB是一个主要使用OCC的云原生数据库。[19]
  • Firestore是Firebase的 NoSQL 数据库,在其事务中使用 OCC。

相关文章:

2023-09-22 monetdb-事务管理-乐观并发控制-记录

摘要: 2023-09-22 monetdb-事务管理-记录 相关文档: Transaction Management | MonetDB Docs https://en.wikipedia.org/wiki/Optimistic_concurrency_control monetdb事务管理: MonetDB/SQL 支持以 START TRANSACTION 标记并以 COMMIT 或 ROLLBACK 关闭的多语句事务方案。如果…...

蓝桥等考Python组别四级008

第一部分:选择题 1、Python L4 (15分) 字符“D”的ASCII码值比字符“F”的ASCII码值小( )。 1234正确答案:B 2、Python L4 (15分) 下面的Python变量名正…...

SpringMVC 学习(二)Hello SpringMVC

3. Hello SpringMVC (1) 新建 maven 模块 springmvc-02-hellomvc (2) 确认依赖的导入 (3) 配置 web.xml <!--web/WEB-INF/web.xml--> <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee…...

交换机之间配置手动|静态链路聚合

两台交换机&#xff0c;配置链路聚合&#xff1a; 1、禁止自动协商速率&#xff0c;配置固定速率 int G0/0/1 undo negotiation auto speed 100int G0/0/2 undo negotiation auto speed 100 2、配置eth-trunk int eth-trunk 1 mode manual | lacp-staticint G0/0/1 eth-trun…...

Shiro高级及SaaS-HRM的认证授权

Shiro在SpringBoot工程的应用 Apache Shiro是一个功能强大、灵活的&#xff0c;开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。越来越多的企业使用Shiro作为项目的安全框架&#xff0c;保证项目的平稳运行。 在之前的讲解中只是单独的使用shiro&…...

eclipse svn插件安装

1.进入eclipse的help->Eclipse Marketplace,如下图所示&#xff1a; 2.输入“svn”,再按回车&#xff0c;如下图&#xff1a; 3.这我选择的是 Subversive,点击后面的“install”按钮&#xff0c;如下图 Eclipse 下连接 SVN 库有两种插件 —— Subclipse 与 Subversive &…...

C语言 cortex-A7核 UART总线 实验

一、C 1&#xff09;uart4.h #ifndef __UART4_H__ #define __UART4_H__ #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h&quo…...

不同走向地下管线的地质雷达响应特征分析

不同走向地下管线的地质雷达响应特征分析 前言 以PVC管线为例&#xff0c;建立不同走向&#xff08;水平倾斜、垂直倾斜、水平相邻&#xff09;的三维管线地质模型&#xff0c;进行三维地质雷达数据模拟&#xff0c;分析不同走向地下管线的地质雷达响应特征。 文章目录 不同…...

Nginx负载均衡详解

一、负载均衡介绍 1、负载均衡的定义 单体服务器解决不了并发量大的请求&#xff0c;所以&#xff0c;我们可以横向增加服务器的数量&#xff08;集群&#xff09;&#xff0c;然后将请求分发到各个服务器上&#xff0c;将原先请求集中到单个服务器上的情况改为将请求分发到多…...

基于Spring Boot的宠物咖啡馆平台的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 看护师信息管理 宠物寄养管理 健康状况管理 点单 宠物体验 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已…...

TYVJ P1026 犁田机器人

描述 Farmer John為了让自己从无穷无尽的犁田工作中解放出来&#xff0c;於是买了个新机器人帮助他犁田。这个机器人可以完成犁田的任务&#xff0c;可惜有一个小小的缺点&#xff1a;这个犁田机器人一次只能犁一个边的长度是整数的长方形的田地。 因為FJ的田地有树和其他障碍…...

软件测试面试经验分享,真实面试题

前言 本人普通本科计算机专业&#xff0c;做测试也有3年的时间了&#xff0c;讲下我的经历&#xff0c;我刚毕业就进了一个小自研薪资还不错&#xff0c;有10.5k&#xff08;个人觉得我很优秀&#xff09;&#xff0c;在里面呆了两年&#xff0c;积累了一些的经验和技能&#…...

计算机网络 - 链路层

计算机网络 - 链路层 计算机网络 - 链路层 基本问题 1. 封装成帧2. 透明传输3. 差错检测 信道分类 1. 广播信道2. 点对点信道 信道复用技术 1. 频分复用2. 时分复用3. 统计时分复用4. 波分复用5. 码分复用 CSMA/CD 协议PPP 协议MAC 地址局域网以太网交换机虚拟局域网 基本问题…...

5.wifi开发【智能家居:上】,开发准备:智能开关灯,智能采集温湿,智能调彩灯

一。wifi智能家居项目开发 【开发准备1】&#xff1a;继电器控制开发 1.智能开关 器件准备&#xff1a;wifi&#xff08;esp8266&#xff0c;使用CP2102&#xff09;继电器 结果&#xff1a; 2.继电器工作原理 &#xff08;1&#xff09;继电器是一种自动电气开关 &#xff…...

26523-2022 精制硫酸钴 随笔练习

声明 本文是学习GB-T 26523-2022 精制硫酸钴. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了精制硫酸钴的要求、试验方法、检验规则、标志、标签、包装、运输和贮存。 本文件适用于精制硫酸钴。 注&#xff1a;该产品主要用于…...

企业该如何选择数字化转型工具?_光点科技

随着科技的不断进步和数字化的浪潮席卷全球&#xff0c;企业数字化转型已经成为了保持竞争力和持续增长的关键因素之一。无论企业规模大小&#xff0c;数字化转型都可以提高效率、降低成本、改善客户体验&#xff0c;从而实现更好的业务结果。然而&#xff0c;要成功进行数字化…...

算法与数据结构-Trie树

文章目录 什么是“Trie 树”&#xff1f;如何实现一棵 Trie 树&#xff1f;Trie 树真的很耗内存吗&#xff1f;Trie 树与散列表、红黑树的比较 什么是“Trie 树”&#xff1f; Trie 树&#xff0c;也叫“字典树”。顾名思义&#xff0c;它是一个树形结构。它是一种专门处理字符…...

语音助手开发小记(2023.9.25)

通道问题 在使用函数swr_alloc_set_opts给SwrContext传递输入输出的音频参数时&#xff0c;需要设置通道&#xff0c;这里通道为2&#xff0c;但是通道布局不能传递2.比如AV_CH_LAYOUT_STEREO 实际值为3 如果要计算通道布局的通道数使用函数av_get_channel_layout_nb_channels…...

FastestDet---模型训练

代码:https://github.com/dog-qiuqiu/FastestDet 一、构造数据集 数据集格式YOLO相同,每张图片对应一个txt标签文件。标签格式:“category cx cy wh”,category为类别id,cx, cy为归一化标签框中心点的坐标,w, h为归一化标签框的宽度和高度, .txt标签文件内容示例如下: 0…...

基于SpringBoot的医院管理系统

目录 前言 一、技术栈 二、系统功能介绍 病床信息管理 药房信息管理 个人中心管理 药房信息 病床类别 科室信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网信息的飞速发展&#xff0c;医院也在创建着属于自己的管理系统。本文介…...

java图片转pdf ,pdf 导出

pom引入jar <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.0-RC2</version></dependency> 转pdf方法 /*** 使用pdfbox将jpg转成pdf** throws IOException IOException*/pu…...

掌握Go的运行时:从编译到执行

目录 一、Go运行编译简介Go语言的目标和设计哲学运行时环境编译过程小结 二、执行环境操作系统与硬件层系统调用&#xff08;Syscalls&#xff09;虚拟内存 Go运行时&#xff08;Runtime&#xff09;Goroutine调度器内存管理和垃圾收集网络I/O代码示例&#xff1a;Go运行时调度…...

打造香港最安全便捷的银行,众安银行发布首份技术白皮书

作者&#xff1a;林海宾&李龙 作为香港金融科技的代表&#xff0c;香港虚拟银行通过科技驱动&#xff0c;为客户提供了安全、便捷、普惠的金融服务。在八间持牌的虚拟银行中&#xff0c;众安银行目前在用户数量、存款、资产和收入规模上均处于领先水平。最快120秒线上开户…...

Spring实现简单的Bean容器

1.BeanDefinition&#xff0c;用于定义 Bean 实例化信息&#xff0c;现在的实现是以一个 Object 存放对象 public class BeanDefinition {/*** bean对象*/private Object bean;/*** 存放 &#xff08;定义&#xff09;Bean 对象*/public BeanDefinition(Object bean) {this.bea…...

Python15题day13

③continue的好处 break是跳出循环体&#xff0c;continue是跳过continue语句后面的代码块&#xff0c;循环并不停止 题目要求: 使用input函数接受用户的输入&#xff0c;如果用户输入的数值小于等于10&#xff0c;则判断是奇数还是偶数如果数值大于10&#xff0c;则输出“输入…...

聊聊并发编程——多线程之AQS

目录 队列同步器&#xff08;AQS&#xff09; 独占锁示例 AQS之同步队列结构 解析AQS实现 队列同步器&#xff08;AQS&#xff09; 队列同步器AbstractQueuedSynchronizer&#xff08;以下简称同步器&#xff09;&#xff0c;是用来构建锁或者其他同步组 件的基础框架&…...

DE0开发板交通灯十字路口红绿灯VHDL

名称&#xff1a;基于DE0开发板的交通灯十字路口红绿灯 软件&#xff1a;Quartus 语言&#xff1a;VHDL 要求&#xff1a; 设计一个十字路口交通信号灯的控制电路。分为两种情况&#xff0c;正常状态和报警状态。 1.正常状态&#xff1a;要求红、绿灯按一定的规律亮和灭&a…...

华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制

华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制 1. 准备工作2. 环境搭建3. 心得总结 1. 准备工作 随着云计算时代的进一步深入&#xff0c;越来越多的中小企业企业与开发者需要一款简单易用、高能高效的云计算基础设施产品来支撑自身业务运营和创新开发。基…...

前端教程-webpack

官网 webpack webpack基础 视频教程 尚硅谷Webpack5入门到原理&#xff08;面试开发一条龙&#xff09;...

white-space几种属性的用法(处理空格)

white-space&#xff1a;normal 文首的空格忽略&#xff0c;文本内部的换行符自动转成了空格。 white-space&#xff1a;nowrap 不换行&#xff0c;即使超出容器宽度 white-space&#xff1a;pre 与原文本一致&#xff0c;空格和换行符保留 white-space&#xff1a;pre-…...

政府网站系统统一/厦门seo公司到1火星

关键字&#xff1a;身份证识别、二代证识别、二代身份证识别、OCR、Android身份证识别、IOS身份证识别、身份证扫描识别、身份证拍照识别 应用背景 随着智能终端&#xff08;智能手机及平板电脑&#xff09;及移动 通信&#xff08;3G&#xff09;的发展&#xff0c;原来运行在…...

粉丝社区网站怎么做/怎么制作网站教程

转载于:https://www.cnblogs.com/QMM2008/p/9628653.html...

网站建设公司能信吗/新媒体seo指的是什么

该方法提交表单的方式与用户单击 Submit 按钮一样&#xff0c;但是表单的 onsubmit 事件句柄不会被调用。 <html><head><title>submit样式的表单</title><style>body { font: 100% 微软雅黑;}#leftblock{position:absolute;width:100px;font: 1…...

外国小孩和大人做网站/正规代运营公司排名

本书的作用 本书会帮助你跨过“原理听起来不错&#xff0c;但还是有点儿新&#xff0c;不太适应”的门槛&#xff0c;从而熟练地编程。 “也许吧&#xff0c;”你可能会想&#xff0c;“可是Lambda、函数式编程&#xff0c;这些不是那些留着胡子、穿着凉鞋的学究们在象牙塔里面…...

网站建设谈业务要知道什么/如何制作百度网页

1.什么是贪心算法 贪心算法是在当前情况下做出的最优决定&#xff0c;它只考虑眼前&#xff0c;获得的是局部的最优解&#xff0c;并且&#xff0c;希望通过每次获得局部最优解最后找到全局的最优解。 2.贪心算法的特点 a.贪心算法并不保证得到最优解&#xff0c;但是&#xff…...

延安市城乡建设局网站/百度收录规则

在controller节点上安装和配置 创建swift的数据库&#xff0c;服务证书和API端点 创建服务证书&#xff1a;启动admin证书&#xff1a;$ source admin-openrc.sh 创建swift用户&#xff1a;<pre>$ keystone user-create --name swift --pass SWIFT_PASS PropertyValueem…...