数据库概念学习

1. mysql默认的事物级别
MySQL 默认的隔离级别是可重复读(REPEATABLE READ)。
PostgreSQL 中,默认的隔离级别是读已提交(READ COMMITTED)

可重复读隔离级别是 MySQL 的默认隔离级别,它具有以下特点:

事务读取的数据集是一个一致性视图(consistent snapshot),即事务开始时刻的数据状态。在同一事务中,无论其他事务对数据的修改如何,事务始终看到一致的数据快照。

事务期间读取的数据不会受到其他并发事务的修改影响。即使其他事务对数据进行了修改,事务内部仍然能够读取到最初一致性视图中的数据。

事务在提交之前对数据的修改对其他事务是不可见的。只有当事务提交后,其他事务才能看到该事务所做的修改。

可重复读隔离级别提供了较高的隔离性和数据一致性,适用于大多数应用场景。然而,由于事务期间持有锁的时间较长,可能导致锁竞争和并发性能下降。如果应用需要更高的并发性能,可以考虑将隔离级别调整为读已提交(READ COMMITTED)。

2. mysql的索引结构
MySQL 使用多种索引结构来支持高效的数据检索,其中最常用的索引结构是B+树索引。下面是 MySQL 中常见的索引结构:

B+树索引:B+树索引是 MySQL 最常用的索引结构。B+树是一种平衡树结构,它具有以下特点:

支持快速的索引扫描:B+ 树索引结构具有良好的平衡性和高度的平均查询性能。在 B+ 树中,从根节点到叶子节点的路径长度相等或相差不大,这使得索引扫描的平均时间复杂度为 O(log n),其中 n 是索引中的键值对数量。
所有数据都存储在叶子节点上,非叶子节点仅用于索引和导航。
范围查询和排序性能优化 叶子节点按照键值的顺序形成一个有序链表,可以支持范围查询。
B+树索引适用于等值查询和范围查询,并且对于大部分数据库工作负载都能提供高效的性能。
哈希索引:哈希索引是基于哈希表实现的索引结构。哈希索引具有以下特点:

使用哈希算法将键值映射到哈希表中的桶(bucket)。
哈希索引适用于等值查询,但不支持范围查询。
哈希索引在内存中进行查找,查询速度非常快,但在磁盘上的存储和更新操作相对较慢。
全文索引:全文索引是用于全文搜索的索引结构,用于在文本数据中进行关键字搜索。全文索引具有以下特点:

使用特殊的算法和数据结构来构建索引,以支持文本匹配和搜索。
全文索引适用于模糊搜索和自然语言查询。
MySQL 提供了全文索引的支持,例如使用 InnoDB 引擎的全文索引和使用 MyISAM 引擎的全文索引。

3. 事务特性
原子性(Atomicity):一个事务中的所有操作,要么全部成功,要么失败全部回滚,不会结束在某个中间环节。原子性由undo log日志来实现
一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。由其他三个特性及业务代码正确逻辑来实现
隔离性((Isolation):一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。隔离性由MySQL各种锁以及MVCC机制来实现
持久性(Durable):一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的,即使系统故障也不会丢失。持久性由redo log日志来实现

4. 隔离级别
InnoDB引擎定义了四种隔离级别,级别越高事务隔离性越好,但性能就越低
read uncommit(读未提交),事务A读取到了事务B已经修改但尚未提交的数据
read commit(读已提交):Oracle和SQL Server的默认隔离级别,一个事务只能看见已经提交事务所做的改变
repeatable read(可重复读):MySQL的默认隔离级别,无论事务B如何修改数据,事务A内部相同查询语句在不同时刻查询出来的结果都是一致的,即在第一次查询之后就不会发生变化(除非事务A更新了这行数据,由快照读变为当前读)
serializable(串行化) :所有事务对同一条数据的读和写只允许串行执行,解决了脏读、不可重复读、幻读的问题

5 事务并发遇到的问题
脏写(Dirty Write):Session A修改了Session B修改过但尚未提交的数据
脏读(Dirty Read):Session A读取到了Session B已经修改但尚未提交的数据
不可重复读(Non-Repeatable Read):Session A内部的相同查询语句在不同时刻读出的结果不一致,不符合隔离性
幻读(Phantom):Session A读取到了Session B提交的新增数据,不符合隔离性

参考文章:
MySQL事务隔离级别与锁机制(一) https://zhuanlan.zhihu.com/p/591676550?utm_id=0

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

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

相关文章

Spring Data 灵活查询的三种方式

在页面中展示列表数据时,通常需要根据用户输入的不同的查询条件返回不同的查询结果,传统的方式往往采用手动编写原始sql拼接where条件的方式,这种方式并不安全,容易存在sql注入漏洞。 本文介绍用SpringDataJpa实现灵活查询的方式…

C# 委托(Delegate)

C# 委托(Delegate) C# 委托(Delegate)声明委托(Delegate)实例化委托(Delegate)委托的多播(Multicasting of a Delegate)委托(Delegate&#xff09…

怎么提取视频中的背景音乐?

当我们在刷视频的时候,有时候听到一个背景音乐很好听,但是又不知道歌名,比如英语歌,这个时候我们很难找到这首歌,相信有很多朋友会遇到这样的问题,不知道怎么弄,下面小编给大家推荐一些方法帮助…

MySQL数据表加密字段支持模糊查询的方案

AES_ENCRYPT函数和AES_DECRYPT,需要注意的是,加密后的字段需要用blob做存储,如果用varchar存储会报1366错误。 Mysql本身自带的加密方法,分为2种: 1、不可逆加密算法: PASSWORD,ENCRYPT,MD5&…

名词+of+名词+非谓语动词短语的结构

一、英语中 名词 of 名词 that .,that后面的定语从句修饰的是of前面的名词还是后面的名词?如果是前面或者后面,要反过来怎么搞? eg;There are some present of you that jam sent you yesterday.(这里有一些吉姆昨天送的你的礼物)1) present of you可…

