国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

分庫分表實戰:追根溯源—一次查詢會經過哪些流程呢?

數據庫 其他數據庫
MYSQL InnoDB存儲引擎中,有一塊內存區域叫做Buffer Pool,也叫做緩沖池,一般情況,MYSQL的數據都存放在磁盤中,如果你去查詢數據,數據就會從磁盤加載到MYSQL內存中,也就是放在緩沖池Buffer Pool中。

?一次查詢的全過程是什么樣的呢?

這個時候,我們通過各種百度和Google,然后加上自己的理解,終于搞明白了MySQL一次查詢的全過程了。

首先,用戶想要查詢訂單數據時,會先發送一個查詢請求,如下圖所示:

分庫分表實戰(4):追根溯源—一次查詢會經過哪些流程呢?

可以看到,當用戶發送查詢請求時,因為外賣訂單項目是部署在Tomcat中的,Tomcat中的線程首先就會接收到用戶的請求,然后把請求交給外賣訂單項目。

而外賣訂單項目,會根據代碼去數據庫中查詢訂單的數據,不管是使用原生的JDBC、還是Mybatis、Hibernate等框架,其實底層都是先獲取一個JDBC連接。

通過JDBC連接,我們才可以和數據庫建立連接,然后通過JDBC的連接,到MYSQL數據庫中執行sql語句。

我們來看一下,在MYSQL數據庫中是如何執行一個sql語句的,如下圖:

分庫分表實戰(4):追根溯源—一次查詢會經過哪些流程呢?

JDBC連接是負責和MYSQL通信的,會把sql語句發給MYSQL執行,可以看到MYSQL中,也會有線程獲取到JDBC連接中的sql語句,然后去執行。

  • 線程會把sql語句交給MYSQL中的sql接口,sql接口會轉發給sql解析器去解析,比如,sql解析器會把一條sql語句中的表名稱、WHERE關鍵字后面的查詢條件、以及具體查詢哪些字段等信息都解析出來,然后把解析好的信息交給查詢優化器處理。
  • 查詢優化器會根據sql解析器解析好的sql語句信息,選擇一個效率最高的處理方案,來作為執行sql語句的執行計劃,然后轉交給執行器去執行。
  • 而執行器會調用MYSQL的存儲引擎,這里我們用InnoDB存儲引擎舉例,InnoDB存儲引擎中的接口就會來執行sql語句,如下圖:

分庫分表實戰(4):追根溯源—一次查詢會經過哪些流程呢?

可以看到,MYSQL InnoDB存儲引擎中,有一塊內存區域叫做Buffer Pool,也叫做緩沖池,一般情況,MYSQL的數據都存放在磁盤中,如果你去查詢數據,數據就會從磁盤加載到MYSQL內存中,也就是放在緩沖池Buffer Pool中。

而Buffer Pool,如果我們要再細分一下的話,可以看到是由多個chunk組成的,每個chunk大概占128MB內存的大小,每個chunk中都有多個緩存頁,每個緩存頁的大小是16kb,緩存頁就是用來存放加載到內存的數據的。

每個緩存頁都有個對應的描述數據塊,可以把描述數據理解為緩存頁的一個指針,通過描述數據就可以找到對應的緩存頁。

這個時候,當InnoDB存儲引擎執行sql語句查詢數據時,首先,得要從磁盤中加載數據,如下圖:

分庫分表實戰(4):追根溯源—一次查詢會經過哪些流程呢?

這里的表空間呢,指的是獨立表空間,在MySQL中,表空間分為2種,分別是共享表空間和獨立表空間, 不過在MySQL 5.6.6及后續版本默認使用的是獨立表空間,說白了就是一個獨立表空間在磁盤中會單獨對應一個表空間文件,而一個表空間文件存放著MYSQL數據庫中一張表的數據。

在表空間中有很多數據區組,每個數據區組中包含256個數據區,而每個數據區中又包含64個數據頁,因為每個數據頁的大小默認是16KB,所以也就是說一個數據區的大小是1MB。

從磁盤加載數據到MYSQL內存中,其實就是通過磁盤IO的方式,把數據頁中的數據加載到緩沖池Buffer Pool中的緩存頁中,然后通過InnoDB存儲引擎和sql接口,一步步返回給用戶。

那么,在查詢的整個流程中,哪個環節最容易拖后腿呢? 答案就是磁盤IO,也就是將磁盤中的數據頁數據讀取到Buffer Pool的緩存頁這個過程。

