精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試題:MySQL表刪除一半數據,B+樹索引文件會不會變小?

數據庫 MySQL
一張千萬級的數據表,刪除了一半的數據,你覺得B+樹索引文件會不會變小?我們先來做個實驗,看看表的大小是如何變化的??

[[405168]]

本文轉載自微信公眾號「微觀技術」,作者Tom哥  。轉載本文請聯系微觀技術公眾號。

一張千萬級的數據表,刪除了一半的數據,你覺得B+樹索引文件會不會變小?

(答案在文章中!!)

我們先來做個實驗,看看表的大小是如何變化的?

做個實驗,讓數據說話

1、首先,在mysql中創建一張用戶表,表結構如下:

  1. CREATE TABLE `user` ( 
  2.   `id` bigint(20) NOT NULL AUTO_INCREMENT, 
  3.   `user_name` varchar(128) NOT NULL DEFAULT '' COMMENT '用戶名'
  4.   `age` int(11) NOT NULL  COMMENT '年齡'
  5.   `address` varchar(128) COMMENT '地址'
  6.    PRIMARY KEY (`id`) 
  7. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COMMENT='用戶表'

2、造數據。用戶表中批量插入1000W條數據

  1. @GetMapping("/insert_batch"
  2. public Object insertBatch(@RequestParam("batch"int batch) { 
  3.  
  4.     // 設置批次batch=100000,共插入 1000W 條數據 
  5.     for (int j = 1; j <= batch; j++) { 
  6.         List<User> userList = new ArrayList<>(); 
  7.         for (int i = 1; i <= 100; i++) { 
  8.             User user = User.builder().userName("Tom哥-" + ((j - 1) * 100 + i)).age(29).address("上海").build(); 
  9.             userList.add(user); 
  10.         } 
  11.         userMapper.insertBatch(userList); 
  12.     } 
  13.     return "success"

批量插入,每個批次100條記錄,100000個批次,共1000W條數據。

3、查看表文件大小

索引文件大小約 595 M,最后修改時間 02:17

說明:

MySQL 8.0 版本以前,表結構是存在以.frm為后綴的文件里。

獨享表空間存儲方式使用.ibd文件來存放數據和索引,且每個表一個.ibd文件。

表數據既可以存在共享表空間,也可以是單獨文件。通過innodb_file_per_table參數控制。MySQL 5.6.6 版本之后,默認是ON,這樣,每個 InnoDB 表數據存儲在一個以 .ibd為后綴的文件中。

4、刪除 約500W條數據

  1. @GetMapping("/delete_batch"
  2. public Object deleteBatch(@RequestParam("batch"int batch) { 
  3.     for (int j = 1; j <= batch; j++) { 
  4.         List<Long> idList = new ArrayList<>(); 
  5.         for (int i = 1; i <= 100; i += 2) { 
  6.             idList.add((long) ((j - 1) * 100 + i)); 
  7.         } 
  8.         userMapper.deleteUser(idList); 
  9.     } 
  10.     return "success"

開始時user表有1000W條數據,刪除若干后,目前剩余約 550W 條。

5、在刪除約500W條記錄后,再次查看表文件大小

索引文件大小約 595 M,最后修改時間 10:34

實驗結論:

對于千萬級的表數據存儲,刪除大量記錄后,表文件大小并沒有隨之變小。好奇怪,是什么原因導致的?不要著急,接下來,我們來深入剖析其中原因。

數據表操作有新增、刪除、修改、查詢,其中查詢屬于讀操作,并不會修改文件內容。修改文件內容的是寫操作,具體分為有刪除、新增、修改三種類型。

接下來,我們開始逐一分析。

刪除數據

InnoDB 中的數據采用B+樹來組織結構。如果對B+樹存儲結構不清楚的話,可以先看下我之前寫的一篇文章,鞏固下基礎知識。

面試題:mysql 一棵 B+ 樹能存多少條數據?

假如表中已經插入若干條記錄,構造的B+樹結構如下圖所示:

刪除id=7這條記錄,InnoDB引擎只是把id=7這條記錄標記為刪除,但是空間保留。如果后面有id位于(6,19)區間內的數據插入時,可以重復使用這個空間。

上圖,表示新插入一條id=16的記錄。

除了記錄可以復用外,數據頁也可以復用。當整個頁從B+樹摘掉后,可以復用到任何位置。

比如,將page number=5頁上的所有記錄刪除以后,該page標記為可復用。此時如果插入一條id=100的記錄需要使用新頁,此時page number=5便可以被復用了。

如果相鄰兩個page的利用率都很低,數據庫會將兩個頁的數據合并到其中一個page上,另一個page被標記為可復用。

當然,如果是像上面我們做的實驗那樣,將整個表的數據全部delete掉呢?所有的數據頁都會被標記為可復用,但空間并沒有釋放,所以表文件大小依然沒有改變。

總結:delete命令只是把數據頁或記錄位置標記為可復用,表空間并沒有被回收,該現象我們稱之為”空洞“。

新增數據

如果是插入的數據是隨機的非主鍵有序,可能會造成數據頁分裂。

上圖可以看到,假如page number=5的數據頁已經滿了,此時插入id=15的記錄,需要申請一個新的頁page number=6來保存數據。待頁分裂完成后,page number=5的最后位置就會留下一個可復用的空洞。

相反,如果數據是按照索引遞增順序插入的,那么索引是緊湊的,不會出現數據頁分裂。

修改數據

如果修改的是非索引值,那么并不會影響B+樹的結構。

比如,更新id=7的其它字段值,主鍵id保持不變。整個B+樹并沒有發生結構調整。

但是,如果修改的內容包含了索引,那么操作步驟是先刪除一個舊的值,然后再插入一個新值。可能會造成空洞。

分析發現,新增、修改、刪除數據,都可能造成表空洞,那么有沒有什么辦法壓縮表空間??

客官,請繼續往下看

新建表

我們可以新建一個影子表B與原表A的結構一致,然后按主鍵id由小到大,把數據從表A遷移到表B。由于表B是新表,并不會有空洞,數據頁的利用率更高。

待表A的數據全部遷移完成后,再用表B替換表A。

MySQL 5.5 版本之前,提供了一鍵命令,快捷式完成整個流程,轉存數據、交換表名、刪除舊表。

  1. alter table 表名  engine=InnoDB  

但是,該方案有個致命缺點,表重構過程中,如果有新的數據寫入表A時,不會被遷移,會造成數據丟失。

Online DDL

為了解決上面問題,MySQL 5.6 版本開始引入 Online DDL,對流程做了優化。

執行步驟:

  • 新建一個臨時文件
  • 掃描表A主鍵的所有數據頁,生成B+ 樹,存儲到臨時文件中
  • 在生成臨時文件過程中,如果有對表A做寫操作,操作會記錄到一個日志文件中
  • 當臨時文件生成后,再重放日志文件,將操作應用到臨時文件
  • 用臨時文件替換表A的數據文件
  • 刪除舊的表A數據文件 

與新建表的最大區別,增加了日志文件記錄和重放功能。遷移過程中,允許對表A做增刪改操作。

 

責任編輯:武曉燕 來源: 微觀技術
相關推薦

2019-08-29 10:46:22

MySQL索引數據庫

2020-04-01 18:08:57

MySQL B-樹B+樹

2020-03-18 09:33:47

數據庫程序員數組

2019-01-29 19:43:10

MySQL索引數據庫

2021-02-16 16:38:41

MySQLB+樹索引

2025-11-03 16:30:44

2019-09-24 09:33:53

MySQLB+樹InnoDB

2024-10-08 09:35:23

2024-06-03 00:00:01

索引MySQL技術

2022-03-28 08:24:52

MySQL聚簇索引非聚簇索引

2021-05-19 09:51:31

MySQL-B+樹數據

2019-03-14 09:51:50

MySQL存儲邏輯架構

2025-09-17 07:56:32

2024-11-19 08:40:18

2021-09-04 11:31:00

MYSQLSQL調優

2023-07-26 00:43:31

2025-05-20 01:00:00

2020-02-12 19:01:22

索引B-樹B+樹

2021-06-04 07:55:05

MySQLB+ 樹數據

2024-05-22 09:01:53

InnoDBB+索引
點贊
收藏

51CTO技術棧公眾號

久久视频国产| 欧美一区国产| 国产.精品.日韩.另类.中文.在线.播放| 美女久久久久久久| 免费啪视频在线观看| rebdb初裸写真在线观看| 99精品国产一区二区三区不卡| 热re99久久精品国产66热| 女人又爽又黄免费女仆| 久久伊人国产| 亚洲电影一区二区三区| 欧美亚洲爱爱另类综合| 中文字幕一级片| 黄色亚洲在线| 有码中文亚洲精品| 日本国产在线视频| 日本在线一区二区| 精品欧美激情精品一区| 椎名由奈jux491在线播放| 四虎永久在线观看| 久久99精品一区二区三区| 欧美激情影音先锋| 亚洲色图欧美色| 日本免费成人| 精品久久久久久久久久国产| 亚洲砖区区免费| 亚洲欧美丝袜中文综合| 国产一区二区三区免费| 日韩av片免费在线观看| 欧美成人一区二区三区高清| 国产在线日韩精品| 日韩成人在线电影网| 一级黄色片国产| 九九九伊在线综合永久| 午夜成人在线视频| 精品少妇人欧美激情在线观看| 欧美jizzhd69巨大| 国产亚洲1区2区3区| 国产伦精品一区二区三区| 艳妇乳肉豪妇荡乳av| 久久三级福利| 97视频免费在线看| 国产真人真事毛片| 欧美日韩网址| 美日韩精品视频免费看| 岛国片在线免费观看| 国产一区二区三区网| 日韩电影网在线| 91丨porny丨对白| silk一区二区三区精品视频| 3atv一区二区三区| 狠狠操狠狠干视频| 四虎地址8848精品| 欧美日韩日日夜夜| 最新中文字幕免费视频| 日韩精选视频| 欧美亚洲日本国产| 性欧美极品xxxx欧美一区二区| 午夜激情电影在线播放| 亚洲成人激情自拍| 午夜免费福利小电影| 91豆花视频在线播放| 亚洲一区在线观看视频| 亚洲精品无码国产| 麻豆免费在线| 色嗨嗨av一区二区三区| 亚洲精品一二三四五区| 成人性片免费| 欧美高清你懂得| 天堂av2020| 亚洲天堂av资源在线观看| 日韩一级黄色大片| 在线xxxxx| 女人抽搐喷水高潮国产精品| 日韩成人av网| www色com| 欧美在线91| 欧美精品精品精品精品免费| 精品美女久久久久| 日韩不卡手机在线v区| 91精品国产综合久久久久久蜜臀| 国产精品亚洲欧美在线播放| 国产精品系列在线播放| 国产日韩欧美二区| 国产小视频在线观看| 国产精品美女久久久久久久| 日本女人高潮视频| 国产社区精品视频| 在线观看国产日韩| 手机在线观看日韩av| 国产精品一线| 日韩中文字幕av| 国产亚洲精品成人| 日本中文字幕一区| 99一区二区| 国产最新视频在线| 一区二区三区四区亚洲| 国产免费毛卡片| 4438五月综合| 亚洲欧美日韩精品久久奇米色影视| www亚洲色图| 国内自拍一区| 国产精品视频久久久| 亚洲h视频在线观看| 久久久国产一区二区三区四区小说| 一本色道久久综合亚洲二区三区| 久久av色综合| 欧美欧美欧美欧美首页| 亚洲精品乱码久久| 88国产精品视频一区二区三区| 91高清在线免费观看| 中文字幕在线观看精品| 不卡在线观看av| 在线不卡日本| 欧美电影免费观看| 精品国产一区二区三区av性色| 免费看的黄色网| 99亚洲一区二区| 91最新国产视频| 成人在线二区| 懂色av中文一区二区三区天美| 日本一二三区在线| 精品少妇av| 欧美亚洲另类视频| 亚洲黄色小说网| 亚洲品质自拍视频| 日韩欧美国产片| 香蕉视频一区二区三区| 欧美激情xxxx性bbbb| 一级特黄aa大片| 国产三级久久久| 欧美日韩黄色一级片| 1204国产成人精品视频| 久久av红桃一区二区小说| 探花国产精品一区二区| 久久亚洲精华国产精华液| 亚洲一区二区三区av无码| 亚洲爽爆av| 日韩中文字幕在线| 亚洲视频一区在线播放| 日本一区二区三区高清不卡 | 欧美1区3d| 91久久国产婷婷一区二区| 国产1区2区3区在线| 欧美性开放视频| 日韩中文字幕电影| 性欧美长视频| 日本一区二区精品| 亚洲精品.com| 最近2019免费中文字幕视频三 | 欧美久久久久久蜜桃| 日本黄区免费视频观看| 青草av.久久免费一区| 午夜视频久久久| 成人毛片免费| 久久国产精品久久国产精品| 国产免费福利视频| 一区二区三区四区av| 在线观看一区二区三区视频| 欧美日韩国产在线一区| 国产精品一区二区三区在线 | 久草在现在线| 欧美日韩一区成人| 久久一级免费视频| 国产美女在线观看一区| 人妻av无码专区| 欧美日韩一区二区三区四区不卡| 97av在线视频免费播放| 免费资源在线观看| 欧美日韩精品欧美日韩精品一综合| 日本污视频网站| 国内成+人亚洲+欧美+综合在线| 中日韩在线视频| 久久69av| 欧美中文字幕视频在线观看| 国产在线观看网站| 91精品国产综合久久精品图片| 九九热国产精品视频| 91亚洲精品一区二区乱码| 免费在线观看毛片网站| 99精品视频在线观看播放| dy888夜精品国产专区| 欧美激情网站| 日韩在线中文视频| 少妇人妻一区二区| 欧美伊人久久久久久久久影院 | 国产在线欧美日韩| 九九热线视频只有这里最精品| 久久精品中文字幕| 婷婷丁香花五月天| 欧美日韩精品福利| 国产精品suv一区二区69| 久久免费精品国产久精品久久久久| 亚洲天堂av线| 一区二区亚洲精品| 久久大香伊蕉在人线观看热2| 一区在线影院| 国模视频一区二区三区| 一级日本在线| 亚洲国产私拍精品国模在线观看| 中国精品一区二区| 午夜精品久久久久久久99水蜜桃 | 岛国在线视频| 欧美精品一区二区久久久| 国产精品成人久久久| 一区二区三区鲁丝不卡| 亚洲а∨天堂久久精品2021| 国产高清精品在线| 色多多视频在线播放| 在线观看不卡| 日本成人性视频| 亚洲性视频大全| www.久久久| 国产精品4hu.www| 青青精品视频播放| 成人女同在线观看| 久久亚洲国产精品| av资源在线观看免费高清| 亚洲国产日韩欧美综合久久 | 欧美xoxoxo| 久久久久久久久亚洲| 国产盗摄在线观看| 日韩在线欧美在线| 手机看片福利永久| 日韩午夜激情免费电影| 中文永久免费观看| 色综合久久久久综合体桃花网| 九九视频在线观看| 亚洲欧美在线aaa| 在线观看国产精品一区| 不卡的av中国片| 少妇丰满尤物大尺度写真| 九九国产精品视频| 国产精欧美一区二区三区白种人| 丝袜诱惑制服诱惑色一区在线观看| 99热久久这里只有精品| 欧美日韩蜜桃| 久久久久久久久久伊人| 婷婷综合在线| 久久久一二三四| 久久一区91| 中文字幕一区综合| 在线一区免费| 亚洲精品天堂成人片av在线播放| 国产精品国产三级国产在线观看| 日韩国产一区久久| 精品精品久久| 午夜精品区一区二区三| 日韩欧美字幕| 天天爱天天做天天操| 中文字幕乱码亚洲无线精品一区 | 少妇aaaaa| 亚洲欧美日韩国产另类专区| 日本黄色片免费观看| 亚洲人精品午夜| 久久久精品国产sm调教网站| 亚洲精品日日夜夜| 久久中文字幕无码| 午夜精品123| 高潮毛片又色又爽免费| 91黄视频在线观看| 91av久久久| 日韩欧美在线影院| 内射无码专区久久亚洲| 亚洲精品97久久| 欧美成人免费| 色香阁99久久精品久久久| 巨大荫蒂视频欧美大片| 美女扒开尿口让男人操亚洲视频网站| 黄网站视频在线观看| 欧美人与物videos| 华人av在线| 国产精品视频久久久| 不卡一区视频| 国产一区在线观| 欧洲杯足球赛直播| www.69av| 国产亚洲在线| 亚洲精品性视频| 成人污视频在线观看| 久久亚洲AV成人无码国产野外| 久久久99精品久久| 日本一级特级毛片视频| 亚洲国产成人精品视频| 全部毛片永久免费看| 欧美日韩精品欧美日韩精品一| 99精品国产99久久久久久97| 亚洲福利视频免费观看| 国产在线网站| 欧美国产中文字幕| 欧美韩国亚洲| 99超碰麻豆| 波多野结衣在线播放一区| 久久久久久av无码免费网站下载| 性久久久久久| 国产一精品一aⅴ一免费| xf在线a精品一区二区视频网站| 亚洲色图100p| 欧美色图在线视频| 不卡的日韩av| 中文字幕日韩视频| 妞干网免费在线视频| 91日本在线观看| 九色精品91| 久久久久久久9| 精品一区二区成人精品| 少妇光屁股影院| 亚洲一区在线观看免费| 欧美男人天堂网| 亚洲精品成人av| 欧美14一18处毛片| 91精品久久久久久久久中文字幕| 日韩超碰人人爽人人做人人添| 少妇熟女一区二区| 日韩精品乱码免费| 菠萝菠萝蜜网站| 一区二区成人在线视频| 在线观看一二三区| 亚洲无亚洲人成网站77777| 爱看av在线| 91丝袜脚交足在线播放| 久久在线视频| 污污的网站18| 久久久99精品免费观看不卡| 日韩伦人妻无码| 精品国产网站在线观看| 免费在线视频欧美| 国产精品入口夜色视频大尺度| 亚洲精品进入| 久色视频在线播放| 成人免费视频网站在线观看| 蜜臀久久精品久久久用户群体| 欧美亚州韩日在线看免费版国语版| 五月天久久久久久| 97香蕉久久夜色精品国产| av不卡一区| 日本中文字幕在线视频观看| 国产精品99久久久久| 污污的视频在线免费观看| 欧美视频你懂的| 成人高清在线| 国产狼人综合免费视频| 欧美日韩激情| 天堂视频免费看| 亚洲欧洲日本在线| 国产又黄又大又粗的视频| xxxx欧美18另类的高清| 欧美成人免费全部网站| 亚洲一区三区视频在线观看 | 国产精品一区电影| 青青草国产免费一区二区下载 | 国产激情视频一区二区三区欧美 | 日韩一区二区精品葵司在线| 国产区在线看| 成人av免费在线看| 亚洲大片在线| 久久久久亚洲av无码专区桃色| 色呦呦日韩精品| www.91在线| 亚洲综合社区网| 极品裸体白嫩激情啪啪国产精品| 亚洲午夜久久久久久久久| 精品成人久久av| 久热av在线| 国产中文字幕日韩| 黄色日韩精品| 中文字幕免费高清| 欧美美女视频在线观看| 亚洲wwwww| 免费一区二区三区| 久久精品国产一区二区三| 欧美做爰爽爽爽爽爽爽| 欧美成人vr18sexvr| 日韩激情电影免费看| 日韩一区国产在线观看| 国产九色精品成人porny| 国产午夜视频在线播放| 亚洲男人的天堂在线播放| 久久婷婷五月综合色丁香| 永久久久久久| 91丨九色porny丨蝌蚪| 中文字幕在线视频第一页| 久久国产精品久久久久久久久久 | 亚洲人成电影在线播放| 日韩毛片免费视频一级特黄| 国产精品国三级国产av| 国产亚洲欧美中文| 国产成a人亚洲精v品无码 | 国产精品人人人人| 日韩中文字幕网站| 亚洲激情播播| 国偷自产av一区二区三区麻豆| 欧美日韩亚洲一区二| 精品欧美色视频网站在线观看| 精品一区在线播放| 国产一区二区免费在线| 无码人妻黑人中文字幕| 欧美韩日一区二区| 99成人超碰| 国产精品成人一区二区三区电影毛片 |