最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql聚簇索引的页原理实例分析

来源:动视网 责编:小采 时间:2020-11-09 21:12:44
文档

mysql聚簇索引的页原理实例分析

mysql聚簇索引的页原理实例分析:本文实例讲述了mysql聚簇索引的页。分享给大家供大家参考,具体如下: 在MySQL中,MyISAM采用的是非聚簇索引的,InnoDB存储引擎是采用聚簇索引的。 聚簇结构的特点: 根据主键查询条目时,不用回行(数据就在主键节点下) 如果碰到不规则数据插入时,造成频
推荐度:
导读mysql聚簇索引的页原理实例分析:本文实例讲述了mysql聚簇索引的页。分享给大家供大家参考,具体如下: 在MySQL中,MyISAM采用的是非聚簇索引的,InnoDB存储引擎是采用聚簇索引的。 聚簇结构的特点: 根据主键查询条目时,不用回行(数据就在主键节点下) 如果碰到不规则数据插入时,造成频


本文实例讲述了mysql聚簇索引的页。分享给大家供大家参考,具体如下:

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

聚簇结构的特点:

  • 根据主键查询条目时,不用回行(数据就在主键节点下)
  • 如果碰到不规则数据插入时,造成频繁的页
  • 为什么会产生页?

    这是因为聚簇索引采用的是平衡二叉树算法,而且每个节点都保存了该主键所对应行的数据,假设插入数据的主键是自增长的,那么根据二叉树算法会很快的把该数据添加到某个节点下,而其他的节点不用动;但是如果插入的是不规则的数据,那么每次插入都会改变二叉树之前的数据状态。从而导致了页。

    测试:

    创建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/>';
    
    

    测试结果图

    1W条规则的数据:998秒 = 16分钟
    1W条不规则的数据:1939秒 = 32分钟

    结论:

    聚簇索引的主键值,应尽量是连续增长的值,而不是要是随机值, (不要用随机字符串或UUID),否则会造成大量的页与页移动。在使用InnoDB的时候最好定义成:

    id int unsigned primary key auto_increment

    更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

    希望本文所述对大家MySQL数据库计有所帮助。

    您可能感兴趣的文章:

  • mysql建立高效的索引实例分析
  • mysql重复索引与冗余索引实例分析
  • mysql索引覆盖实例分析
  • mysql索引对排序的影响实例分析
  • MySQL中NULL对索引的影响深入讲解
  • 详解MySQL索引原理以及优化
  • 通过唯一索引S锁与X锁来了解MySQL死锁套路
  • mysql 添加索引 mysql 如何创建索引
  • MySQL索引类型总结和使用技巧以及注意事项
  • MySQL查看、创建和删除索引的方法
  • MySQL 创建索引(Create Index)的方法和语法结构及例子
  • 文档

    mysql聚簇索引的页原理实例分析

    mysql聚簇索引的页原理实例分析:本文实例讲述了mysql聚簇索引的页。分享给大家供大家参考,具体如下: 在MySQL中,MyISAM采用的是非聚簇索引的,InnoDB存储引擎是采用聚簇索引的。 聚簇结构的特点: 根据主键查询条目时,不用回行(数据就在主键节点下) 如果碰到不规则数据插入时,造成频
    推荐度:
    标签: 原理 实例 mysql
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top