2016 - 2024

感恩一路有你

索引碎片整理 为什么sql server数据库索引碎片整理?

浏览量:2340 时间:2021-03-14 09:27:25 作者:admin

为什么sql server数据库索引碎片整理?

本文需要您对SQL中数据的索引和存储方法有一定的了解

在SQL server中,存储数据的最小单位是页,每个页可以容纳8060字节的数据。页面的组织是通过B-树结构(如果表上没有聚集索引,则为堆结构,本文不讨论),如下图所示:

在聚集索引B-树中,只有叶节点实际存储数据,而其他根节点和中间节点各自仅用于存储叶节点叶节点是一个页,每个页都是不可分割的,服务器在每个页中存储数据的最小单位是表的行。当叶节点中新插入的行或更新的行不能容纳当前更新的行或插入的行时,将进行分页。在分页过程中,将生成片段。

了解外部片段

首先,了解外部片段的“外部”是相对于页面的。外部碎片是指分页引起的碎片。例如,我想在现有聚集索引中插入一行,这会导致现有页面空间不足以容纳新行。这会导致分页:

因为在SQL server中,新页面是随着数据的增长而生成的,聚集索引需要行之间的连续性,所以在很多情况下,分页和原始页面在磁盘上是不连续的。

mongodb建立索引为什么不会产生索引碎片?

如果mongodb直接在前台运行index命令,整个数据库都会被阻塞,建议采用后台索引的方式建立。但是,这也会带来一些问题。在2.6版本之前,即使二级服务器使用后台模式建立索引,二级服务器仍然会以前台模式建立索引,这也会导致数据库阻塞问题。版本2.6修复了这个错误。在版本2.6之后,当使用后台模式构建索引时,它实际上会转向在后台运行。为了尽量减少索引构建对mongodb服务器的影响,一种方法是将mongodb服务器转换为单机模式并进行构建。具体步骤如下:

1。首先停止辅助服务器,取消--replset参数并更改mongodb端口后重新启动mongodb。此时,mongodb将进入标准模式;

2。运行命令ensureindex以标准模式构建索引,建议使用前台模式;

3。建立索引后关闭辅助服务器,按正常方式启动服务器

4。按照上述步骤1-3依次建立二级索引。最后,临时将主服务器转换为辅助服务器。同样,根据方法1-3构建索引,然后将其转换到主服务器。这种方法虽然麻烦,但可以最大限度地减少索引操作对mongodb的影响,在某些情况下值得做。

索引碎片整理 数据库索引碎片 索引碎片产生原因

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。