数据库的隔离级别和索引使用

先看一下隔离级别, 隔离级别首先要明确 ,隔离的越重,那么自然会失去效率,为什么有这么多的隔离级别,其实就是平衡业务关系尽可能的提高效率。

下面看下隔离级别和介绍:

读未提交是指:一个事务还没提交时,它做的变更就能被别的事务看到。

读提交是指:一个事务提交之后,它做的变更才会被其他事务看到。

可重复读是指:一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。

串行化:顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。其中“读提交”和“可重复读”比较难理解,所以我用一个例子说明这几种隔离级别。假设数据表 T 中只有一列,其中一行的值为 1,下面是按照时间顺序执行两个事务的行为

假如 mysql 修改(update) age 这个这个字段 ,由age 36 修改为 18

首先1.启动事物 2,修改值  3 commit(提交事物 )整个过程结束。

那么当另外一个事物正好访问age 这个修改的字段是 改怎么处理呢。

读提交 :必须等修改的事物 commit 提交之后才能访问,也就是 在没有修改事物提交之前还是访问的36 

读未提交: 表示 我可以等你不提交,就能读到数据,那么这个时候读到的数据就是18 (虽然修改事物没有提交)

可重复读,表示 我这个读事物前后一致,也就是说我读事物在没有提交之前 读到什么数据 就一直是什么数据,(读事物没有commit之前)

串行化: 当一个事物会加锁,执行完之后 另外一个事物才能执行。当 查询事物commit 之后 修改事物才能执行,或者当修改事物commit 之后 查询事物才能执行。

再说一下索引:

mysql 数据库大部分用的是innoDB,见索引要注意回表问题。

先说一下回表, innoDB采用B+树的方式,它分为主键索引(聚簇索引),业务类索引(非聚簇索引),当我们查询一个字段的时候,mysql 会返回主键 然后 再把数据返回,

比如 * where age =18 他会先用age 这个业务索引找到 主键id  然后用主键id 取找出所有查询的数据 这个过程叫回表。

你的 索引设计 如果设计不当很可能会增加 回表的次数 从而影响 查询效率

举例说一下:比如查询 where age =18 and sex =‘男’  你的索引 age 但是sex 没有,

这样的话 按照最左匹配原则,age 是会走索引的,但是sex 没有索引  ,这样就是增加一次回表,即先通过age 查询id 然后 用id 找出数据 看看sex是否符合。

但是如果你 (age, sex) 这样做联合索引 按照 最左匹配原则 你age 首先说可以使用,那么 你在使用查询语句的where age =18 and sex =‘男’   时候,减少了一次回表  (这叫索引下推)

拿怎么设计呢,比如你的业务需求中 关于年龄和性别这两个是高频查询次数,那么就直接设计联合索引,这样还能减少单独设计age 这个索引(索引最左原则)

 

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

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

相关文章

Oracle SQL详解

Oracle SQL是一种用于管理和操作Oracle数据库的编程语言。以下是一些基本的Oracle SQL语法和建表建用户的详解。 创建用户 在Oracle中,创建用户通常需要具有足够权限的用户(通常是具有DBA角色的用户)。以下是一个创建用户的例子:…

基于词频统计的聚类算法(kmeans)

基于词频统计的聚类算法(kmeans) 数据集是三个政府报告文件,这里就不做详细描述了,就是简单的txt文件。 实验过程主要分为如下几步: 1.读取数据并进行停用词过滤 2.统计词频 3.基于三篇文章词频统计的层次聚类 4.基于…

废品回收小程序怎么做?有哪些核心功能?

废品回收行业正逐步走向高质量发展的道路。在国家政策的推动下,再生资源市场需求旺盛,行业内部竞争格局逐渐明朗。 随着互联网技术的发展,"互联网回收"成为废品回收行业的一个新趋势。通过微信小程序这种线上平台,用户…

数据可视化在智慧园区中的核心价值解析

数据可视化在智慧园区中发挥着至关重要的价值。智慧园区是一种基于物联网、大数据、云计算等先进技术的现代化管理模式,旨在通过智能化手段提升园区的管理效率、服务水平和用户体验。而数据可视化作为数据处理和展示的重要工具,正是智慧园区实现这些目标…

BUG: VS Code C++输出中文乱码

BUG: VS Code C输出中文乱码 环境 Windows 11 VS Code 编辑器详情 在Windows 使用 cout 函数输出中文时出现乱码 问题的原因在cmd的显示编码和c程序编码的不同。cmd默认的是gbk编码,而VS Code 软件的CMD终端默认是utf-8编码,因而在输出中文文本时会出…

