【MySQL是怎么运行的】0、名词解释

  1. 聚簇索引:聚簇=索引和数据在一起,又名主键索引,是主键id构建的一颗B+树,非叶节点是主键id,叶子节点是真实数据。其他索引统称二级索引,也称为非聚簇索引。
  2. 覆盖索引:查找的数据就在索引树上,不需要回表。
user(id, name, age, phone)100行初始数据,有主键索引,name和age构建的联合索引
select id, name, age from user where id=?; √ 查找的id, name, age都在主键索引上
select name, age from user where name=? and age=?; √ 查找的name, age都在主键索引上			
select * from user where name=? and age=?; x,需要的phone不在联合索引,需要回表
  1. 回表:从二级索引查询回到主键索引中
select * from user where name=? and age=?; 
1- 获取name和age的索引树
2- 从二级索引叶子节点找到具体的id
3- 获取主键索引(回表,即拿到初始所有数据)
4- 从主键索引叶子节点找到具体的数据返回  
  1. 全表扫描:一行行记录查询,全部回表,少一行都不行
select * from user where id between 1 and 99; x, 没有扫描第100
  1. 索引下推ICP:将服务层非索引的筛选下推到存储引擎层,主要适用于联合索引
select * from user where name=? and age=?
1- 服务端向db发起请求,db连接层建立连接
2- db服务层经过缓存查,解析器解析,优化器优化后生成执行计划
3- 引擎层查磁盘获取到name和age索引树,通过name筛选出一批数据,获取id
4- 从磁盘获取主键索引,通过id进行筛选。
5- sql5.6之前将筛选后的数据返回给服务层,服务层通过phone筛选后返回服务端,5.6之后引擎层直接处理,将处理好的数据返回给服务层,减少了无效数据的传输
6- 如果是联合索引,比如abc联合索引,a=xx and b like %lucas。以前没有icp,会先筛选出a然后服务层筛选b,有了icp后,会在联合索引的b+树种筛选a,引擎层直接筛选b,不需要回表
  1. 事务的ACID特性
    A-原子性:事务内的多个sql同时成功,同时失败,靠undo日志保证
    C-一致性:事务执行前后,数据从一个合法状态转为另一个合法状态,靠业务保证
    I-隔离性:事务之间相互隔离,靠MVCC和锁保证
    D-持久性:持久化到磁盘,靠redo日志保证

  2. 数据并发问题
    脏写:修改其他事物未提交的数据(a将1修改为2,b将2修改为3,a提交,预期是2,但是结果是3,a写的是错的)
    脏读:读取其他事务未提交的数据(a将1修改为2,b读发现结果是2,但是a回滚了,b读的是错的)
    不可重复读:读取到的数据有变化(a读取发现是1,b将1修改为2,a在同个事务内再次读取,发现是2了)
    幻读:行数有变化(a读取发现2行,b新增了1行,a在同个事务内再次读取,发现是3行了)

  3. 事务隔离级别
    读未提交:可以读取其他事务未提交的结果,仅解决脏写(写时加了s锁)
    读已提交:只能读取其他事务提交的结果,解决脏写和脏读
    可重复读(InnoDB默认):同个事务内,读取结果不变,解决脏写,脏读和不可重复读(mvcc读快照)
    串行化(不推荐):串行执行,解决所有并发问题


  4. 读读:一般共享锁(可读不可写),select for update可以给读读加排他锁
    读写或写写:只要有写在,一定加排他锁(不能读也不能写)

  5. 点查:根据索引查询某行数据,一般通过唯一索引查询

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

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

相关文章

深入解析 TCP 协议【真题】

传输控制协议(TCP)解析与题目解析 题目解析 关于传输控制协议(TCP)表述不正确的是? A. 主机寻址 B. 进程寻址 C. 流量控制 D. 差错控制 TCP(Transmission Control Protocol)是面向连接、可靠传…

单例模式的五种实现方式

1、饿汉式 ①实现:在类加载的时候就初始化实例 ②优点:线程安全 ③缺点:实例在类加载的时候创建,可能会浪费资源 //饿汉式 public class EagerSingleton{private EagerSingleton(){} //私有构造方法private static EagerSingle…

SwiftUI 让视图自适应高度的 6 种方法(四)

概览 在 SwiftUI 的世界里,我们无数次都梦想着视图可以自动根据布局上下文“因势而变”‌。大多数情况下,SwiftUI 会将每个视图尺寸处理的井井有条,不过在某些时候我们还是得亲力亲为。 如上图所示,无论顶部 TabView 容器里子视图…

小程序SSL证书过期怎么办?

SSL证书就像小程序的“安全锁”,一旦过期,用户访问时会被提示“不安全”,轻则流失客户,重则数据泄露!作为企业负责人,如何快速解决证书过期问题?又该如何避免再次踩坑?这篇指南给你答…

ClickHouse优化技巧实战指南:从原理到案例解析

目录 ​ClickHouse优化核心思想​表结构设计优化​查询性能优化技巧​数据写入优化方案​系统配置调优实战​高可用与集群优化​真实案例解析​总结与建议 1. ClickHouse优化核心思想 ClickHouse作为OLAP领域的明星引擎,其优化需遵循列式存储特性,把握…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_02带边框和斑马纹的固定表头表格

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

服务自动被kill掉的原因和查看

