中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中聚簇索引的頁分裂原理是什么

發布時間:2021-06-16 17:19:33 來源:億速云 閱讀:407 作者:Leah 欄目:MySQL數據庫

這篇文章給大家介紹mysql中聚簇索引的頁分裂原理是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

聚簇結構的特點:

  • 根據主鍵查詢條目時,不用回行(數據就在主鍵節點下)

  • 如果碰到不規則數據插入時,造成頻繁的頁分裂

為什么會產生頁分裂?

這是因為聚簇索引采用的是平衡二叉樹算法,而且每個節點都保存了該主鍵所對應行的數據,假設插入數據的主鍵是自增長的,那么根據二叉樹算法會很快的把該數據添加到某個節點下,而其他的節點不用動;但是如果插入的是不規則的數據,那么每次插入都會改變二叉樹之前的數據狀態。從而導致了頁分裂。

測試:

創建2張表

create table t8(
id int primary key,
c1 varchar(500),
c2 varchar(500),
c3 varchar(500),
c4 varchar(500),
c5 varchar(500),
c6 varchar(500)
) engine innodb charset utf8;
create table t9(
id int primary key,
c1 varchar(500),
c2 varchar(500),
c3 varchar(500),
c4 varchar(500),
c5 varchar(500),
c6 varchar(500)
) engine innodb charset utf8;

寫一個php腳本,用于插入1W條無規則的主鍵數據和1W條規則的主鍵數據,來看看區別。

<?php
set_time_limit(0);
$conn = mysql_connect('localhost','root','1234');
mysql_query('use test;');
//自增長主鍵
$str = str_repeat('a', 500);
$startTime = microtime(true);
for($i=1;$i<=10000;$i++){
 mysql_query("insert into t8 values($i,'$str','$str','$str','$str','$str','$str')");
}
$endTime = microtime(true);
echo $endTime-$startTime.'<br/>';
//無序的主鍵
$arr = range(1, 10000);
shuffle($arr);
$startTime = microtime(true);
foreach($arr as $i){
 mysql_query("insert into t9 values($i,'$str','$str','$str','$str','$str','$str')");
}
$endTime = microtime(true);
echo $endTime-$startTime.'<br/>';

測試結果圖

mysql中聚簇索引的頁分裂原理是什么

1W條規則的數據:998秒 = 16分鐘
1W條不規則的數據:1939秒 = 32分鐘

結論:

聚簇索引的主鍵值,應盡量是連續增長的值,而不是要是隨機值, (不要用隨機字符串或UUID),否則會造成大量的頁分裂與頁移動。在使用InnoDB的時候最好定義成:

id int unsigned primary key auto_increment

關于mysql中聚簇索引的頁分裂原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广饶县| 南部县| 安新县| 济阳县| 乐亭县| 黔江区| 巧家县| 酒泉市| 福建省| 炎陵县| 宣城市| 台安县| 攀枝花市| 康平县| 西吉县| 黄山市| 永宁县| 阳谷县| 丰原市| 治县。| 库车县| 无为县| 寿宁县| 喜德县| 保靖县| 长沙市| 双桥区| 衡阳市| 湘乡市| 芦溪县| 萍乡市| 宁安市| 依安县| 孟连| 大邑县| 奉化市| 清徐县| 莎车县| 安陆市| 读书| 西充县|