如何设置MySQL服务器来利用更多的内存

我和Plesk一起在Windows上安装了MySQL。 该版本是5.0.45社区。

我在服务器上的数据库是MyISAM以及InnoDb,但主要是innodb。

我的服务器上有8G的内存,但是MySQL不超过1.3G,调整设置并没有帮助。 我试图增加内存分配innodb_buffer_pool_size,它的作品,如果我把它设置为1G,但如果我设置2G,或以上的服务器不会回来在线!

我希望mySQL至less使用5-6G的内存来提高性能,但是我无法得到这个工作。

任何人都可以请帮忙? 我的MySQLconfiguration文件如下(有2个mysqld部分…当我使用MySQL工作台创build另一个!)

[MySQLD] port=3306 basedir=C:\\Program Files (x86)\\Parallels\\Plesk\\Databases\\MySQL datadir=C:\\Program Files (x86)\\Parallels\\Plesk\\Databases\\MySQL\\Data default-character-set=latin1 default-storage-engine=INNODB query_cache_size=128M table_cache=1024 tmp_table_size=32M thread_cache=32 myisam_max_sort_file_size=100G myisam_max_extra_sort_file_size=100G myisam_sort_buffer_size=2M key_buffer_size=32M read_buffer_size=16M read_rnd_buffer_size=2M sort_buffer_size=8M innodb_additional_mem_pool_size=24M innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=10M innodb_buffer_pool_size=1G innodb_log_file_size=10M innodb_thread_concurrency=8 max_connections=700 key_buffer=48M max_allowed_packet=5M sort_buffer=2M net_buffer_length=4K old_passwords=1 wait_timeout=20 connect_timeout=60 [client] port=3306 [mysqld] query_cache_min_res_unit = 4096 innodb_additional_mem_pool_size = 1048576 innodb_buffer_pool_size = 1G query_cache_limit = 1048576 key_buffer_size = 8388608 sort_buffer_size = 2097144 query_cache_type = 1 query_cache_size = 312M log-slow-queries connect_timeout = 5 wait_timeout = 20 thread_cache_size = 15 read_buffer_size = 131072 table_cache = 64 

不过,这并不容易。 MySQL有很多影响内存利用率的variables。 一堆这些也是依赖于存储引擎的。 有些variables是全局variables,有些variables是特定于线程的,所以你必须将它们乘以并发连接的数量。

这是一个计算内存利用率的脚本,给出一个参数列表:

 #!/usr/bin/env - perl $K=1024; $M=$K*$K; $num_connections = 20; $thread_stack = 64*$K; $read_rnd_buffer_size = 2*$M; $max_allowed_packet = 1*$M; $tmp_table_size = 2*$M; # Set low for non-myisam config, but not lower than 4M since temp tables need it, too. $myisam_sort_buffer_size=4 *$M; $read_buffer_size = 2 *$M; $join_buffer_size = 8 *$M; $query_cache_size = 128 * $M; # Set low for non-myisam config $key_buffer_size = 4 * $M; $innodb_buffer_pool_size = 64 *$M; $innodb_additional_mem_pool_size = 2 *$M; $innodb_log_buffer_size = 4 * $M; #=============== CALCULATIONS. DO NOT MODIFY $per_thread_ram = $thread_stack + $read_rnd_buffer_size + $max_allowed_packet + $tmp_table_size + $myisam_sort_buffer_size + $read_buffer_size + $join_buffer_size; $total_ram = $per_thread_ram * $num_connections + $query_cache_size + $key_buffer_size + $innodb_buffer_pool_size + $innodb_additional_mem_pool_size + $innodb_log_buffer_size; print "Total RAM consumed: ".$total_ram/$M." MB\n"; 

更多信息在这个链接 。