1. 程式人生 > >Mysql Innodb 性能參數設置 https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html

Mysql Innodb 性能參數設置 https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html

dea off variant sch 型號 pac san lin gin

參考原文:

https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html

查看系統cpu,內存,硬盤使用情況

1、 cat /proc/cpuinfo  或者 更直觀的查看cpu的型號命令:dmesg |grep -i xeon

查看內存的方法

2、 cat /proc/meminfo  或者 更直觀的查看內存的命令:free -m

查看硬盤大小

3、df -h

這裏粘貼部分原文:

What is there inside MySQL InnoDB buffer pool?

MySQL InnoDB buffer pool contains the following things inside:

Data caching 
- InnoDB data pages. Indices caching - index data. Buffering data - Dirty pages - data which are modified in memory but not yet flushed (written) to a data disk. Internal structures - InnoDB buffer pool additionally stores the internal structures such as Adaptive Hash Index, row level locks, etc. The unit of the above
-mentioned objects are calculated as - InnoDB pages. Each InnoDB pages is 16k in size.

如何最優設置:

How to deal with this situation?

When we cannot keep an entire database in memory, we should try to keep at least working data set in memory. In most cases, we are not going to process the data of an entire table, so the required data set
should be in memory. So it is always better to allocate around 75% - 80% of the total available memory of server machine to innodb_buffer_pool_size.

同時文中給出了其中的一個計算方式:

How much memory should allocate to InnoDB buffer pool?

Recommended InnoDB buffer pool size based on the all InnoDB data and indices with additional 50% memory:


set @idbdataindx = (select sum(data_length+index_length) from information_schema.tables where engine = innodb);

set @ibpsG = @idbdataindx * 1.5 / (1024*1024*1024);

select @ibpsG;

如何設置:

SHOW VARIABLES LIKE %innodb_buffer_pool_size%;
Example:
Online method:
SET GLOBAL innodb_buffer_pool_size = 26843545600;

Offline method:
innodb_buffer_pool = 26G   (需要重啟服務器)

SHOW VARIABLES LIKE ‘%innodb_buffer_pool_size%‘;

Example:

Online method: SET GLOBAL innodb_buffer_pool_size = 26843545600;
Offline method: innodb_buffer_pool = 26G

Mysql Innodb 性能參數設置 https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html