Flutter 中的 SliverCrossAxisExpanded 小部件:全面指南

Flutter 中的 SliverCrossAxisExpanded 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中,SliverCrossAxisExpanded 是一个…

Ubuntu server 24 安装配置 snort3 3.2.1.0 网络入侵检测防御系统 配置注册规则集

一 下载并安装源代码 地址:https://github.com/snort3/snort3/releases #下载,解压 wget https://github.com/snort3/snort3/archive/refs/tags/3.2.1.0.tar.gz tar zxvf 3.2.1.0.tar.gz 二 安装软件依赖包 1 安装依赖包 sudo apt update sudo apt install…

Bytebase 2.18.0 - 支持创建用户组

🚀 新功能 支持创建用户组。支持 BigQuery。支持 SQL Server 库表同步。支持 MongoDB 集群并支持直接连接到集群中的节点。支持 SQL Server 和 Oracle 显示工单任务执行日志,如影响行数或错误。添加 SQL 审核规则: 禁止在 SQL Server 中进行跨库查询。禁…

代码随想录算法训练营第四十四天 | 01背包问题 二维、 01背包问题 一维、416. 分割等和子集

01背包问题 二维 代码随想录 视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili 1.dp数组定义 dp[i][j] 下标为[0,i]之间的物品&…

【C#】类和对象的区别

1.区别概述 结构体和类的最大区别是在存储空间上,前者是值类型,后者是引用类型,它们在赋值上有很大的区别,在类中指向同一块空间的两个类的值会随一个类的改变而改变另一个,请看如下代码所示: namespace …

【漯河市人才交流中心_登录安全分析报告-Ajax泄漏滑动距离导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

JavaSE:异常

1、什么是异常 在生活当中,不管是人还是动物又或是植物,都会生病;在程序中也是,作为程序猿,虽然我们会尽力将程序写的完美,可难免会出现一些问题~ 在程序执行过程中,发生的一些不正常行为&…

Windows系统安装openvino(2024.1.0)

一、openvino下载: 下载地址:下载英特尔发行版 OpenVINO 工具套件 (intel.cn) 下载完之后将压缩包解压,然后重命名文件夹为openvino_2024.1.0。 二、环境配置 以python环境为例:(建议使用moniconda虚拟环境来安装&am…

Android 图表开发开源库 MPAndroidChart 使用总结

1. 引言 电视项目中需要一个折线图表示节电数据变化情况,类比 H5 来说,Android 中也应该有比较成熟的控件,经过调研后,发现 MPAndroidChart 功能比较强大,网上也有人说可能是目前 Android 开发最好用的一个三方库了&a…

【力扣】LCR 130. 衣橱整理

一、题目描述 二、算法思路 这是⼀道非常典型的「搜索」类问题。 我们可以通过「深搜」或者「宽搜」,从 [0, 0] 点出发,按照题目的要求(选择 向右移动一格 或 向下移动一格,但不能移动到衣柜之外 )一直往 [m - 1, …

详解Spring IoCDI(二)

目录 承接上文:详解Spring IoC&DI (一) 1.IoC详解 1.1方法注解Bean 1.2方法注解要配合类注解使用 1.3定义多个对象 1.4重命名Bean 1.5扫描路径 2.DI详解 2.1DI与IoC的关系 2.2属性注入 2.3构造方法注入 2.4Setter注入 2.5 三…

代码随想录算法训练营第四十五天|1049.最后一块石头的重量II、494.目标和、 474.一和零

1049.最后一块石头的重量II 文档讲解:代码随想录 题目链接:. - 力扣(LeetCode) 本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。 和昨天讲解的416. 分割等和…

visual studio code 全局搜索

VScode写代码的时候,会经常性的需要进行查找代码,那么怎么在Visual Studio Code中进行查找呢,下面就来大家vscode全局搜索的方法。 想要在vscode全局搜索进行全局搜索,使用快捷键CTRLSHIFTF即可进行搜索,也可以在左边…

哪吒监控+cfcdn+ 反代grp端口

哪吒监控cfcdn 反代grp端口 背景: 哪吒监控:感觉VPS线路不稳定,为了打消自己潜意识,希望量化延迟。 cfcdn:隐藏真实站点,保障小鸡隐秘安全 反代grpc端口: 反代grpc到支持https(TLS)的端口,这…

Tomcat启动闪退问题及解决方法

Tomcat启动闪退问题可能由多种原因引起,以下是一些常见的原因及相应的解决方法,按照清晰的结构进行归纳: 一、环境变量问题 Java环境问题:Tomcat依赖于Java环境,如果JDK未正确安装或环境变量配置不正确,会…