8.6.数据库基础技术-数据库的控制
并非控制
-
事务:由一系列DML操作组成,这些操作,要么全做,要么全不做,它从第一个DML操作开始,rollback、commit或者DDL结束,拥有以下四种特性,详解如下:
- (操作)原子性Atomicity:要么全做,要么全不做,例如银行转账,在没到最后一步完成转账之前前面的所有操作都是无效的。
- (数据)一致性Consistency:事务发生后数据是一致的,例如银行转账,不会存在A账户转出,但是B账户没收到的情况。
- (执行)隔离性Isolatio:任一事务的更新操作直到其成功提交的整个过程对其他事务都是不可见的不同事务之间是隔离的,互不干涉。
- (改变)持续性Durability:事务操作的结果是持续性的。
-
事务是并发控制的前提条件,并发控制就是控制不同的事务并发执行,提高系统效率,但是并发控制中存在下面三个问题:
- 丢失更新:事务1对数据A进行了修改并写回,事务2也对A进行了修改并写回,此时事务2写回的数据会覆盖事务1写回的数据,就丢失了事务1对A的更新。即对数据A的更新会被覆盖。
- 不可重复读:事务2读A,而后事务1对数据A进行了修改并写回,此时若事务2再读A,发现数据不对。即一个事务重复读A两次,会发现数据A有误。
- 读脏数据:事务1对数据A进行了修改后,事务2读数据A,而后事务1回滚,数据A恢复了原来的值,那么事务2对数据A做的事是无效的,读到了脏数据。

封锁协议
X锁是排它锁(写锁)。若事务T对数据对象A加上x锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
S锁是共享锁(读锁)。若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁(也即能读不能修改),直到T释放A上的S锁。
共分为三级封锁协议,如下:
- 一级封锁协议:事务在修改致据之前必须先对其加X锁,直到事务结束才释放,可解决丢失更斯问题。

- 二级封锁协议:一级封锁协议的基础上加上事务T在读数据R之前必须先对其加S锁,读完后即可释放S锁。可解决失更新、读脏数据问题。

- 三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可解决丢失更新、读脏致据、数据重复读问题

