Alice 扫描方式值

通过将 alice 选项设置为 112(最佳初始粒度)之间的任意值来启用 alice(适应线性索引清除)方式。对于 很少或没有索引大于 1 GB 的中小型系统,将 alice 选项 设置为 67。对于具有大型索引的系统,将 alice 设置为更高的方式。

当设置 alice 方式时,方式越高,每个索引分区使用的内存就越大。但是,使用的内存不会太多。 优点是 I/O 量较少,如下表所示。

表 1. Alice 方式设置
Alice 方式设置 内存或块 I/O
0 关闭 alice 扫描。
1 使用正好 8 个字节的内存(不调整)。
2 使用正好 16 个字节的内存(不调整)。
3 页面的每个数据块将需要 512 个 I/O 操作以执行清除。
4 页面的每个数据块将需要 256 个 I/O 操作以执行清除。
5 页面的每个数据块将需要 128 个 I/O 操作以执行清除。
6(缺省值) 页面的每个数据块将需要 64 个 I/O 操作以执行清除。
7 页面的每个数据块将需要 32 个 I/O 操作以执行清除。
8 页面的每个数据块将需要 16 个 I/O 操作以执行清除。
9 页面的每个数据块将需要 8 个 I/O 操作以执行清除。
10 页面的每个数据块将需要 4 个 I/O 操作以执行清除。
11 页面的每个数据块将需要 2 个 I/O 操作以执行清除。
12 页面的每个数据块将需要 1 个 I/O 操作以执行清除。

设置 alice 方式时,需要考虑内存使用率与 I/O。alice 方式设置越低,索引将使用的内存越少。alice 方式设置越高,索引将使用的内存越多。12 是最高方式值,因为其为单个内存位到 I/O 的每个实例的直接映射。

假设您有一个大小为 2 KB 的联机页面和一个 I/O 大小为 256 个页面的缺省 B 型树扫描程序。如果将 alice 方式设置为 6,那么内存的每个字节可以代表 131,072 个索引页面 (256 MB)。如果将该方式设置为 10,那么内存的每个字节可以代表 8,192 个索引页面 (16 MB)。这样,该方式的设置从 6 更改为 10 将需要 16 倍的内存,但是需要的 I/O 只有十六分之一。

如果您有一个使用 1 GB 的索引分区,那么 alice 方式设置为 6 将占用 4 个字节的内存,而 alice 方式设置为 10 将占用 64 个字节的内存,如以下公式所示:

( {方式块大小} 每位 io * 每字节 8 位 * 每 io 256 个页面 )

将 alice 方式设置为 3 到 12 之间的值将设置用于索引清除的初始内存量。然后,B 型树扫描程序根据过去清除操作的效率自动调整方式。

例如,如果在五次扫描(缺省情况下)之后,I/O 效率低于 75%,那么当您将该方式设置为大于 2 的值时服务器将自动调整到下一个 alice 方式。例如,如果索引当前运行在值为 6 的 alice 方式下,并且 B 型树扫描程序已至少五次清理了该索引,而且 I/O 效率低于 75%,那么该服务器将自动调整到值为 7 的方式,即下一个更高的方式。这将使所需的内存翻倍,但 I/O 减少了二分之一。

再进行五次扫描之后,服务器将重新评估该索引以再次确定 I/O 的效率,并且将继续这个操作直到方式为 12 为止。在方式为 12 时服务器停止调整。

以下示例将 alice 方式设置为 6
BTSCANNER num=2,threshold=10000,alice=6,compression=default