最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

聚簇結構的特點:

  • 根據(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/>';

測試結果圖

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

結論:

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

id int unsigned primary key auto_increment

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

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

相關文章

  • MySQL常用日期時間函數(shù)示例詳解

    MySQL常用日期時間函數(shù)示例詳解

    MySQL提供了大量的日期和時間函數(shù),這些函數(shù)用于在查詢中處理和操作日期與時間值,這篇文章主要介紹了MySQL常用日期時間函數(shù),需要的朋友可以參考下
    2024-06-06
  • MySQL與JDBC之間的SQL預編譯技術講解

    MySQL與JDBC之間的SQL預編譯技術講解

    這篇文章主要介紹了MySQL與JDBC之間的SQL預編譯技術講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • mysql仿asp的數(shù)據(jù)庫操作類

    mysql仿asp的數(shù)據(jù)庫操作類

    本文通過實例代碼給大家介紹了mysql仿asp的數(shù)據(jù)庫操作類,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2008-04-04
  • 解決mysql報錯ERROR 1049 (42000): Unknown database ‘數(shù)據(jù)庫‘的問題

    解決mysql報錯ERROR 1049 (42000): Unknown dat

    對于錯誤代碼1049(42000):Unknown database ‘數(shù)據(jù)庫‘,這個錯誤通常表示您正在嘗試訪問一個不存在的數(shù)據(jù)庫,本文給出了解決方法,您可以按照文中步驟進行操作,需要的朋友可以參考下
    2024-01-01
  • MySQL Router的安裝部署

    MySQL Router的安裝部署

    這篇文章主要介紹了MySQL Router的安裝部署,幫助大家更好的理解和學習使用MySQL,感興趣的朋友可以了解下
    2021-04-04
  • MySQL5.x版本亂碼問題解決方案

    MySQL5.x版本亂碼問題解決方案

    這篇文章主要介紹了MySQL5.x版本亂碼問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • MySQL錯誤TIMESTAMP column with CURRENT_TIMESTAMP的解決方法

    MySQL錯誤TIMESTAMP column with CURRENT_TIMESTAMP的解決方法

    這篇文章主要介紹了MySQL錯誤TIMESTAMP column with CURRENT_TIMESTAMP的解決方法,需要的朋友可以參考下
    2014-06-06
  • sql腳本函數(shù)編寫postgresql數(shù)據(jù)庫實現(xiàn)解析

    sql腳本函數(shù)編寫postgresql數(shù)據(jù)庫實現(xiàn)解析

    這篇文章主要介紹了sql腳本函數(shù)編寫postgresql數(shù)據(jù)庫實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法

    MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法

    這篇文章主要介紹了MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法的相關資料,對于 elasticsearch 增量寫入,但經(jīng)常jdbc源一端的數(shù)據(jù)庫可能會做數(shù)據(jù)庫刪除或者更新操作,這里提供解決辦法,需要的朋友可以參考下
    2017-08-08
  • Navicat for MySQL 15注冊激活詳細教程

    Navicat for MySQL 15注冊激活詳細教程

    這篇文章主要介紹了Navicat for MySQL 15注冊激活詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論

景泰县| 九江市| 佛教| 麻阳| 苍溪县| 蒲城县| 湖口县| 灵川县| 商城县| 微山县| 上饶市| 长顺县| 蓬莱市| 卓尼县| 随州市| 瑞丽市| 晋中市| 伊金霍洛旗| 张家口市| 竹溪县| 东丰县| 梅州市| 柯坪县| 永顺县| 彰武县| 崇信县| 年辖:市辖区| 西宁市| 永吉县| 齐河县| 渝中区| 金秀| 凉城县| 万安县| 宿松县| 荆州市| 渝中区| 开阳县| 平昌县| 江川县| 沙河市|