精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品无码久久久久久久久| 中文字幕22页| 欧洲毛片在线| 日韩国产在线一| 神马久久久久久| 日韩视频在线观看一区二区三区| 免费在线观看的电影网站| a美女胸又www黄视频久久| 国产精品18久久久久久麻辣| 手机在线免费看片| 好吊妞国产欧美日韩免费观看网站 | 亚洲免费在线视频一区 二区| 91手机在线视频| av网站中文字幕| 91精品观看| 日韩成人中文字幕在线观看| 日本超碰在线观看| 欧美激情网站| 亚洲免费在线观看视频| 久久影院理伦片| 夜夜躁很很躁日日躁麻豆| 影音先锋国产精品| 久久精品男人天堂| 中文字幕一二三四区| 欧美国产亚洲精品| 欧美综合在线视频| 夜夜添无码一区二区三区| avav免费在线观看| 91浏览器在线视频| www 成人av com| 免费看av在线| 亚洲在线免费| 欧美精品久久久久| 欧美日韩午夜视频| 日本道不卡免费一区| 亚洲精品乱码久久久久久金桔影视 | 毛片在线播放a| 国产亚洲精品福利| 久精品国产欧美| www.国产精品视频| 国产综合成人久久大片91| 国产精品久久网| 中文字幕一区在线播放| 亚洲片区在线| 欧美劲爆第一页| 欧美国产日韩在线观看成人| 91综合久久| 尤物九九久久国产精品的特点| 亚洲最大免费视频| 国产精品任我爽爆在线播放| 日韩色视频在线观看| 色婷婷综合网站| se69色成人网wwwsex| 一本一道波多野结衣一区二区| 日本中文字幕网址| 成人观看网址| 图片区小说区区亚洲影院| www.成年人视频| 波多野结衣中文在线| 亚洲国产综合色| 男女日批视频在线观看| 高清电影在线免费观看| 亚洲国产欧美在线人成| 成人精品视频在线播放| 91色在线看| 五月激情综合色| 男女av免费观看| 免费欧美电影| 欧美三级中文字| 97超碰人人爽| 一区二区三区亚洲变态调教大结局 | 国产日本欧美一区二区| 欧美一区二区影视| 国产午夜在线视频| 中文字幕在线免费不卡| 韩国黄色一级大片| 国产蜜臀在线| 欧美视频中文在线看| www日韩视频| 91精品国产经典在线观看| 欧美麻豆精品久久久久久| 涩多多在线观看| 精品国产影院| 夜夜躁日日躁狠狠久久88av| 少妇视频一区二区| 国产综合欧美| 欧美诱惑福利视频| 中文在线a天堂| 国产精品99久久久久久宅男| 国产麻豆日韩| 国产视频福利在线| 亚洲美女一区二区三区| 欧美网站免费观看| 久久精品嫩草影院| 亚洲精品一区二区三区影院 | 成人资源在线| 亚洲一级黄色av| 久久国产精品国语对白| 国产视频亚洲| 成人在线视频网| 日韩一级免费毛片| 欧美国产一区二区| 青青草国产免费| 国产成人福利夜色影视| 亚洲精品在线一区二区| 激情高潮到大叫狂喷水| 亚洲大胆av| 国产日韩专区在线| 熟妇人妻系列aⅴ无码专区友真希 熟妇人妻av无码一区二区三区 | 日本久久亚洲电影| 亚洲va久久久噜噜噜无码久久| 26uuu国产电影一区二区| 91社在线播放| 天天综合网站| 精品免费日韩av| 欧美xxxx精品| 香蕉久久久久久久av网站| 91精品在线一区| 欧美色18zzzzxxxxx| 一区二区免费在线播放| 国产91色在线观看| 偷拍精品福利视频导航| 欧美高清视频在线播放| 亚洲午夜精品久久久| av亚洲精华国产精华精华| 色撸撸在线观看| 我爱我色成人网| 亚洲精品v欧美精品v日韩精品| 波多野结衣家庭教师| 蜜臀av一区二区| 欧美精品七区| aa国产成人| 精品伦理精品一区| 久草视频手机在线| 久久er精品视频| 日韩精品久久久| 夜鲁夜鲁夜鲁视频在线播放| 欧美精品一区二区在线播放| 丝袜美腿小色网| 激情欧美一区二区三区在线观看| 日本精品一区二区| 丁香六月综合| 日韩av在线一区| 日韩黄色精品视频| 盗摄精品av一区二区三区| 欧美日韩dvd| 四虎精品永久免费| 日韩天堂在线视频| 亚洲无码精品在线观看| 国产精品久久久一区麻豆最新章节| 激情网站五月天| 九色精品国产蝌蚪| 国产97在线观看| 精品999视频| 欧洲精品在线观看| 天天操天天干天天操天天干| 日韩黄色在线观看| 日韩视频专区| 国产欧美自拍| 久久亚洲精品国产亚洲老地址| 一级片视频免费| 亚洲欧美二区三区| 精品人妻一区二区乱码| 国产精品v亚洲精品v日韩精品| 99爱精品视频| 国产ktv在线视频| 亚洲精品成人久久电影| 亚洲欧美精品一区二区三区| 国产亚洲一区二区三区四区 | av手机在线观看| 日韩激情av在线播放| 天天操天天操天天操天天| 国产欧美精品一区aⅴ影院| 国产高潮免费视频| 久久精品一区二区不卡| 97se国产在线视频| 黄毛片在线观看| 国产午夜精品一区理论片飘花| 瑟瑟视频在线免费观看| 亚洲日本电影在线| 理论片大全免费理伦片| 午夜亚洲性色福利视频| 亚洲春色在线| 欧美另类中文字幕| 97成人在线视频| 97超碰人人在线| 日韩一区二区三区三四区视频在线观看 | 国产三级自拍视频| 欧美日韩国产综合新一区| 91激情视频在线观看| 国产一区高清在线| 欧美 丝袜 自拍 制服 另类| 欧美日韩在线观看视频小说| 99re视频在线| 向日葵视频成人app网址| 欧美巨乳美女视频| 全色精品综合影院| 欧美一区二区三区在线视频| 九九热在线免费观看| 国产精品美女一区二区三区| 亚洲婷婷在线观看| 日本aⅴ亚洲精品中文乱码| 欧美国产综合在线| 国产又粗又黄又爽| 亚洲一区二区三区影院| 中文字幕 自拍| 国产精品中文欧美| 黄色一级二级三级| 国内久久精品| 亚洲一区3d动漫同人无遮挡| 久久精品国产亚洲blacked| 国产精品永久免费视频| 久草免费在线视频| 欧美成人网在线| 爱久久·www| 亚洲国产黄色片| 国产精品一区二区三区在线免费观看| 亚洲www啪成人一区二区麻豆| 女性裸体视频网站| 久久久久久久综合日本| 天堂www中文在线资源| 激情欧美一区二区三区在线观看| 欧美两根一起进3p做受视频| 韩国精品一区二区三区| 亚洲第一精品区| 国产亚洲一区| 久久久久久久久久码影片| 51亚洲精品| 成人午夜一级二级三级| 高清欧美日韩| 日韩av免费网站| 狼人综合视频| 国产69精品久久久久9| 大片免费在线观看| 日韩一级裸体免费视频| 精品美女视频在线观看免费软件 | 日韩88av| 日韩精品无码一区二区三区| 婷婷激情久久| 精品免费视频123区| 99久久人爽人人添人人澡| 18成人免费观看网站下载| 精品176极品一区| 国产精品欧美日韩久久| 日韩三级影视| 国产成人一区二区三区电影| 中文在线аv在线| 2019亚洲男人天堂| 国产自产自拍视频在线观看| 久久久久久久久国产精品| 成人影音在线| 久久欧美在线电影| 69av成人| 欧洲精品久久久| 玛雅亚洲电影| 国产精品国产三级国产专播精品人| 神马久久资源| 国产精品高清在线| 日韩在线激情| 亚洲专区国产精品| 大陆精大陆国产国语精品| 国产一区二区不卡视频| 亚洲区小说区图片区qvod| 欧美一区二视频在线免费观看| 精品国产午夜| 一区二区三区四区视频在线观看| 国产大片一区| 成人在线免费观看视频网站| 激情欧美日韩| 日本一本二本在线观看| 日本三级亚洲精品| 超碰在线资源站| 国产超碰在线一区| 国产精品一级黄片| 欧美激情一区不卡| 精品国产视频在线观看| 亚洲国产精品久久一线不卡| 欧美a∨亚洲欧美亚洲| 欧洲一区二区三区免费视频| 国产美女无遮挡永久免费| 日韩女优视频免费观看| 亚洲三区在线观看无套内射| 在线观看欧美日韩国产| 永久免费网站在线| 欧美一区二区三区四区在线| 在线一区视频观看| 亚洲最大成人免费视频| 久久精品论坛| 夜夜爽www精品| 伊人精品视频| 艹b视频在线观看| 国产福利91精品| 国产精品无码久久久久一区二区| 国产精品家庭影院| 日韩成人高清视频| 欧美久久久久久久久| 欧美一区二区三区成人片在线| 国产小视频国产精品| 色在线视频网| 国产精品第七影院| 99a精品视频在线观看| 视频一区二区三区免费观看| 欧美日韩免费观看一区=区三区| 妺妺窝人体色www在线小说| 另类欧美日韩国产在线| 国产激情视频网站| 亚洲天天做日日做天天谢日日欢 | 欧美日韩国产中文字幕 | xxx在线免费观看| 国产精品美女午夜av| 国产精品白丝一区二区三区| 亚洲精品一卡二卡三卡四卡| 亚洲精品乱码| 亚洲精品成人在线播放| 久久中文字幕电影| 久久久久久久福利| 欧美猛男超大videosgay| 桃花色综合影院| 欧美片一区二区三区| 久久亚洲精品人成综合网| 麻豆传媒一区二区| 红桃视频国产精品| 亚洲最大天堂网| 国产欧美一区二区三区在线老狼| 免费毛片一区二区三区| 91精品国产丝袜白色高跟鞋| wwwxxx在线观看| 国产成人精彩在线视频九色| 露出调教综合另类| www.亚洲成人网| 国产一区二区三区蝌蚪| 长河落日免费高清观看| 欧美视频专区一二在线观看| 日本免费网站在线观看| 高清欧美性猛交xxxx黑人猛交| 日韩免费一级| 91九色国产ts另类人妖| 久久99精品国产.久久久久| 成年人在线免费看片| 一本到三区不卡视频| 日本一卡二卡四卡精品| 17婷婷久久www| 国内毛片久久| www国产精品内射老熟女| 成人国产精品免费观看动漫| 久久综合色综合| 精品国产一区二区三区不卡| a免费在线观看| 999国内精品视频在线| 亚洲欧美在线专区| 一级做a爱视频| 亚洲欧美日韩久久| 精品国产一级片| 欧美黄色www| 伦理一区二区三区| 亚洲 高清 成人 动漫| 久久精品视频在线看| 中文字幕手机在线视频| 夜夜嗨av一区二区三区四区| 成人高清一区| 波多野结衣激情| 国产成人免费网站| 日韩黄色在线视频| 亚洲少妇激情视频| 国内精品伊人| 欧美日韩午夜爽爽| heyzo一本久久综合| 国产超碰人人爽人人做人人爱| 亚洲欧美中文日韩在线| av久久网站| 成年在线观看视频| 不卡视频在线看| 亚洲精品国产无码| www国产精品视频| 北条麻妃一区二区三区在线观看| 国产精品又粗又长| 国产亚洲欧美一区在线观看| 国产又粗又猛又爽又黄的| 久久久久久久91| 最新亚洲精品| 中文字幕亚洲影院| 亚洲成a人在线观看| 毛片在线播放网址| 成人午夜小视频| 亚洲欧美日韩专区| 中日韩一级黄色片| 亚洲精品美女久久久| 欧美亚洲二区| 男人添女人下部高潮视频在观看 | 美国黄色片视频| 亚洲成人av资源网| www.久久.com| 日产精品久久久久久久蜜臀| 久久久久久久久一| 99精品视频在线播放免费| 欧美一级视频在线观看| 99精品在线| 给我看免费高清在线观看| 91精品国产综合久久精品性色| 午夜裸体女人视频网站在线观看|