721 Chapter3 MVCC(设计trade-off)

news2024/11/28 11:50:42

MVCC核心概念

1.读写互相不阻塞对方

2.读事务可以读一致性快照

3.支持时间旅行,也就是读过去的快照

但是存在写倾斜的问题。Write Skew Anomaly.

所以就MVCC到达不了serizable

 

 

MVCC实现

MVCC + time order

就靠原子操作CAS来check是否有人在写入,同时如果txnid大于read-ts的话,就要创建一个新的版本

 

 

MVCC + 2PL

同时事务Txn-id在到达上限后,会从1开始,那么我们就会发现没有可见的版本,为了解决这个,加了个frozen bit.Any new txn id will always be newer than a frozen version.

Version Storage 

Append-Only

存在相同的table上的空位置插入

 

time-travel table

实际上差不多,就是插入在单独的time-travel表上,有两种选择,一种从老到新,一种从新到老,第一种的话,查询有点慢,第二种索引要发生变化。

delta 

就是只存变化量,节省了内存。

GC

因为版本不能无限的增加,内存就爆了,所以要gc

Tuple level

提到了两种选择,第二种可能存在灰尘角落

 Transaction Level

INDEX manager 

如果要改变主键的话,先删除后插入

对于secondry index的话,我们有两种选择,第二种在pkey内存比较大的时候比较号。

 

 同时MVCC下要支持重复的主键,因为A1,后面插入的A1,对A1来说不可见,同时A1插入后,也不能看见前面的版本,也就不能相连,不如时间旅行会回到从前。

 

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

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

相关文章

【Docker】通过dockerfile构建Nginx镜像部署多Web应用

【Docker】Docker安装 docker打包镜像Dockerfile构建镜像编写Dockerfile脚本构建镜像前的准备执行Dockerfile脚本 构建镜像镜像导入配置nginx.conf文件Docker操作查询index.html的路径修改web1下ProjectConfig-72e0c4f7dd.json配置文件修改nginx配置文件nginx.confDockerfile构…

GIS空间数据格式简介

Gis数据存储零、前言一、基础概念二、矢量数据1、定义2、基础3、WBT/WKB4、坐标系5、Geometry6、要素 / 要素集7、存储格式8、图层三、栅格数据1、定义2、基础3、存储格式零、前言 1、首先该篇文档主要是针对刚入坑的朋友,如果你对gis的存储结构谙熟于心&#xff0…

【python】计算机视觉~舌象图片中舌体倾斜判别(四)

返回至系列文章导航博客 1 简介 在智能舌诊时,需要判断舌头的胖瘦,这需要舌头在图片中处于近似垂直的位置才方便判断,不能过于倾斜。那么如何让计算机智能地知道舌体是否倾斜呢?这是这篇文章讨论的重点! 首先也是最重…

一种轻量的“虚拟机”——Windows 沙盒模式

Windows 沙盒模式Windows沙盒的好处操作步骤Windows沙盒的好处 相比虚拟机和第三方的沙盒软件,Windows Sandbox启用后仅占用100MB硬盘空间,还能与物理机安全地共享部分内存空间。简单来说就是易用、免费、不卡机! 由于要保证沙盒内的数据不…

表面弛豫、重构以及覆盖效应

目录 1表面弛豫 2表面能的计算 3对称和非对称板块模型 4 表面重构 5表面上的吸附质 6表面覆盖效应 1表面弛豫 在上述例子中,为了建立五层原子的板块模型,将原子放置在了板块模型中。原子的位置是理想的,是 材料中的体相原子位置。在体相的 金属中,任何两个相邻原子的间…

burpsuite 插件编写基础

文章目录一、什么是扩展 / 插件?二、burp 的扩展三、开发步骤一、什么是扩展 / 插件? 关于这个话题,知乎有一个回答题不错,主要也是引用了wikipedia 插件/扩展,是向现有的计算机程序添加特定功能的软件组件。 主程序…

3.2.2队列的顺序存储实现

队列是一种操作受限的顺序表(只能在队头删除,在队尾插入)。 所以依旧使用静态数组的形式去存储队列。 (1)创建(初始化) 现定于(顺序队列)的结构体 初始化队列时&#x…

CentOS7---Nginx安装并配置虚拟主机

