【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.pswp.cn/bicheng/73090.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73090.shtml
英文地址,請注明出處:http://en.pswp.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 限…