一般的MyISAM 数据库建议至少1/4的可用内存分配给 key_buffer_size
key_buffer_size = 4G
-- 临时设置,单位字节
set global key_buffer_size=1073741824
是否合理计算公式:
1 - ((key_blocks_unused * key_cache_block_size) / key_buffer_size )
使用率在80%左右比较合适。
在专有数据库服务器上,可以将80%的物理内存分配给他。
mysql 8
增加了一个自动分配内存的参数 innodb_dedicated_server
,如果当前服务器只有一个实例,并设置为了1 。mysql会根据物理机自动分配,规则如下:
# 物理内存小于1GB
innodb_buffer_pool_size=128MB
innodb_log_file_size=48MB
innodb_flush_method=O_DIRECT_NO_FSYNC
# 物理内存为 1GB ~ 4GB
innodb_buffer_pool_size=物理内存*0.5
innodb_log_file_size=128MB
innodb_flush_method=O_DIRECT_NO_FSYNC
# 物理内存 大于 4GB
innodb_buffer_pool_size=物理内存*0.75
innodb_log_file_size=1024MB
innodb_flush_method=O_DIRECT_NO_FSYNC
如果存在大量的茶润、更新操作,可以增大 innodb_log_buffer_size
来减少日志写磁盘操作。
默认16MB 。
需要关闭实例,清掉日志后再设置??这部分需要仔细查阅。
加快连接数据库的速度,控制mysql缓存客户服务现成的数量。
计算 threads_created/connections
,如果越接近1 ,则命中率越低,需要增加该值。
转载请注明出处: https://chrunlee.cn/article/db-index-prefect-note.html