Fast, Reliable, Proven transactional storage for MySQL

InnoDB Plugin 1.0.4 Read Ahead Test (Modified Sysbench)

This test employs the well-known Sysbench benchmarking tool that uses a simple read-write transactional workload. However, in this case, we’ve adopted some changes suggested by Mark Callaghan of Google, to add another column and secondary index to the sbtest table so that 50% of the queries in the test will use the secondary index.

A read ahead request is an I/O request to pre-fetch multiple pages in the buffer cache asynchronously in anticipation that these pages will be needed in the near future. InnoDB Plugin 1.0.4 allows the DBA to control the sensitivity of the linear read ahead algorithm with the new parameter innodb_readahead_threshold, which specifies how many pages must have been read in sequence from an extent to trigger an asynchronous read ahead of the entire next extent.

This test demonstrates that InnoDB Plugin 1.0.4 can achieve 20% more throughput (running with 64 and 256 users) with the appropriate setting for the async read ahead parameter.

Async Read Ahead image040

Configuration
Dual quad-core Intel Xeon, 3.00GHz, 32 GB memory, RAID 5
Relevant my.cnf parameters:
query-cache-type = 0
query-cache-size = 0
table-open-cache = 2048
innodb-data-file-path = ibdata1:500M:autoextend
innodb-additional-mem-pool-size = 500M
innodb_adaptive_hash_index = ON
innodb_buffer_pool_size = 3GB
innodb_checksums = ON
innodb_doublewrite = ON
innodb_file_per_table = ON
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 50
innodb_locks_unsafe_for_binlog = OFF
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 2
innodb_max_dirty_pages_pct = 40
innodb_table_locks = ON
innodb_thread_concurrency = 0
innodb_use_sys_malloc = OFF