Pytorch从零开始实战14

Pytorch从零开始实战——DenseNet SENet算法实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——DenseNet SENet算法实战环境准备数据集模型选择开始训练可视化总结 环境准备 本文基于Jupyter notebook,使用Python3.8&#x…

亿赛通电子文档安全管理系统 linkfilterservice 未授权漏洞

产品简介 亿赛通电子文档安全管理系统,(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资…

TS常用类型

原始类型使用 // 原始类型使用 let age: number 18let myName: string 前端let isLoding: boolean falselet a: null nulllet b: undefined undefinedlet s:symbol Symbol()数组类型使用 // 数组类型的两种写法// 写法一 let numbers: number[] [1, 2, 3] // 数值类型…

Spring企业开发核心框架

文章目录 Spring企业开发核心框架一、框架前言1. 总体技术体系2. 框架概念和理解 二、Spring Framework简介1. Spring 和 SpringFramework2. SpringFramework主要功能模块3. SpringFramework 主要优势 三、Spring IoC 容器概念1. 组件和组件管理概念2. Spring IoC容器和容器实现…

ALS-运动系统解构

角色握持 角色蓝图:将物体绑在手上 动作蓝图: 将握持动画截取一帧(explicit time时间写好) 角色替换 在原人物模型下面加一个骨骼体(先不用添加模型),重命名为bodymesh AI使用流程 新建一…

品牌如何在线上打造“社交货币”?媒介盒子揭秘

品牌的社交货币,是品牌与消费者的共识身份铸造器。竹筒奶茶、Keep奖牌这类的实体产品作为社交货币,每每能够引爆社交平台,那么品牌能否通过线上平台打造“社交货币”呢?接下来就让媒介盒子和大家聊聊。 一、社交货币是什么 社交货…

6.Nacos

1.单机部署 1.1 官网 https://nacos.io/zh-cn/index.html https://github.com/alibaba/Nacos 1.2.版本说明 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 1.3.下载地址 https://github.com/alibaba/nacos/releases/tag/2.2.…

小区跑腿服务

社区跑腿服务是指在社区范围内为居民提供各种便利的服务,包括购物代劳、快递代取、家政服务等。 这种服务的出现,满足了居民生活中诸多需求,受到了广泛的欢迎和认可。 首先,社区跑腿服务方便了居民的日常生活。 居民无需亲自前…

Unity 数据存储PlayerPrefs管理类

Unity 数据存储PlayerPrefs管理类 Unity 数据存储PlayerPrefs管理类实现存取实体类对象存储格式为Json格式Singleton.csInventoryEntity.csDataManager.cs用法如下 Unity 数据存储PlayerPrefs管理类 实现存取实体类对象 存储格式为Json格式 源码如下: Singleton…

克魔助手工具下载、注册和登录指南

下载安装克魔助手 摘要 本文介绍了如何下载安装克魔助手工具,以及注册和登录流程。通过简单的步骤,用户可以轻松获取并使用该工具,为后续的手机应用管理操作做好准备。 引言 克魔助手是一款免费的手机管理工具,通过该工具用户…

2023年第十六届山东省职业院校技能大赛高职组“应用软件系统开发”赛项样题

第十六届山东省职业院校技能大赛 高职组“应用软件系统开发”赛项样题 目录 一.竞赛须知 二.竞赛任务 模块一:系统需求分析(25分) 模块三:系统部署测试(20分) 需要竞赛源码或资…

Linux常用压缩和解压缩命令

在Linux系统中,有多种压缩和解压缩命令可供使用。以下是一些常用的压缩和解压缩命令的详细解释: 压缩命令 1. gzip 压缩文件: gzip file 这将压缩file并生成一个名为file.gz的压缩文件。 保留原始文件: gzip -c file > fil…

微服务的调用使用

在微服务架构中,不同的微服务之间通常通过网络进行调用和通信。常见的方式包括: 1. **HTTP/HTTPS调用:** 微服务可以通过HTTP或HTTPS协议进行调用。使用HTTP请求方法(如GET、POST、PUT、DELETE)来执行操作&#xff0c…

【AUTOSAR OS】了解AUTOSAR操作系统基本概念(1)--任务

目录 前言 一、任务Task 什么是“基础任务”和“扩展任务”?以及他们适用于什么场景?

文章解读与完整程序——《考虑“源-荷-储”协同互动的主动配电网优化调度研究》

摘要:伴随智能电网的建设和清洁能源的开发利用,配电网中的负荷类型呈现多元化发展,分布式电源、可控负荷、储能等资源的增加让单向潮流的传统配电网逐渐向双向潮流的主动配电网结构转变。在能源结构转变的同时,清洁能源自身的随机性和波动性给配电网带来了更大的调峰…