那么,磁盤IO為什么會拖后腿呢?磁盤IO的過程大概是什么樣子的呢?接下來,就很有必要來看下這一塊內容了。

查詢慢深層次原因揭秘:磁盤IO的過程

先來看下磁盤的物理結構,如下圖:

分庫分表實戰(4):追根溯源—一次查詢會經過哪些流程呢?

磁盤內部的組成部分,主要為主軸、磁盤盤片、讀寫磁頭、傳動軸和傳動手臂,其中數據就是存放在磁盤盤片上的,磁盤盤片被劃分為了無數個小扇區,每個扇區中都有很多半徑不同的環形磁道,不同的磁道中存放著不同的數據。

在實際讀寫數據時,主軸會讓磁盤盤片轉動,然后再通過傳動手臂的伸展,讓讀寫磁頭在磁盤扇區的磁道上讀取和寫入數據,一次磁盤IO花費的時間,主要由尋道時間、旋轉延遲和數據傳輸時間三部分構成,接下來,我們分別來看下這三部分的耗時情況。

1.尋道時間

剛才我們知道了,磁盤盤片表面上被分為了無數小扇區,每個扇區中都有很多半徑不同的磁道,不同的磁道上放著不同的數據。

而尋道時間,指的是將讀寫磁頭移動到正確半徑的磁道上所需要的時間,尋道時間越短,磁盤IO操作越快,目前磁盤的平均尋道時間,一般在3~15ms,主流磁盤一般在5ms以下。

2.旋轉延遲

尋道結束后,還需要讀寫磁頭旋轉到這個磁道的正確位置上才能讀寫數據,而旋轉延遲,指的是從尋道時間結束開始,到讀寫磁頭旋轉到磁道正確位置的這段時間間隔。

但是,我們一般將磁盤旋轉周期值的一半,作為旋轉延遲的近似值;常見的磁盤轉速有5400轉和7200轉,表示每分鐘能轉5400和7200圈。

比如,我們以7200轉舉例,也就是說1秒鐘能轉120圈,磁盤的旋轉周期就是 1/120 秒,所以,旋轉延遲的近似值為 1/120/2 = 4.17ms。

3.數據傳輸時間

傳輸時間,指的是將數據從磁盤盤片讀出或寫入的時間,一般在零點幾毫秒,相對于前兩個時間幾乎可以忽略不計,這樣來看訪問一次磁盤即一次磁盤IO的時間,約等于 5ms + 4.17ms = 9ms。

磁盤的順序讀寫和隨機讀寫

#另外,磁盤的數據讀寫,分為隨機讀寫和順序讀寫這兩種,這兩種讀寫數據的方式,與讀寫磁頭讀寫數據的方式有關。

順序讀寫, 顧名思義就是讀寫磁頭從磁盤中的一個位置,按照順序依次讀寫磁盤盤片中的數據,速度還是挺快的,比如像MYSQL的redo log日志、binglog日志這些日志信息,比如,順序寫數據時,會相應在一個大日志文件末尾,按照順序添加日志信息。

隨機讀寫時,讀寫磁頭則會在磁盤盤片中,隨機切換到不同半徑的磁道上讀寫數據,頻繁切換磁道的這個過程,是非常耗時的。

所以,隨機讀寫的速度相比于順序讀寫來說,是會慢很多的,而MYSQL從磁盤中讀寫數據,正好是比較耗時的隨機讀寫。

正是因為從MYSQL中查詢數據,往往要發生多次耗時的隨機IO,所以,我們對于一些對查詢效率要求較高的數據,一般都會選擇固態硬盤來存放。

固態硬盤的工作原理,簡單來說就是通過電子的移動來實現數據的讀寫,相比于磁盤這種物理機械的運作方式,速度是快很多的,但是固態硬盤是比較貴的,基于成本考慮,一般公司大部分機器還是會選擇普通機械磁盤的。

磁盤IO到底會有多慢呢?

我們回到剛才,已經知道磁盤IO的工作原理,我們也簡單計算了一下,一次磁盤IO大概是9ms的樣子,看上去還可以,但是9ms已經非常慢了,那到底有多慢呢,我們可以和內存的速度對比一下。

一般一次內存隨機讀取的速度,大概在100ns以內,而 1ms = 1000000ns,可以看到,一次磁盤IO耗時是毫秒級的,而內存是納秒級的。

