近几天一直在学习MYSQL性能优化,运行MYSQL的服务器有4G内存.
项目才运行,所以人数不断增加,发现MYSQL的cpu很高,通过更改my.ini下的:max_connections,query_cache_size等等值后,cpu使用降下来了.但是总觉得不是最佳解决方法.
今天无意间打开my-huge.ini,my-large.ini.. 仔细看了哈,大喜,还找什么优化方案吗,直接把my-huge.ini更名为my.ini就行了啥..
但是问题来了,经过对比,比如在原my.ini下的max_connections,query_cache_size等很多设置在my-huge.ini下没有....
所以说如果直接把my-huge.ini更名为my.ini会不会有问题?比如会不会又导致cpu升高,由于项目已经在运行了,所以不能随便改了测试.
所以请有经验的指导哈啊? 我用的是:MySQL Server 5.1
[b]问题补充:[/b]
我只是举例说max_connections,query_cache_size这两个在my-huge.ini没有,实际情况是:basedir,datadir,default-character-set....这些在my-huge.ini都没有,网上查了哈,估计是因为我用的是安装版本的原因.所以我没有直接把my-huge.ini复制改为my.ini,而是根据my-huge.ini里的建议把原my.ini里一些参数改大..
不知道各位有这方面经验的怎么看待?
mysql my.ini
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- gabrial 2009-02-07 17:02关注
连接数不是越多越好,QUERY_cache_size也不是越大越好。
每个连接都会有内存消耗,你要确保MYSQL的内存不会因为过多的连接数而爆掉,否则只会降低性能。总的内存需求公式是:global buffer + connections* buffer per connection.
global buffer包括:key_buffer_size & innodb_buffer_size
buffer per connection:一般按照4M计算(最差情况),包括:read_buffer, sort_buffer, thread stack,等等。query_cache如果过大,会导致MYSQL在做INVALIDATION的时候变慢,而且如果你是一个WRITE HEAVY的应用,反而应该禁止掉QUERY_CACHE,因为每次数据的变更,都会是使得该表在QUERY CACHE中保存的所有对应结果集被INVALIDATION,这是MYSQL QUERY CACHE INVALIDATION的算法,从而增大了系统的毫无必要的负载。
总的来说,IO是数据库的瓶颈,我们能够越少的访问IO,性能就越好,因此分配给MYSQL的内存越多越好,一般现在都是用innodb,所以应该加大innodb的buffer_pool和log_buffer的容量。
好像缺省配置中key_buffer_size的设置都很大,如果不用MYISAM,应该将它降低到50M就够了,以节省内存。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog
- ¥15 Excel发现不可读取的内容