服务在运行一段时间后被自动kill掉可能是由多种原因引起的,包括系统资源限制、进程管理策略、应用程序错误等。以下是一些常见的原因以及定位问题的过程: 常见原因 系统资源限制: 内存不足:如果服务消耗了过多的内存,系统可能会kill掉该进程以释放内存资源。CPU使用过高:…

基础算法——顺序表

一、询问学号 题⽬来源&#xff1a;洛⾕ 题⽬链接&#xff1a;P3156 【深基15.例1】询问学号 - 洛谷 难度系数&#xff1a;★ 1. 题目描述 2. 算法原理 直接⽤ vector 或者数组模拟即可。 3. 参考代码 #include <iostream> #include <vector>using namespace st…

Ubuntu用户安装cpolar内网穿透

前言 Cpolar作为一款体积小巧却功能强大的内网穿透软件&#xff0c;不仅能够在多种环境和应用场景中发挥巨大作用&#xff0c;还能适应多种操作系统&#xff0c;应用最为广泛的Windows、Mac OS系统自不必多说&#xff0c;稍显小众的Linux、树莓派、群辉等也在起支持之列&#…

C#实现高性能异步文件下载器(支持进度显示/断点续传)

一、应用场景分析 异步文件下载器用处很大&#xff0c;当我们需要实现以下功能时可以用的上&#xff1a; 大文件下载&#xff08;如4K视频/安装包&#xff09; 避免UI线程阻塞&#xff0c;保证界面流畅响应多任务并行下载 支持同时下载多个文件&#xff0c;提升带宽利用率后台…

Oracle比较好的几本书籍

1.《Oracle专家高级编程》 2.《Oracle高效设计》 3.《Oracle9i&10g&11g编程艺术深入数据库体系结构》 4.《让Oracle跑的更快》(1/2) ....... n.《Oracle官方文档的阅读》下面包括这几个部分&#xff0c;可以跟进研读一下&#xff1a; &#xff08;1&#xff09;《…

js和java中方法重载(js本身是不支持方法重载,方便对比学习)

js如果需要实现方法重载 示例 1&#xff1a;根据参数数量实现重载 function overloadExample() {if (arguments.length 1) {console.log(一个参数:, arguments[0]);} else if (arguments.length 2) {console.log(两个参数:, arguments[0], arguments[1]);} else {console.l…

Android : Camera之CHI API

来自&#xff1a; https://www.cnblogs.com/szsky/articles/10861918.html 一、CAM CHI API功能介绍&#xff1a; CHI API建立在Google HAL3的灵活性基础之上&#xff0c;目的是将Camera2/HAL3接口分离出来用于使用相机功能&#xff0c;它是一个灵活的图像处理驱动程序&#…

Netty基础—2.网络编程基础四

大纲 1.网络编程简介 2.BIO网络编程 3.AIO网络编程 4.NIO网络编程之Buffer 5.NIO网络编程之实战 6.NIO网络编程之Reactor模式 5.NIO网络编程之Buffer (1)Buffer的作用 Buffer的作用是方便读写通道(Channel)中的数据。首先数据是从通道(Channel)读入缓冲区&#xff0c;从…

Git前言(版本控制)

1.Git 目前世界上最先进的分布式版本控制系统。 git官网&#xff1a;https://git-scm.com/ 2.版本控制 2.1什么是版本控制 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容修改历史&#xff0c;方便查看更改历史记录备份以便恢复以前…

调试正常 ≠ 运行正常:Keil5中MicroLIB的“量子态BUG”破解实录

调试正常 ≠ 运行正常&#xff1a;Keil5中MicroLIB的“量子态BUG”破解实录——从勾选一个选项到理解半主机模式&#xff0c;嵌入式开发的认知升级 &#x1f4cc; 现象描述&#xff1a;调试与烧录的诡异差异 在线调试时 程序正常运行 - 独立运行时 设备无响应 ! 编译过程 0 Err…

算法每日一练 (9)

&#x1f4a2;欢迎来到张胤尘的技术站 &#x1f4a5;技术如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 算法每日一练 (9)最小路径和题目描述解题思路解题代码…

【高项】信息系统项目管理师(四)项目整合管理【4分】

一、管理基础 项目整合管理的责任不能被授权或转移&#xff0c;项目经理必须对整个项目承担最终责任。 执行项目整合时项目经理承担双重角色&#xff1a; 1、组织层面上&#xff0c;项目经理扮演重要角色&#xff0c;与项目发起人携手合作&#xff0c;了解战略目标并确保项目目…

ECEF与ENU坐标系定义及C语言实现

一、ECEF与ENU坐标系定义 ECEF坐标系&#xff08;地心地固坐标系&#xff09; 原点&#xff1a;地球质心X轴&#xff1a;指向本初子午线与赤道交点Y轴&#xff1a;在赤道平面内与X轴垂直Z轴&#xff1a;指向北极数学表示&#xff1a; P e c e f ( x , y , z ) P_{ecef} (x,…

sql语句分页的关键字是?

在 SQL 中&#xff0c;分页通常是通过限制查询结果的数量并指定从哪一行开始获取数据来实现的。不同的数据库系统使用不同的分页关键字。 以下是常见数据库系统的分页关键字&#xff1a; MySQL / PostgreSQL / SQLite 使用 LIMIT 和 OFFSET 来进行分页&#xff1a; LIMIT 限…