1、源码安装nginx,并提供服务脚本 源码包的获取:官网下载 实验环境:和企业环境类似,关闭防火墙,禁用selinux,使用静态IP地址 安装步骤: 步骤一:安装Nginx所需的pcre库 [rootnode01 ~…

openvpn (用户名密码模式)

目录 一、介绍 1、定义 2、原理 3、加密和身份验证 二、在centos 7.5上搭建openvpn 1、安装openvpn 和easy-rsa(该包用来制作ca证书) 2、配置/etc/openvpn/ 目录 3、创建服务端证书及key 4、创建客户端证书 5、把服务器端必要文件放到etc/openvpn/ 目录下…

LeetCode 785. Is Graph Bipartite【DFS,二分图】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

[牛客101] 二叉树的层序遍历

这道题会考察很多知识点,这里专门进行详解 文章目录题目描述二. 题目分析完整代码题目描述 二. 题目分析 首先,我们会想到存储方式为二维数组.数组每一行存储一层的结点.怎么确定每一行要存储几个结点呢.由于节点与节点之间存在父子关系,所以,在存储某一层的结点时,就可以通过…

使用Process Explorer和Dependency Walker排查C++程序中dll库动态加载失败问题

目录 1、exe主程序启动时的库加载流程说明 2、加载dll库两种方式 2.1、dll库的隐式引用 2.2、dll库的动态加载 3、本案例中的问题描述 4、使用Process Explorer和Dependency Walker分析dll库加载失败的原因 4.1、Process Explorer工具介绍 4.2、使用Process Explorer工…

Mysql日志系统-mysql serve层

Mysql日志系统-服务层的日志 mysql给我们提供了很多有用的日志有mysql服务层提供的,有innodb引擎层提供的,下表是mysql服务层给我们提供的: 日志类型写入日志的信息二进制日志记录了对MySQL数据库执行更改的所有操作慢查询日志记录所有执行…

【JavaScript】2.JavaScript函数

JavaScript 函数 1. 函数的概念 函数&#xff1a;就是封装了一段可被重复调用执行的代码块 通过此代码块可以实现大量代码的重复使用 2. 函数的使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta na…

定点乘法器优化---华为杯

一. 简介 在本篇文章开始之前&#xff0c;先对上篇文章中的一个错误进行指正一下。在部分积生成的时候&#xff0c;需要计算-2A和2A的值&#xff0c;我的做法就是直接左移了一位&#xff0c;这样就会有一个问题&#xff0c;符号位被移掉了&#xff0c;为什么我的计算结果还是对…

Java Stream API 操作完全攻略:让你的代码更加出色 (三)

前言 Java Stream 是一种强大的数据处理工具&#xff0c;可以帮助开发人员快速高效地处理和转换数据流。使用 Stream 操作可以大大简化代码&#xff0c;使其更具可读性和可维护性&#xff0c;从而提高开发效率。本文将为您介绍 Java Stream 操作的所有方面&#xff0c;包括 gro…

c++中的类继承

面向对象编程的主要目的是之一是提供可重用的代码。开发新项目&#xff0c;尤其是当项目十分庞大时&#xff0c;重用经过测试的代码比重新编写代码要好得多。使用已有的代码可以节省时间&#xff0c;由于已有的代码已被使用和测试过&#xff0c;因此有助于避免在程序中引入错误…

在Github中77k星的王炸AutoGPT,会独立思考,直接释放双手

文章目录1 前言1.1 什么是AutoGPT1.2 为什么是AutoGPT2 AutoGPT部分实例2.1 类似一个Workflow2.2 市场调研2.3 自己写播客2.4 接入客服3 安装和使用AutoGPT3.1 安装3.2 基础用法3.3 配置OpenAI的API3.4 配置谷歌API3.5 配置Pinecone API4.讨论1 前言 迄今为止&#xff0c;Gith…

枚举类注解

一、枚举类&#xff1a; 1.枚举类的使用 类的对象只有有限个&#xff0c;确定的。比如&#xff1a;星期、性别、季节 当需要定义一组常量时&#xff0c;强烈建议使用枚举类。 定义枚举类的方法&#xff1a; 一&#xff1a;jdk5.0之前&#xff0c;自定义枚举类 package com.ypl…

https访问fastdfs图片

引用&#xff1a;https://blog.csdn.net/love8753/article/details/128872320 配置nginx 的SSL模块&#xff1a;https://www.cnblogs.com/ghjbk/p/6744131.html 获取ssl证书 将ssl证书&#xff0c;拷贝到服务器的一个目录下 nginx添加 http_ssl_module 最开始安装的nginx只有 …