Configuring InnoDB for Read-Only Operation allocated to other applications, and memory allocated for other MySQL buffers and caches. For example, if you use  MyISAM  tables, consider the amount of memory allocated for the key buffer ( key_buffer_size ). For an overview of MySQL buffers and caches, see Section 8.12.3.1, “How MySQL Uses Memory” . Buffers specific to  InnoDB  are configured using the following parameters: • innodb_buffer_pool_size  defines size of the buffer pool, which is the memory area that holds cached data for  InnoDB  tables, indexes, and other auxiliary buffers. The size of the buffer pool is important for system performance, and it is typically recommended that  innodb_buffer_pool_size is configured to 50 to 75 percent of system memory. The default buffer pool size is 128MB. For additional guidance, see Section 8.12.3.1, “How MySQL Uses Memory” . For information about how to configure  InnoDB  buffer pool size, see Section 15.8.3.1, “Configuring InnoDB Buffer Pool Size” . Buffer pool size can be configured at startup or dynamically. • innodb_log_buffer_size  defines the size of the buffer that  InnoDB  uses to write to the log files on disk. The default size is 16MB. A large log buffer enables large transactions to run without writing the log to disk before the transactions commit. If you have transactions that update, insert, or delete many rows, you might consider increasing the size of the log buffer to save disk I/O.  innodb_log_buffer_size can be configured at startup. For related information, see Section 8.5.4, “Optimizing InnoDB Redo Logging” . On systems with a large amount of memory, you can improve concurrency by dividing the buffer pool into multiple buffer pool instances. The number of buffer pool instances is controlled by the by innodb_buffer_pool_instances  option. By default,  InnoDB  creates one buffer pool instance. The number of buffer pool instances can be configured at startup. For more information, see Section 15.8.3.2, “Configuring Multiple Buffer Pool Instances” . Warning On 32-bit GNU/Linux x86, if memory usage is set too high,  glibc  may permit the process heap to grow over the thread stacks, causing a server failure. It is a risk if the memory allocated to the  mysqld  process for global and per-thread buffers and caches is close to or exceeds 2GB. A formula similar to the following that calculates global and per-thread memory allocation for MySQL can be used to estimate MySQL memory usage. You may need to modify the formula to account for buffers and caches in your MySQL version and configuration. For an overview of MySQL buffers and caches, see Section 8.12.3.1, “How MySQL Uses Memory” . Each thread uses a stack (often 2MB, but only 256KB in MySQL binaries provided by Oracle Corporation.) and in the worst case also uses  sort_buffer_size + read_buffer_size  additional memory. innodb_buffer_pool_size + key_buffer_size + max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size) + max_connections*2MB On Linux, if the kernel is enabled for large page support,  InnoDB  can use large pages to allocate memory for its buffer pool. See Section 8.12.3.2, “Enabling Large Page Support” . 15.8.2 Configuring InnoDB for Read-Only Operation You can query  InnoDB  tables where the MySQL data directory is on read-only media by enabling the  -- innodb-read-only  configuration option at server startup. 3108