Skip to main content
Enterprise applications
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

Oracle数据库参数:filesystemio_options

贡献者

Oracle初始化参数 filesystemio_options 控制异步和直接I/O的使用

与通常的看法相反、异步I/O和直接I/O并不互相排斥。NetApp发现、在客户环境中、此参数经常配置不当、这种配置不当直接导致许多性能问题。

异步I/O意味着可以并行处理Oracle I/O操作。在各种操作系统上提供异步I/O之前、用户配置了大量dbwriter进程并更改了服务器进程配置。使用异步I/O时、操作系统本身会代表数据库软件以高度高效的并行方式执行I/O。此过程不会使数据面临风险、Oracle重做日志记录等关键操作仍会同步执行。

直接I/O会绕过操作系统缓冲区缓存。UNIX系统上的I/O通常流经操作系统缓冲区缓存。这对于不维护内部缓存的应用程序非常有用、但Oracle在SGA中具有自己的缓冲区缓存。在几乎所有情况下、最好启用直接I/O并将服务器RAM分配给SGA、而不是依赖操作系统缓冲区缓存。Oracle SGA可以更高效地使用内存。此外、当I/O流经操作系统缓冲区时、它会受到额外处理的影响、从而增加了缓存。当低延迟是一项关键要求时、对于写入I/O负载繁重的情况、延迟增加尤为明显。

的选项 filesystemio_options 是:

  • async. Oracle将I/O请求提交给操作系统进行处理。此过程允许Oracle执行其他工作、而不是等待I/O完成、从而提高I/O并行处理能力。

  • directio. Oracle直接对物理文件执行I/O、而不是通过主机操作系统缓存路由I/O。

  • 无。 Oracle使用同步和缓冲I/O在这种配置中、在共享和专用服务器进程之间进行选择以及dbwriter的数量更重要。

  • setall. Oracle同时使用异步和直接I/O在几乎所有情况下、使用 setall 最佳。

备注 filesystemio_options 参数在DNFS和ASM环境中无效。使用DNFS或ASM会自动导致同时使用异步和直接I/O

某些客户过去遇到过异步I/O问题、尤其是在以前的Red Hat Enterprise Linux 4 (RHEL4)版本中。互联网上的一些过时建议仍然建议避免异步IO、因为信息过时。异步I/O在所有当前操作系统上均保持稳定。如果操作系统没有已知错误、则没有理由禁用它。

如果数据库一直在使用缓冲I/O、则切换到直接I/O可能还需要更改SGA大小。禁用缓冲的I/O可消除主机操作系统缓存为数据库提供的性能优势。将RAM重新添加到SGA可修复此问题。最终结果应该是I/O性能有所提高。

尽管Oracle SGA使用RAM几乎总是优于操作系统缓冲区缓存、但可能无法确定最佳值。例如、在具有许多间歇性活动Oracle实例的数据库服务器上、最好使用SGA大小非常小的缓冲I/O。这种安排允许所有正在运行的数据库实例灵活地使用操作系统上剩余的可用RAM。这是一种非常少见的情况、但在某些客户站点上也发现过。

提示 * NetApp建议*设置 filesystemio_options to `setall`但请注意,在某些情况下,丢失主机缓冲区缓存可能需要增加Oracle SGA。