首页 科技 军事 财经 教育 体育 房产 健康 汽车 安全 热点 人才 推选

人才

旗下栏目:

说说B+ Tree

发布时间:2019-08-09 来源:原创/投稿/转载 作者:admin 人气:

  对于第2点, 看看下图, 每个结点都含有指向下一层的指针, 指针越多, 意味着树的高度就越矮, 即在块设备(常见的就是磁盘)中检索数据, 需要的I/O次数也就越少.

  现在普通的SAS盘, 一秒钟也可以完成200次I/O, 从千万量级的数据中, 检索一条记录, 只要3次I/O, 即0.015秒就行了, 可见效率之高, 又加之目前一般使用的SSD盘, 最少也要再快50倍.

  1. 观察第二幅图片, 在InnoDB存储引擎中使用二级索引检索数据时, 由于其叶子结点存储的是Key, Primary key, 在获取到Primary key时, 还要去查看聚簇索引, 即回表操作, 才能获取到记录. 而在MyISAM存储引擎中, 主键索引和二级索引具有同等地位(只不过主键索引值非空), 检索数据时, 无需回表. 也许从该点来说MyISAM存储引擎更适合查询.

  2. 对于DML操作, 一条记录从400Bytes变更到600, 若不能原地更新的话, 在MyISAM存储引擎中, 索引叶子结点存储的是指向记录的指针, 相比InnoDB存储引擎来说, 其变动会更大些. 也许从该点来说InnoDB存储引擎更适合变更. 当然了, 两者为了预防非原地更新产生的影响, 都会在Page中预留空洞.

  若感兴趣可关注订阅号”数据库最佳实践”(DBBestPractice).

责任编辑:admin