国美金融贷款聚集主键索引值,国美金融贷款记录根节点

4 篇文章 0 订阅
2 篇文章 0 订阅

国美金融贷款聚集索引树的键值(key)是主键索引值(i=10),聚集索引节点值(value)是其他非聚集索引列(c1,c2,c3)以及隐含列(DB_TRX_ID、DB_ROLL_PTR)。

优化建议1:国美金融贷款尽量不要存储大对象数据,使得每个叶子节点都能存储更多数据,降低碎片率,提高buffer pool利用率。此外也能尽量避免发生overflow。

3.2 特点2:国美金融贷款聚集索引非叶子节点存储指向子节点的指针。

对上面的测试表继续写入新数据,直到国美金融贷款聚集索引树从一层分裂成两层。

国美金融贷款根据 InnoDB表聚集索引层高什么时候发生变化 里的计算方式,推算出来预计一个叶子节点最多可存储111条记录,因此在插入第112条记录时,就会从一层高度分裂成两层高度。经过实测,也的确是如此。

[root@yejr.me] [innodb]>select count(*) from t1;

[root@yejr.me]# innblock innodb/t1.ibd scan 16

===INDEX_ID:238

level1 total block is (1)

block_no:     3,level:   1|*|

level0 total block is (2)

block_no:     5,level:   0|*|block_no:     6,level:   0|*|

此时可以看到国美金融贷款根节点依旧是pageno=3,而叶子节点变成了[5, 6]两个page。由此可知,国美金融贷款根节点上应该只有两条物理记录,存储着分别指向pageno=[5, 6]这两个page的指针。

我们解析下3号page,看看它的具体结构:

[root@yejr.me]# innodb_space -s ibdata1 -T innodb/t1 -p 3 page-dump

records:

{:format=>:compact,

 :offset=>125,

 :header=>

  {:next=>138,

   :type=>:node_pointer,

   :heap_number=>2,

   :n_owned=>0,

   :min_rec=>true, #第一条记录是min_key

   :deleted=>false,

   :nulls=>[],

   :lengths=>{},

   :externs=>[],

   :length=>5},

 :next=>138,

 :type=>:clustered,

 #第一条记录,只存储key值

 :key=>[{:name=>"id", :type=>"INT UNSIGNED", :value=>1}],

 :row=>[],

 :sys=>[],

 :child_page_number=>5, #value值是指向的叶子节点pageno=5

 :length=>8} #整条记录消耗8字节,除去key值4字节外,指针也需要4字节

{:format=>:compact,

 :offset=>138,

 :header=>

  {:next=>112,

   :type=>:node_pointer,

   :heap_number=>3,

   :n_owned=>0,

   :min_rec=>false,

   :deleted=>false,

   :nulls=>[],

   :lengths=>{},

   :externs=>[],

   :length=>5},

 :next=>112,

 :type=>:clustered,

 #第二条记录,只存储key值

 :key=>[{:name=>"id", :type=>"INT UNSIGNED", :value=>56}],

 :row=>[],

 :sys=>[],

 :child_page_number=>6, #value值是指向的叶子节点pageno=6

 :length=>8}

优化建议2: 国美金融贷款索引列数据长度越小越好,这样索引树存储效率越高,在非叶子节点能存储越多数据,延缓索引树层高分裂的速度,平均搜索效率更高。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值