9ms = 9 * 1000000 ns / 100 ns = 90000,說白了磁盤的速度比內存慢 9萬倍左右,那為什么從內存讀寫數據會那么快呢,簡單來說,內存其實是被CPU控制的,而CPU的時鐘頻率的速度相比于磁盤機械運轉速度,速度可以說是非常快了。

當用戶發起一次查詢請求,一次磁盤IO一般是搞不定的,具體發生磁盤IO的次數,還得要取決于B+樹的高度和當時使用索引的情況。

極端情況下,比如沒用到索引,一次查詢可能會發生100多次磁盤IO,這時,磁盤IO所需的總時間大概是 9ms * 100 = 900ms,也就是0.9秒,這就差不多到秒級別了。

隨著數據的快速增長,比如達到了好幾億的數據量,那需要的磁盤IO次數會大幅增加,那這個時候,一次查詢所需要的時間,就會達到好幾秒。

用戶查詢請求慢的根本原因

現在,我們知道用戶查詢請求慢的根本原因了嗎?

其實說白了,就是隨著數據表中的數據量,變得越來越大,導致磁盤IO發生的次數也相應變多了,如果我們能把磁盤IO的次數降到常數級別,那么查詢速度是非常快的,所以,后邊的優化都是以降低磁盤IO次數為目標。?

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2009-02-27 09:44:00

2009-07-17 09:05:23

2010-12-16 20:58:56

虛擬化

2021-10-25 09:16:27

MySQL分庫分表

2010-10-13 14:47:25

2020-12-29 09:23:40

分庫分表訂單

2011-03-14 14:15:25

2010-06-09 09:40:36

IT技術周刊

2022-06-30 07:34:46

分庫分表外賣訂單系統

2021-10-29 07:25:32

分庫分表技巧

2019-07-31 09:27:23

數據庫MySQLSQL

2017-10-19 15:34:52

Hadoop技術機制學習

2019-04-18 14:06:35

MySQL分庫分表數據庫

2022-10-10 17:37:59

分庫分表訂單業務

2020-07-30 17:59:34

分庫分表SQL數據庫

2025-02-19 13:50:00

明星編程軟件

2019-11-12 09:54:20

分庫分表數據

2020-09-27 08:00:49

分庫分表

2020-04-17 10:53:38

釣魚郵件網絡攻擊冠狀病毒

2020-12-29 10:25:07

漏洞JSONP注入
點贊
收藏

51CTO技術棧公眾號

