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…...
交换机之间配置手动|静态链路聚合
两台交换机,配置链路聚合: 1、禁止自动协商速率,配置固定速率 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是一个功能强大、灵活的,开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。越来越多的企业使用Shiro作为项目的安全框架,保证项目的平稳运行。 在之前的讲解中只是单独的使用shiro&…...
eclipse svn插件安装
1.进入eclipse的help->Eclipse Marketplace,如下图所示: 2.输入“svn”,再按回车,如下图: 3.这我选择的是 Subversive,点击后面的“install”按钮,如下图 Eclipse 下连接 SVN 库有两种插件 —— Subclipse 与 Subversive &…...
C语言 cortex-A7核 UART总线 实验
一、C 1)uart4.h #ifndef __UART4_H__ #define __UART4_H__ #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h&quo…...
不同走向地下管线的地质雷达响应特征分析
不同走向地下管线的地质雷达响应特征分析 前言 以PVC管线为例,建立不同走向(水平倾斜、垂直倾斜、水平相邻)的三维管线地质模型,进行三维地质雷达数据模拟,分析不同走向地下管线的地质雷达响应特征。 文章目录 不同…...
Nginx负载均衡详解
一、负载均衡介绍 1、负载均衡的定义 单体服务器解决不了并发量大的请求,所以,我们可以横向增加服务器的数量(集群),然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多…...
基于Spring Boot的宠物咖啡馆平台的设计与实现
目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 看护师信息管理 宠物寄养管理 健康状况管理 点单 宠物体验 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已…...
TYVJ P1026 犁田机器人
描述 Farmer John為了让自己从无穷无尽的犁田工作中解放出来,於是买了个新机器人帮助他犁田。这个机器人可以完成犁田的任务,可惜有一个小小的缺点:这个犁田机器人一次只能犁一个边的长度是整数的长方形的田地。 因為FJ的田地有树和其他障碍…...
软件测试面试经验分享,真实面试题
前言 本人普通本科计算机专业,做测试也有3年的时间了,讲下我的经历,我刚毕业就进了一个小自研薪资还不错,有10.5k(个人觉得我很优秀),在里面呆了两年,积累了一些的经验和技能&#…...
计算机网络 - 链路层
计算机网络 - 链路层 计算机网络 - 链路层 基本问题 1. 封装成帧2. 透明传输3. 差错检测 信道分类 1. 广播信道2. 点对点信道 信道复用技术 1. 频分复用2. 时分复用3. 统计时分复用4. 波分复用5. 码分复用 CSMA/CD 协议PPP 协议MAC 地址局域网以太网交换机虚拟局域网 基本问题…...
5.wifi开发【智能家居:上】,开发准备:智能开关灯,智能采集温湿,智能调彩灯
一。wifi智能家居项目开发 【开发准备1】:继电器控制开发 1.智能开关 器件准备:wifi(esp8266,使用CP2102)继电器 结果: 2.继电器工作原理 (1)继电器是一种自动电气开关 ÿ…...
26523-2022 精制硫酸钴 随笔练习
声明 本文是学习GB-T 26523-2022 精制硫酸钴. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了精制硫酸钴的要求、试验方法、检验规则、标志、标签、包装、运输和贮存。 本文件适用于精制硫酸钴。 注:该产品主要用于…...
企业该如何选择数字化转型工具?_光点科技
随着科技的不断进步和数字化的浪潮席卷全球,企业数字化转型已经成为了保持竞争力和持续增长的关键因素之一。无论企业规模大小,数字化转型都可以提高效率、降低成本、改善客户体验,从而实现更好的业务结果。然而,要成功进行数字化…...
算法与数据结构-Trie树
文章目录 什么是“Trie 树”?如何实现一棵 Trie 树?Trie 树真的很耗内存吗?Trie 树与散列表、红黑树的比较 什么是“Trie 树”? Trie 树,也叫“字典树”。顾名思义,它是一个树形结构。它是一种专门处理字符…...
语音助手开发小记(2023.9.25)
通道问题 在使用函数swr_alloc_set_opts给SwrContext传递输入输出的音频参数时,需要设置通道,这里通道为2,但是通道布局不能传递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、代码封装 前言 随着信息互联网信息的飞速发展,医院也在创建着属于自己的管理系统。本文介…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
