亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql聚簇索引的頁分裂原理實例分析

 更新時間:2019年07月15日 11:54:09   作者:webbc  
這篇文章主要介紹了mysql聚簇索引的頁分裂原理,結(jié)合實例形式分析了mysql聚簇索引的頁分裂原理與操作注意事項,需要的朋友可以參考下

本文實例講述了mysql聚簇索引的頁分裂。分享給大家供大家參考,具體如下:

在MySQL中,MyISAM采用的是非聚簇索引的,InnoDB存儲引擎是采用聚簇索引的。

聚簇結(jié)構(gòu)的特點:

  • 根據(jù)主鍵查詢條目時,不用回行(數(shù)據(jù)就在主鍵節(jié)點下)
  • 如果碰到不規(guī)則數(shù)據(jù)插入時,造成頻繁的頁分裂

為什么會產(chǎn)生頁分裂?

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

測試:

創(chuàng)建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條無規(guī)則的主鍵數(shù)據(jù)和1W條規(guī)則的主鍵數(shù)據(jù),來看看區(qū)別。

<?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/>';

測試結(jié)果圖

1W條規(guī)則的數(shù)據(jù):998秒 = 16分鐘
1W條不規(guī)則的數(shù)據(jù):1939秒 = 32分鐘

結(jié)論:

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

id int unsigned primary key auto_increment

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL索引操作技巧匯總》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總

希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。

相關(guān)文章

  • mysql datetime查詢異常問題解決

    mysql datetime查詢異常問題解決

    這篇文章主要介紹了mysql datetime查詢異常問題解決的相關(guān)資料,這里對異常進行了詳細的介紹和該如何解決,需要的朋友可以參考下
    2016-11-11
  • mysql 優(yōu)化日記

    mysql 優(yōu)化日記

    mysql 優(yōu)化日記 使用mysql的朋友可以參考下,大家知道如果mysql優(yōu)化與沒優(yōu)化性能會相差不少呢。
    2009-07-07
  • MySql連接數(shù)據(jù)庫常用參數(shù)及代碼解讀

    MySql連接數(shù)據(jù)庫常用參數(shù)及代碼解讀

    這篇文章主要介紹了MySql連接數(shù)據(jù)庫常用參數(shù)及代碼解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • mysql字符串格式化方式

    mysql字符串格式化方式

    這篇文章主要介紹了mysql字符串格式化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 數(shù)據(jù)庫中的SELECT語句邏輯執(zhí)行順序分析

    數(shù)據(jù)庫中的SELECT語句邏輯執(zhí)行順序分析

    這篇文章主要介紹了數(shù)據(jù)庫中的SELECT語句邏輯執(zhí)行順序分析,并列出了一些例子,需要的朋友可以參考下
    2014-07-07
  • SQL語句解析執(zhí)行的過程及原理

    SQL語句解析執(zhí)行的過程及原理

    這篇文章主要介紹了SQL語句解析執(zhí)行的過程及原理,文章主要通過獲得SqlSession對象后就能執(zhí)行各種CRUD方法展開全文內(nèi)容需要的小伙伴可以參考一下,希望對你有所幫助
    2022-03-03
  • MYSQL函數(shù)的使用梳理

    MYSQL函數(shù)的使用梳理

    本篇文章講解是是MySQL的函數(shù)方法,涵蓋所有的MySQL常見的方法,MySQL函數(shù),是一種控制流程函數(shù),屬于數(shù)據(jù)庫用語言,以下列出了這些函數(shù)的說明
    2022-05-05
  • Mysql如何查看表及字段信息

    Mysql如何查看表及字段信息

    這篇文章主要介紹了Mysql如何查看表及字段信息,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 重置MySQL中表中自增列的初始值的實現(xiàn)方法

    重置MySQL中表中自增列的初始值的實現(xiàn)方法

    這篇文章主要介紹了重置MySQL中表中自增列的初始值的實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • window10系統(tǒng)下mysql5.7安裝審計插件(親測有用)

    window10系統(tǒng)下mysql5.7安裝審計插件(親測有用)

    mysql有沒oracle這樣的審計功能,突然想在mysql做審計怎么辦,下面帶大家從零開始給mysql安裝審計插件,親測絕對可用哦,需要的朋友可以參考下
    2022-09-09

最新評論