色综合久久久888| 亚洲午夜未满十八勿入免费观看全集| 亚洲最大免费| 欧美黄色免费| 久久国产精品久久久久久久久久| 精品丝袜在线| 欧美日韩国产另类不卡| 五月天最新网址| 国产精品国产三级国产| 精品午夜一区二区三区在线观看| 国产精品igao视频| 国产成人免费精品| 亚洲精品国产精品国自产观看浪潮| aⅴ在线视频男人的天堂| 精品人伦一区二区三区蜜桃网站| 美丽的小蜜桃4春潮| 一区二区中文视频| 久久这里只精品| 国产午夜精品理论片a级大结局| 波多野结衣av一区二区全免费观看| 爱啪啪综合导航| 日韩免费福利电影在线观看| 免费观看成人高潮| 免费精品99久久国产综合精品| 国产成人一区二区三区免费看| 五月久久久综合一区二区小说| 国产在线视频91| 国产亚洲欧美日韩在线观看一区二区 | 日韩在线观看免费网站| 成年人观看网站| 91亚洲精品久久久蜜桃网站| 国产亚洲欧美在线视频| 久久久噜噜噜久久人人看| 欧美日韩大尺度| 亚洲视频在线一区| www.大网伊人| 免费在线一区观看| 色哺乳xxxxhd奶水米仓惠香| 成人高清av在线| 精品久久久久久中文字幕2017| 中文字幕日韩一区| 美女网站在线观看| 欧美日韩亚洲国产综合| 精品人人视频| 韩国国内大量揄拍精品视频| 久久综合99| 蜜桃成人在线| 欧美有码在线| 91热精品视频| 美女在线观看视频一区二区| 亚洲色成人www永久在线观看| 国产精品欧美极品| 北岛玲日韩精品一区二区三区| 久久综合久久鬼色| 天海翼女教师无删减版电影| 欧美日韩中文字幕一区| 亚洲最大网站| 国产精品成人一区二区三区吃奶| 国产日韩一区| 欧美日韩二三区| 亚洲va韩国va欧美va精品| 第四色日韩影片| 性色av一区二区三区红粉影视| 欧美日韩四区| 中文字幕在线中文| 午夜日韩在线观看| 亚洲综合电影| 91久久久久久久久久久久久| 成人黄色一级视频| 搞黄视频免费在线观看| 美日韩精品视频免费看| 国产亚洲一区在线| 丰满少妇在线观看| 欧美一卡二卡三卡| 偷窥自拍亚洲色图精选| 国产又粗又硬又长| 一本色道a无线码一区v| 欧美特黄不卡| 欧美韩国日本精品一区二区三区| 国产精品嫩草99a| av日韩电影| 国产一区自拍视频| 一区二区在线观看视频| 日韩制服一区| 欧美亚洲另类久久综合| 亚洲综合一区二区| 福利一区和二区| 日本一区二区三区四区高清视频| 亚洲激情图片小说视频| 欧洲精品久久久久毛片完整版| 999国内精品视频在线| 国产亚洲污的网站| 免费网站在线观看人| 国产一区二区丝袜| 久久久国产一区二区三区四区小说| 成人av黄色| 成人三级在线| 亚洲一区二区三区视频在线播放| 青草综合视频| 中国老女人av| 精品国产乱子伦一区| 亚洲黄色av| 欧美zzoo| 国产原创欧美精品| 亚洲少妇30p| 一区二区三区四区精品视频| 久久亚洲电影天堂| 日韩精品视频网| 极品美乳网红视频免费在线观看 | 国产调教在线| 91在线免费视频| 51亚洲精品| 亚洲成年人专区| 911精品产国品一二三产区 | 最新69国产成人精品视频免费| 一区二区三区国产精华| 成年人羞羞的网站| 久久伊人精品一区二区三区| 国产麻豆视频一区| 欧美hdxxx| 日韩福利二区| 美女一区二区久久| 91伦理视频在线观看| 成人av在线天堂| 亚洲免费av高清| 性欧美lx╳lx╳| 成人拍拍拍免费视频网站| 欧美成人免费一级人片100| gogogo免费视频观看亚洲一| 欧美色片在线观看| 大荫蒂性生交片| 在线观看国产欧美| 成人综合在线观看| 亚洲精品一区三区三区在线观看| 天天干天天色天天爽| 欧美aaaaa级| 免费99热在线观看| 午夜免费日韩视频| 亚洲欧美一区二区在线观看| 九九热hot精品视频在线播放 | 久久久久久一区二区三区| 久久久不卡网国产精品二区| 欧州一区二区三区| 精品一卡二卡三卡| 欧美国产亚洲精品久久久8v| 中文字幕亚洲一区二区va在线| 香蕉视频一区| 最新在线观看av网站| 俄罗斯精品一区二区三区| 91精品国产欧美一区二区成人 | 亚洲精品高清视频在线观看| 亚洲精品老司机| 最新不卡av在线| 成人18精品视频| 久久精品视频在线免费观看| 国产午夜精品一区二区三区嫩草| 天堂午夜影视日韩欧美一区二区| 国产经典三级在线| 新版中文字幕在线资源| 任我爽在线视频精品一| 亚洲白虎美女被爆操| 国产欧美一区二区三区沐欲| 日韩福利视频导航| 亚洲按摩av| 一区二区免费在线观看| 这里只有视频精品| 综合欧美一区二区三区| 在线观看国产精品入口| aa国产成人| 日本男人操女人| 国产精品一久久香蕉国产线看观看| 91成人免费在线| 国产在线精品一区二区不卡了| 国产精品二区在线| 91精品91久久久中77777老牛| 日韩av电影免费播放| av资源中文在线天堂| 亚洲中文字幕无码一区二区三区| 美女少妇精品视频| 欧美性开放视频| 精品一区二区三区在线播放 | av成人在线电影| 亚洲国产精品女人久久久| 国产欧美日韩麻豆91| 激情亚洲色图| 2018av男人天堂| 中午字幕在线观看| 中文字幕av一区二区| 亚洲欧洲综合另类| 草民电影神马电影一区二区| 日韩va亚洲va欧美va久久| 免费在线成人av| 只有这里有精品| 国产综合久久久久久| 亚洲电影一级黄| www免费在线观看| 久久久久久久片| 国产精品国产精品国产专区不卡| 在线播放日韩精品| 精品视频资源站|