lizhongxkd 2009-02-02 15:03
浏览 448
已采纳

mysql my.ini

近几天一直在学习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里一些参数改大..
不知道各位有这方面经验的怎么看待?

  • 写回答

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就够了,以节省内存。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何修改pca中的feature函数
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法