mysql缓冲池怎么调 mysql缓冲池 多大

mysql 参数调优(11)之innodb_buffer_pool_instances设置多个缓冲池实例MySQL 5.5引入了缓冲实例作为减小内部锁争用来提高MySQL吞吐量mysql缓冲池怎么调的手段 。在5.5版本这个对提升吞吐量帮助很小mysql缓冲池怎么调 , 然后在MySQL 5.6版本这个提升就非常大了,所以在MySQL5.5中你可能会保守地设置innodb_buffer_pool_instances=4,在MySQL 5.6和5.7中你可以设置为8-16个缓冲池实例 。设置后观察会觉得性能提高不大,但在大多数高负载情况下,它应该会有不错mysql缓冲池怎么调的表现 。对了,不要指望这个设置能减少你单个查询mysql缓冲池怎么调的响应时间 。这个是在高并发负载的服务器上才看得出区别 。比如多个线程同时做许多事情 。
5.7、8.0 下INNODB_BUFFER_POOL_INSTANCES默认为1 , 若mysql存在高并发和高负载访问,设置为1则会造成大量线程对BUFFER_POOL的单实例互斥锁竞争 , 这样会消耗一定量的性能的 。
pool_instances 可以设置为cpu核心数,它的作用是mysql缓冲池怎么调:
1)对于缓冲池在数千兆字节范围内的系统,通过减少争用不同线程对缓存页面进行读写的争用,将缓冲池划分为多个单独的实例可以提高并发性 。可以类比为 java中的 ThreadLocal 线程本地变量就是为每个线程维护一个buffer pool实例,这样就不用去争用同一个实例了 。相当于减少高并发下mysql对INNODB_BUFFER缓冲池的争用 。
2)使用散列函数将存储在缓冲池中或从缓冲池读取的每个页面随机分配给其中一个缓冲池实例 。每个缓冲池管理自己的空闲列表,刷新列表 ,  LRU和连接到缓冲池的所有其他数据结构,并受其自己的缓冲池互斥量保护 。
MySQL内存相关参数相关查看命令
sql show global variables like 'innodb_buffer_pool_size';
sql show global status like 'Innodb_buffer_pool_pages_data';
sql show global status like 'Innodb_page_size';
有mysql缓冲池怎么调的参数对应不同引擎mysql缓冲池怎么调,比如对于innodb引擎的 , 都是innodb_打头 。
例如mysql缓冲池怎么调:
innodb_buffer_pool_size = 81920M
join_buffer_size = 1024M
innodb_sort_buffer_size =1024M
sort_buffer_size = 2048M
【mysql缓冲池怎么调 mysql缓冲池 多大】 read_rnd_buffer_size = 2048M
innodb_log_buffer_size = 128M
innodb_log_file_size =2048M
innodb_log_files_in_group=10
bulk_insert_buffer_size=4096M
myisam_sort_buffer_size = 512M
myisam_max_sort_file_size = 10G
thread_cache_size = 300
ft_min_word_len = 1 #for chinese full text search
query_cache_size = 512M
query_cache_limit = 4M
query_cache_type = 0
query_cache_min_res_unit = 2k
thread_stack = 512K
tmp_table_size = 3G
max_heap_table_size = 3G
long_query_time = 3
log-slave-updates
max_binlog_cache_size = 8M
调优参考计算方法:
val = Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100%
val95% 则考虑增大 innodb_buffer_pool_size, 建议使用物理内存的75%
val95% 则考虑减小 innodb_buffer_pool_size,建议设置为:Innodb_buffer_pool_pages_data * Innodb_page_size * 1.05 / (1024*1024*1024)
设置命令:set global innodb_buffer_pool_size = 2097152; //缓冲池字节大小 , 单位kb,如果不设置,默认为128M
设置要根据自己的实际情况来设置,如果设置的值不在合理的范围内,并不是设置越大越好,可能设置的数值太大体现不出优化效果 , 反而造成系统的swap空间被占用,导致操作系统变慢,降低sql查询性能 。
修改配置文件的调整方法,修改my.cnf配置:
innodb_buffer_pool_size = 2147483648#设置2G

推荐阅读