Multiple page asynchronous I/O requests

The I/O unit size in InnoDB is only one page, even if the server doing read ahead. A 16KB I/O unit size is small for sequential reads, and less efficient than a larger I/O unit size. InnoDB uses Linux asynchronous I/O (aio) by default. By submitting multiple consecutive 16KB read requests at once, Linux internally can merge requests and reads can be done more efficiently. This feature can submit multiple page I/O requests and works in the background.

You can manage the feature with the linear read-ahead technique. The technique adds pages to the buffer pool based on the buffer pool pages being accessed sequentially. The configuration parameter, innodb_read_ahead_threshold controls this process.

On a HDD RAID 1+0 environment, more than 1000MB/s disk reads can be achieved by submitting 64 consecutive pages requests at once, while only 160MB/s disk reads is shown by submitting single page request.

Version Specific Information

  • 5.6.38-83.0- Feature ported from the Facebook MySQL patch.

Status Variables

variable Innodb_buffered_aio_submitted
Version Info:
Variable Type:

Numeric

Scope:

Global

This variable shows the total number of submitted buffered asynchronous I/O requests. The variable is updated after the submission request to the kernel and is a counter, which always increases.

The following is an example of a variable call:

mysql> SHOW GLOBAL STATUS like "innodb_buffered_aio_submitted";

innodb_buffered_aio_submitted 12439