练习题
当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程对其他事务都是不可见的,这一性质通常被称为事务的()。
A.原子性
B.一致性
C隔离性
D持久性
答案C
若事务T1对数据D1加了共享锁,事务T2、T3分别对数据D2、D3加了排它锁,则事务T1对数据();事务T2对数据()
A.D2、D3加排它锁都成功
B.D2、D3加共享锁都成功
C.D2加共享锁成功,D3加排它锁失败
D.D2、D3加排它锁和共享锁都失败
A.D1、D3加共享锁都失败
B.D1、D3加共享锁都成功
C.D1加共享锁成功,D3如排它锁失败
D.D1加排它锁成功,D3加共享锁失败
答案D C
数据库故障和备份
数据库系统产生的故障如下所示:
- 事务内部故障:本身逻辑(可预期)、运算溢出(不可预期)
- 系统故障:系统停止运行任何事件,如操作系统故障、停电
- 介质故障:物理介质损坏,几率小破坏性最大
- 计算机病毒:人为的故障和破坏,在计算机程序中插入的破坏
静态转储:即冷备份,指在转储期间不允许对数据库进行任何存取、修改操作:
- 优点:非常快速的备份方法、容易归档(直接物理复制操作);
- 缺点:只能提供到某一时间点上的恢复不能做其他工作,不能按表或按用户恢复。
动态转储:即热备份,在转储期间允许对数据库进行存取、修改操作,因此,转储和用户事务可并发执行;
- 优点:可在表空间或数据库文件级备份,数据库扔可使用,可达到秒级恢复;
- 缺点:不能出错,否则后果严重,若热备份不成功,所得结果几乎全部无效。
数据库备份
- 完全备份:备份所有数据。
- 差量备份:仅备份上一次完全备份之后变化的数据。
- 增量备份:备份上一次备份之后变化的数据。
- 日志文件:在事务处理过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。
相关文章:
8.6.数据库基础技术-数据库的控制
并非控制 事务:由一系列DML操作组成,这些操作,要么全做,要么全不做,它从第一个DML操作开始,rollback、commit或者DDL结束,拥有以下四种特性,详解如下: (操作)…...
php语言基础入门
文章目录 php语言基础入门一、简介二、基础语法1、变量2、常量3、注释4、基础数据类型4.1、整形数据类型4.2、布尔数据类型4.3、字符串数据类型4.4、浮点型数据类型4.5、PHP数据类型之查看和判断数据类型 5、流程控制5.1、if-elseif-else语句使用5.2、switch语句使用5.3、while…...
告别杂音,从 AI 音频降噪开始
生活中,音频无处不在。无论是聆听动人的音乐,还是参与重要的电话会议,又或是沉浸于精彩的网课学习,清晰、纯净的音频质量都至关重要。然而,音频中的噪声却像不速之客,扰乱着这份美好。 音频中的噪声形式多样…...
Postman中params传参与Body传参区别以及Body中不同类型的区别
Postman中params传参与Body传参区别 在HTTP请求中,参数可以通过不同的方式传递给服务器,其中最常见的两种方式是使用params(查询参数)和body(请求体)。以下是它们的主要区别: 1. 位置…...
数据结构入门——05队列
1.队列 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先 进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头 队列也可以数…...
使用python MySQL 实现一个 key-value(string:json) 读写库
在Python中,我们可以使用`pymysql`库(如果MySQL服务器版本较高,也推荐使用`mysql-connector-python`)来建立一个简单的key-value存储库,其中键是字符串,值是JSON格式的数据。这里我们创建一个基本的类来完成读写操作: import pymysql.cursors import jsonclass JsonKVS…...
实现:uniapp项目分享视频页面到微信,可以自定义分享的页面样式及内容
背景:最近在逐步完善一个uniapp项目的视频功能, 包括有视频录制及发布,在完善过程中想要实现分享 视频到微信的功能,也就是相当于分享链接到微信, 微信打开后可以获取到视频并可以观看,有了想法便 准备实行…...
【C++】—— 类与对象(五)
【C】—— 类与对象(五) 1、类型转换1.1、类型转换介绍1.2、类型转换的应用1.3、explicit 关键字 2、static 静态成员2.1、static 静态成员变量2.2、static 静态成员函数2.3、总结 3、友元3.1、友元函数3.2、友元类 4.内部类5、匿名对象6、对象拷贝时的编…...
scp命令的使用
在Windows和Linux之间传文件,最简单的是共享目录,如果不能使用共享目录,可以使用scp命令, 一般Windows和Linux都支持。 scp命令是secure copy的缩写,用于在Linux下进行远程文件拷贝,windows一般也有该命令…...
定位和解决线上接口性能优化或者数据库性能优化的思路是什么?
定位和解决线上接口性能优化或数据库性能优化问题是一项复杂且系统性的工作,需要综合运用监控、分析、调优等手段。以下是一个详细的思路,帮助您从定位问题到解决问题,确保系统的高效运行。 一、定位接口性能问题 1.1 监控和日志 1.1.1 监…...
修改docker的/var/lib/docker/overlay2储存路径
目录 目录 1.准备新的存储位置 1.创建新的存储目录 2.修改目录权限 2. 配置 Docker 使用新的存储位置 1.停止 Docker 服务 2.编辑 Docker 配置文件 3.迁移现有 Docker 数据 1.将现有的 Docker 数据从系统盘移动到新目录 2.启动 Docker 服务 3. 验证更改 4. 清理旧的…...
解决中国式报表难题,这款工具真的免费且好用
一、概述 报表,对于任何企业或组织来说都不陌生。它将复杂的数据信息以简洁明了的方式展现出来,帮助决策者快速理解数据背后的趋势和问题。无论是财务报表、销售报表,还是库存报表,都是日常工作中不可或缺的部分。然而࿰…...
图解Kafka | 彻底弄明白 Kafka 两个最重要的配置
我已经使用 Kafka 近两年了,我发现有两个配置很重要,但是不太容易理解。这两个配置分别是acks和min.insync.replicas。 本文将通过一些插图来帮助理解这2个配置,以便更好的使用Kafka为我们服务。 复制 我假设你已经熟悉 Kafka了 ÿ…...
创建线程的三种方式
创建线程的三种方式 1. Thread 匿名内部类 Slf4j public class CreateThread {public static void main(String[] args) {Thread t1 new Thread("t1") {Overridepublic void run() {log.info("hello world");}};t1.start();} }2.定义 Runable public s…...
官宣|Apache Flink 1.20 发布公告
作者:郭伟杰(阿里云), 范瑞(Shopee) Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.20.0。与往常一样,这是一个充实的版本,包含了广泛的改进和新功能。总共有 142 人为此版本做出了贡献,…...
HarmonyOS应用一之登录页面案例
目录: 1、代码示例2、代码分析3、注解分析 1、代码示例 实现效果: /** Copyright (c) 2023 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance w…...
KubeSphere 部署 Kafka 集群实战指南
本文档将详细阐述如何利用 Helm 这一强大的工具,快速而高效地在 K8s 集群上安装并配置一个 Kafka 集群。 实战服务器配置(架构 1:1 复刻小规模生产环境,配置略有不同) 主机名IPCPU内存系统盘数据盘用途ksp-registry192.168.9.904840200Harbor 镜像仓库…...
手把手教你安装音乐制作软件FL Studio 24.1.1.4285中文破解版
在当今数字化时代,音乐创作不再局限于传统的乐器和录音室,而是借助先进的音乐制作软件,如FL Studio,实现了前所未有的便捷与高效。FL Studio,以其强大的功能、直观的界面和丰富的插件资源,成为了众多音乐制…...
SDL 与 OpenGL 的关系
OpenGL 和 SDL 是两个不同的库,但它们可以配合使用来创建图形应用程序。 SDL(Simple DirectMedia Layer) SDL 是一个跨平台的多媒体库,用于处理图形、声音、输入和其他游戏开发所需的功能。它简化了窗口创建、事件处理和图形上下…...
考研数学 线性代数----行列式与矩阵
核心框架 前置知识 正式内容 知识点1:单位矩阵 知识点2:可逆矩阵 知识点3: |A|与可逆 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识…...
效率革命:跳过java安装与配置,用快马平台秒级验证算法性能
效率革命:跳过Java安装与配置,用快马平台秒级验证算法性能 最近在优化一个数据处理模块时,我需要快速验证几种排序算法的性能差异。按照传统开发流程,至少要经历以下步骤: 下载并安装JDK,配置环境变量选择…...
JSP 语法详解
JSP 语法详解 引言 JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在网页中嵌入Java代码,以实现与数据库的交互和动态内容生成。JSP语法简洁明了,易于学习和使用。本文将详细介绍JSP的语法结构,帮助读者更好地理解和应用JSP技术。 JSP基本语法 1. JSP页面结构…...
别再只用Chat了!深度挖掘Cursor的‘规则’与‘上下文’功能,打造你的专属AI编程助手
解锁Cursor的隐藏力量:从代码助手到项目级智能架构师 在AI编程工具爆发的时代,大多数开发者仅仅停留在基础对话和代码补全的层面。但Cursor的真正价值远不止于此——它能够成为你项目架构的智能协作者、团队规范的自动化执行者,以及复杂工程问…...
【大数据】离线数仓核心组件:Hive 架构解析与进阶操作指南
Hive 是基于 Hadoop 的数据仓库工具,主要用于解决海量结构化日志的数据统计问题。它提供了一套类 SQL 的查询语言 HiveQL,通过将 SQL 语句转换为运行在 Hadoop 集群上的 MapReduce 或 Spark 任务,大幅降低了大数据分析的工程门槛。 目录 一、…...
1-1 从零实现邻接矩阵:构建无向图的核心步骤与实战解析
1. 邻接矩阵与无向图:从概念到代码的桥梁 第一次接触图论时,我完全被那些抽象的概念搞晕了。直到有一天,导师在黑板上画了个简单的社交网络图:"你看,每个人是一个点,好友关系是连线,这不就…...
Alfred-Workflow 自动化更新:利用 GitHub Releases 实现工作流无缝升级
Alfred-Workflow 自动化更新:利用 GitHub Releases 实现工作流无缝升级 【免费下载链接】alfred-workflow Full-featured library for writing Alfred 3 & 4 workflows 项目地址: https://gitcode.com/gh_mirrors/al/alfred-workflow Alfred-Workflow 是…...
Qwen3.5-9B-AWQ-4bit惊艳效果展示:OCR辅助+场景描述真实生成作品集
Qwen3.5-9B-AWQ-4bit惊艳效果展示:OCR辅助场景描述真实生成作品集 1. 开篇:认识这个视觉理解高手 第一次看到Qwen3.5-9B-AWQ-4bit处理图片的效果时,我着实被惊艳到了。这个模型不仅能准确识别图片中的物体和场景,还能把画面内容…...
告别烧脑报文!用ESP8266+51单片机零基础玩转OneNet MQTT(附报文生成工具)
从零到一:ESP8266与51单片机轻松对接OneNet MQTT全指南 当你第一次听说MQTT协议时,是否被那些晦涩的十六进制报文吓退?作为物联网领域最流行的轻量级通信协议,MQTT本应让设备间的对话变得简单,但传统教程中复杂的报文…...
P3C代码规范检查:风险驱动架构下的动态治理策略
P3C代码规范检查:风险驱动架构下的动态治理策略 【免费下载链接】p3c Alibaba Java Coding Guidelines pmd implements and IDE plugin 项目地址: https://gitcode.com/gh_mirrors/p3/p3c 在数字化转型浪潮中,企业级Java应用面临代码质量与开发效…...
League Akari:英雄联盟玩家的智能游戏伴侣,如何用开源工具提升你的竞技体验
League Akari:英雄联盟玩家的智能游戏伴侣,如何用开源工具提升你的竞技体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit …...
