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、代码封装 前言 随着信息互联网信息的飞速发展,医院也在创建着属于自己的管理系统。本文介…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
