Product Documentation

Database Administrator's Guide

Previous Topic

Next Topic

UNBUFFERED_IO

UNBUFFERED_IO <filename>

FairCom Server supports the use of unbuffered disk I/O operations on a per-file basis. Unbuffered I/O bypasses the file system cache and avoids double caching of data in the FairCom Server and the file system cache. The file name may include wildcard characters (see FairCom DB Standard Wildcards)

The UNBUFFERED_IO configuration option enables unbuffered I/O for the specified file. When the file is opened, the sector size of the disk on which the file resides is determined and it stores that sector size in the new file control block member.

Windows enforces the following restrictions for I/O when using unbuffered I/O:

  1. The file offset for the I/O operation must be a multiple of the disk sector size.
  2. The amount of data to be read or written must be a multiple of the disk sector size.
  3. The address of the buffer used in the I/O operation must be aligned on a disk sector size boundary.

For files that use unbuffered I/O, c-tree's file I/O function checks that these requirements are met. If not, logic is in place that makes the necessary adjustment by allocating a temporary buffer that is used in the I/O operation.

When a file is configured to use unbuffered I/O, the sector size of the disk on which the file is stored is checked and if it exceeds the server's page size. If so, the following message is logged to CTSTATUS.FCS and unbuffered I/O is not used on that file:

If an existing file is being opened:

mbopen: File <filename> disk sector size (<disk_sector_size>) exceeds page size (<page_size>)

If a new file is being created:

mbcratx: File <filename> disk sector size (<disk_sector_size>) exceeds page size (<page_size>)

Note: Unbuffered I/O is not available for encrypted or segmented files and is ignored for those file types.

UNBUFFERED_IO completely avoids the file system cache. Compare to COMPATIBILITY TDATA_WRITETHRU, which uses the file system cache and then to disk before returning.

OS Support

This option is supported on the Windows operating system.

In V11 and later, support for direct I/O has been enabled on Linux systems. A value of 512-bytes is used for size and alignment for direct I/O.

This feature supports both c-tree data and index files, as well as transaction logs. Configuration options are provided for both.

  • UNBUFFERED_IO filename (enables direct I/O for the specified file; the filename can include wildcards, such as *.dat)
  • UNBUFFERED_LOG_IO YES (enables direct I/O for the transaction logs).

Note: This feature requires Linux kernel version 2.6 or later, FairCom Server logs an error message to CTSTATUS.FCS if these options are used on pre-2.6 Linux kernel systems. The error messages are:

The UNBUFFERED_IO option requires Linux kernel version 2.6 or later

The UNBUFFERED_LOG_IO option requires Linux kernel version 2.6 or later

See Also

TOCIndex