IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

七、MySQL 面试题 InnoDB 索引的物理保存结构

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

文章永久连接:https://tech.souyunku.com/?p=5816

几乎所有的 Innodb 的索引都使用 B 树 数据结构,除了空间索引 ( spatial indexes ) 是个例外。

空间索引使用的是 R 树 数据结构 ,这是一种索引多维数据的专用数据结构。

但不管使用的是任何索引结构,索引记录只存储在 B 树 或 R树 数据结构的叶子节点中。索引页的默认大小为 16KB

当有新的记录插入到 InnoDB 聚簇索引中时,InnoDB 会尝试将页面的 1/16 留空,以便将来插入和更新索引记录

  • 如果按顺序 ( 升序或降序 ) 插入索引记录,则生成的索引页使用率大约为 15/16
  • 如果以随机顺序插入记录,则页面使用率只会在 1/215/16 之间

InnoDB 在创建或重建 B 树索引时执行批量加载,这种索引创建方法称为 「 排序索引构建 」。我们可以使用配置项 innodb_fill_factor 重新设置在排序索引构建期间填充的每个 B 树页面上的空间利用率,那么剩余的空间会保留以待将来的索引增长。这个设置项我们一般称之为 「 填充因子 」

但是,即使我们把 innodb_fill_factor 配置项的值设置为 100 ,聚簇索引页仍然会保留出 1/16 的空间用于将来的索引增长。

另外,需要注意的是 「 空间索引不支持排序索引构建 」

如果 InnoDB 索引页的填充因子低于配置项 MERGE_THRESHOLD 的值 ( 如果未指定,默认情况下为 50% ) ,InnoDB 会尝试优化索引树以释放页面空间。

MERGE_THRESHOLD 同时适用于 B 树和 R 树数据结构

我们可以在初始化 MySQL 实例之前设置 innodb_page_size 配置选项来定义 MySQL 实例中所有 InnoDB 表空间的页面大小。InnoDB 表空间的大小一旦确定,也就是一旦 MySQL 实例初始化完成后,如果不重新初始化实例,则无法更改它。

目前支持的大小为 64KB32KB16KB ( 默认 ) ,8KB4KB,对应于选项值 64k32k16k8k 和 `4k 。

注意:使用特定 InnoDB 页面大小的 MySQL 实例不能使用来自不同页面大小的实例的数据文件或日志文件,也就是说两个不同数据页大小的 MySQL 实例的数据文件或日志文件是不能互通的。

常用面试题

1、 InnoDB 表使用什么数据结构,它们的数据都保存在哪里

使用的是 `B 树` 数据结构,它们的索引数据都保存在叶子节点中。

2、 InnoDB 的页大小一般是多少,把页大小提高为什么能提高 MySQL 的性能。

页大小决定了每次 IO 操作读取的数据大小,设置的越高当然每次读取的数据就越多,可以较少 IO 操作

结束语

其实吧,InnoDB 索引使用的应该是 B+ 树 ,虽然 B+ 树 也是 B 树 的一个变体,但总感觉怪怪的。

干货推荐

本站推荐:精选优质专栏

专栏汇总:Redis 教程

专栏汇总:MySQL 教程

专栏汇总:MySQL 拾遗

专栏汇总:MongoDB 教程

专栏汇总:Memcached 教程

附录:MySQL InnoDB 面试题:系列文章

赞(98) 打赏



未经允许不得转载:搜云库技术团队 » 七、MySQL 面试题 InnoDB 索引的物理保存结构

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367