Buffer pools are memory data caches. Reading data off a disk is slow, but reading data from memory is much faster. The first query to request a row of data must wait for the response from the disk. After that, the data is stored in the buffer pool, and other queries requesting that same row get a faster response.
Obviously, the cache can only hold a certain amount of data, so decisions must be made as to how much memory to allocate to the buffer pool, which rows to keep in the buffer pool and how to keep the cache and the disk in sync when the data changes. Read about InnoDB's use of buffer pools and how to configure for optimal performance at http://dev.mysql.com/doc/refman/5.0/en/innodb-disk-io.html and http://dev.mysql.com/doc/refman/5.0/en/innodb-tuning.html.
This was first published in March 2007