最大程度缓解 Informix 中的磁盘 I/O 争用情况
除了可以获取更快的磁盘驱动器和控制器之外,唯一能够真正降低 IBM Informix 数据库中的磁盘 I/O 争用情况的方法是通过对需要和不需要高频率 I/O 的文件进行不同的分配来平衡整个文件系统的 I/O。
- 创建临时 dbspace。
默认情况下,在需要临时空间进行排序时 Informix 会使用根 dbspace。大索引(例如,R 树索引)的创建会填充根 dbspace,从而导致服务器崩溃。在使用 ArcGIS for Desktop 加载数据的情况下,创建 R 树索引(加载数据的最后一步)将会失败,并且加载的图层将保留为只加载 I/O 模式。请至少使用共计 300 MB 的两个临时 dbspace 作为起点。然后相应地添加区段,确保这些区段尽可能地跨越不同的磁盘。
- 创建智能大对象存储空间,并为其分配合适大小。
Spatial DataBlade 模块存储大于或等于 930 字节的离线几何值。这些值存储在指定的智能大对象中。将几何写入智能大对象时,会有 64 字节的嵌入式指针引用几何。在 Windows 平台上,默认的 sbspace 和 syssbspace(存在于 onconfig 文件中)在服务器的安装过程中创建。可以将 sbspace 的附加区段添加到此默认 sbspace,或创建附加 sbspace 通过 %SDEHOME%\etc\dbtune.sde 文件来访问。在 UNIX 平台上,必须创建 sbspace。首先为 sbspace 创建设备,然后使用 onspaces 工具来创建 sbspace,在 onconfig 文件中为创建的 sbspace 设置默认的智能大对象空间参数 SBSPACENAME,最后重新启动 Informix 服务器。
- 将使用频率高的表放置在中等硬盘驱动器分区中以尽量减少磁头的移动。
将使用频率高的表放置在磁盘驱动器的中等分区中可以减少磁头的移动。基于平均法安排数据,使磁头的时间大部分花费在中等分区上,从而减少磁头的移动。有关磁盘驱动器分区的说明,请参阅操作系统配置手册。为分区分配单个区段,并为其分配使用频率高的表的 dbspace。
- 按照使用情况将较小的表组合到 dbspace 中。
为数据库中的每个表创建单独的 dbspace 是不现实的。因为每个 dbspace 都有相应的开销,并且管理大量的 dbspace 也非常麻烦。可以将较小的表一起组合到一个 dbspace 中。还应该将相关的索引组合到另一个 dbspace 中,以便将它们放置在单独的磁盘驱动器中。按照使用情况将较小的表组合到单独的 dbspace 中便可以将使用频率高的较小表放置在中等分区中。
- 优化范围大小。
估计表和索引的大小有助于分配包含整个数据对象的初始范围。对于组合到同一个 dbspace 的数据对象,这样做可以防止其范围发生交叉。如果磁头必须搜索其他表的范围,交叉的范围会降低性能。
- 为大型表分配单个 dbspace。
大型表应该具有其自己的 dbspace。这样便可以很容易地在文件系统中移动这些表。有些表可能很大,以致于为其分配的 dbspace 需要多个区段。如果存在这种情况,最好将区段分散在不同的磁盘驱动器上,并且尽可能地分散控制器。这样做可以允许对同一个表的数据进行多次访问,并且可以减少整体搜索时间。
- 适当分配日志文件和日志文件缓冲区的大小。
用于逻辑和物理日志文件的缓冲区的大小决定了需要将缓冲区的内容写到磁盘上的频率。逻辑日志的大小会影响需要创建日志文件的备份的频率。有关日志文件设置的详细信息,请参阅 Informix 初始化参数。