innodb_buffer_pool_size的大小设置

时间:2022-08-16 03:58:37
卖了一台配置牛X服务器,32核CPU,32G内存,装的是mysql5.6.21版本,windows2003。myisam和innodb共用,设置my.ini参数时,innodb_buffer_pool_size这个参数一般都说设成物理内存的70%-80%,我开始设16G,mysql启动不了,然后一直减小测试,只有设到300M左右,mysql才能启动成功,大了mysql就启动不了。还是win2003下innodb_buffer_pool_size只能很小,这不太浪费了吗?
下面是我的ini文件
[mysqld]

#绑定IPv4和3306端口
bind-address = 0.0.0.0
port=3306
skip-external-locking
skip-name-resolve
#myisam-recover=BACKUP,FORCE
basedir=E:/k8Serv/MySQL5.6/
datadir=E:/k8Serv/MySQL5.6/data/
character_set_server = utf8
collation-server = utf8_general_ci
thread_concurrency = 8
concurrent_insert = 2
max_write_lock_count = 1
##low-priority-updates=1
default-storage-engine=MYISAM
# Set the SQL mode to strict
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections = 3000
max_connect_errors = 100
query_cache_size = 512M
query_cache_limit = 2M
query_cache_type = 1
query_cache_wlock_invalidate = 1
table_open_cache=1200
tmp_table_size=256M
thread_cache_size=800
myisam_max_sort_file_size=10G
myisam_sort_buffer_size=256M
myisam_repair_threads = 1
key_buffer_size=512M
read_buffer_size=8M
read_rnd_buffer_size=16M
bulk_insert_buffer_size = 64M
sort_buffer_size=2M
join_buffer_size=2M
back_log = 600
#log-slow-queries=mysql-slow.log
#long_query_time=2
log-error=mysql.err

##*** INNODB Specific options ***
innodb_additional_mem_pool_size=12M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=3M
##innodb_buffer_pool_size与key_buffer一样,可以是内存60-80% 
innodb_buffer_pool_size=6G
innodb_log_file_size=512M
innodb_log_files_in_group=3
innodb_flush_neighbors=0
##log-bin=mysql-bin
##innodb_thread_concurrency  Linux环境设置为0
innodb_thread_concurrency = 100
innodb_file_io_threads=4 
innodb_thread_sleep_delay=40

wait_timeout=100
interactive_timeout=100
connect_timeout = 10
max_allowed_packet = 32M

8 个解决方案

#1


启动不了报什么错

#2


看日志,就是innodb无法分配内存,开始就是innodb_buffer_pool_size不能超过4G,少于4G后就是无法分配内存,直到设为300M,才启动成功。

#3


2003是64位吗
安装好MySQL以后,配置的时候全都选最重的配置,它自己生成的my.ini里面的innodb_buffer_pool_size是多少?
这个配置文件有点奇怪啊,我记得Windows平台下,default-storage-engine应该是InnoDB,而不是MYISAM,这个是从Linux平台下拿过来的?

#4


引用 3 楼 zhu19774279 的回复:
2003是64位吗
安装好MySQL以后,配置的时候全都选最重的配置,它自己生成的my.ini里面的innodb_buffer_pool_size是多少?
这个配置文件有点奇怪啊,我记得Windows平台下,default-storage-engine应该是InnoDB,而不是MYISAM,这个是从Linux平台下拿过来的?


default-storage-engine应该是InnoDB,而不是MYISAM,这个有什么关系呢?是我默认的引擎,不同项目,可能就默认不同的引擎,跟平台没关系吧

#5


应该是没关系,只是没研究过两个平台的配置文件是否通用,之前我担心是这方面引起的。
MySQLInstanceConfig配置好后会重新生成一个my.ini,这个生成的my.ini和你的有什么区别?比较一下看看
引用 4 楼 yzxlyl 的回复:
Quote: 引用 3 楼 zhu19774279 的回复:

2003是64位吗
安装好MySQL以后,配置的时候全都选最重的配置,它自己生成的my.ini里面的innodb_buffer_pool_size是多少?
这个配置文件有点奇怪啊,我记得Windows平台下,default-storage-engine应该是InnoDB,而不是MYISAM,这个是从Linux平台下拿过来的?


default-storage-engine应该是InnoDB,而不是MYISAM,这个有什么关系呢?是我默认的引擎,不同项目,可能就默认不同的引擎,跟平台没关系吧

#6


都提示[ERROR] InnoDB: Cannot allocate memory for the buffer pool

必须改到300M左右才能启动

#7


你确认你的内存有这么大的空间么?

使用64位的mysql

#8


#把这个参数设置为1试试:
innodb_buffer_pool_instances=1

#1


启动不了报什么错

#2


看日志,就是innodb无法分配内存,开始就是innodb_buffer_pool_size不能超过4G,少于4G后就是无法分配内存,直到设为300M,才启动成功。

#3


2003是64位吗
安装好MySQL以后,配置的时候全都选最重的配置,它自己生成的my.ini里面的innodb_buffer_pool_size是多少?
这个配置文件有点奇怪啊,我记得Windows平台下,default-storage-engine应该是InnoDB,而不是MYISAM,这个是从Linux平台下拿过来的?

#4


引用 3 楼 zhu19774279 的回复:
2003是64位吗
安装好MySQL以后,配置的时候全都选最重的配置,它自己生成的my.ini里面的innodb_buffer_pool_size是多少?
这个配置文件有点奇怪啊,我记得Windows平台下,default-storage-engine应该是InnoDB,而不是MYISAM,这个是从Linux平台下拿过来的?


default-storage-engine应该是InnoDB,而不是MYISAM,这个有什么关系呢?是我默认的引擎,不同项目,可能就默认不同的引擎,跟平台没关系吧

#5


应该是没关系,只是没研究过两个平台的配置文件是否通用,之前我担心是这方面引起的。
MySQLInstanceConfig配置好后会重新生成一个my.ini,这个生成的my.ini和你的有什么区别?比较一下看看
引用 4 楼 yzxlyl 的回复:
Quote: 引用 3 楼 zhu19774279 的回复:

2003是64位吗
安装好MySQL以后,配置的时候全都选最重的配置,它自己生成的my.ini里面的innodb_buffer_pool_size是多少?
这个配置文件有点奇怪啊,我记得Windows平台下,default-storage-engine应该是InnoDB,而不是MYISAM,这个是从Linux平台下拿过来的?


default-storage-engine应该是InnoDB,而不是MYISAM,这个有什么关系呢?是我默认的引擎,不同项目,可能就默认不同的引擎,跟平台没关系吧

#6


都提示[ERROR] InnoDB: Cannot allocate memory for the buffer pool

必须改到300M左右才能启动

#7


你确认你的内存有这么大的空间么?

使用64位的mysql

#8


#把这个参数设置为1试试:
innodb_buffer_pool_instances=1