MySQL磁盤是如何存儲一行數據的?

      網友投稿 853 2025-03-31

      1 Mysql物理數據模型

      每一行數據都是放在數據頁,按數據頁為單位把磁盤上的數據加載到內存的緩存頁。也是以頁為單位,將緩存頁的數據刷入磁盤上的數據頁。

      表、行和字段是邏輯上的概念

      表空間、數據區和數據頁是物理概念。這些東西對應到Mysql在磁盤上的一些物理文件。

      SQL語句僅指定查詢或更新哪個表的哪些數據,那它是怎么知道:

      這些數據在哪個表空間?哪個數據區?哪些數據頁?對應MySQL節點的哪些磁盤文件?

      2 為何不直接更新磁盤數據?

      MySQL磁盤是如何存儲一行數據的?

      來個請求就直接對磁盤文件進行隨機讀寫,然后更新磁盤文件里的數據,執行請求性能必然極差。因為磁盤隨機讀寫性能極差,所以MySQL才設計了這套機制,通過在內存里更新數據,然后寫redo log及事務提交,后臺線程不定時地刷新內存數據到磁盤文件。

      這樣每個更新請求,基本都是更新內存,然后順序寫日志文件,這兩種操作性能都是很高的。

      3 數據頁的意義

      執行update之類的SQL時,必然涉及數據更新,此時對數據不是直接更新磁盤文件,而是要把磁盤上的一些數據加載到內存,然后對內存里的數據進行更新,同時寫redo log到磁盤。

      難道每次都是把磁盤里的一條數據加載到內存里去更新,然后下次要更新別的數據時,再從磁盤里加載另外一條數據到內存?這樣每次一條條數據加載到內存里更新,效率太低!

      為此,InnoDB引入數據頁:將數據組織成一頁頁的,每頁16K,然后每次加載磁盤數據到內存時,至少加載一頁甚至多頁的數據:

      假設執行:

      update xxx set xxx=xxx where id=1

      則此時會將id=1這條數據所在的一頁數據都加載到內存,這頁的數據里可能還包含id=2,id=3的數據。

      更新完id=1的數據后,接著更新id=2的數據,那此時就不用再讀磁盤里的數據了,因為id=2本就和id=1同頁,之前這頁數據就已被加載到內存,所以此時,直接更新內存里的數據頁中的id=2這條數據即可。

      磁盤和內存間的數據交換通過數據頁來執行,包括內存里更新后的臟數據,刷回磁盤時,也是至少一個數據頁刷回去。

      因此,我們就能一直在內存里更新各種數據,當I/O線程把內存里的臟數據刷到磁盤時,也是以數據頁為單位刷回。

      4 MySQL磁盤如何存儲一行數據?

      對一個表,可指定其行存儲的格式,比如這里用COMPACT格式:

      CREATE TABLE table_name (columns) ROW_FORMAT=COMPACT ALTER TABLE table_name ROW_FORMAT=COMPACT

      建表時,就可指定行存儲格式,后續也能修改。

      COMPACT行存儲格式下,每行數據實際存儲時,格式如下:

      變長字段的長度列表,null值列表,數據頭,column01的值,column02的值,column0n的值......

      對于每行數據,存儲時都會有一些頭字段對這行數據進行描述,再放上這一行數據每一列具體值,這就是所謂的行格式。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:無代碼開發工具安裝視頻(源碼編程器下載安裝)
      下一篇:如何在WPS設置不同的頁眉和頁腳
      相關文章
      全亚洲最新黄色特级网站 | 亚洲一区二区三区香蕉| 亚洲精品无码mⅴ在线观看| 亚洲国产情侣一区二区三区| 亚洲AV永久无码精品一百度影院| 91麻豆国产自产在线观看亚洲 | 久久久亚洲欧洲日产国码aⅴ | 亚洲精品美女久久7777777 | 亚洲熟女精品中文字幕| 亚洲精品天堂在线观看| 2017亚洲男人天堂一| 亚洲国产精品一区二区三区在线观看| 亚洲国产综合在线| 亚洲国产精品综合久久2007| 亚洲一卡二卡三卡| 99999久久久久久亚洲| 最新国产精品亚洲| 亚洲av无码成人精品国产| 精品亚洲福利一区二区| 狠狠综合亚洲综合亚洲色| 丰满亚洲大尺度无码无码专线 | 亚洲Av无码国产情品久久 | 亚洲91av视频| 91亚洲国产成人精品下载| 久久久亚洲欧洲日产国码是AV| 久久精品国产亚洲av麻豆小说 | 亚洲国产精品日韩专区AV| 亚洲日韩精品无码专区网站| 国产亚洲情侣一区二区无码AV| 亚洲色精品aⅴ一区区三区| 国产亚洲精品资源在线26u| 亚洲av无码不卡一区二区三区| 久久精品九九亚洲精品| 久久久亚洲欧洲日产国码是AV| 久久精品国产亚洲AV蜜臀色欲| 亚洲精品第一国产综合亚AV| 国产精品观看在线亚洲人成网| 亚洲国产婷婷综合在线精品 | 亚洲色成人网站WWW永久| 国产v亚洲v天堂无码网站| 亚洲尹人香蕉网在线视颅|