Mysql innodb 后台的7大线程与3大内存

时间:2023-11-21 20:52:14

A:一个master 线程(innodb 几乎在这个线程上实现有所有功能)

B:一个lock 监控线程

C:一个错误监控线程

D:四个IO线程(insert buffer thread\log thread\write thread\read thread)

  在windows 平台下可以通过 innodb_file_io_threads 参数来增大IO线程的数量。但是这个上也过时了

  目前我们可以通过 innodb_read_io_threads | innodb_write_io_threads 来控制 IO线程的数量。

-----------------------------------------------------------------------------------------

内存:

A:

  缓冲池(buffer pool)、最占内存的部分,用来存放各种数据的缓存(索引页,数据页,undo页,插入缓冲,自适应hash索引,锁信息)

  innodb_buffer_pool_size 指定了缓冲池的大小。

  32位的系统下innodb_buffer_pool_awe_mem_mb 可以开启awe功能。但是一旦开启awe系统就会自动禁用自适应hash索引。

B:

  重做日志缓冲池(redo log buffer),日志缓冲将重做日志信息先放入缓冲区,然后按一定的频率将其刷新到重做日志文件。这个值一般不要设的很大

  因为一般每一秒都会将重做日志缓冲刷新到日志文件,我们只要保证每秒产生的事务量在这个缓冲大小之内就可以了。

C:额外的内存池(additional memory pool)