Ginew.Z 的博客

一切,为了让生活更简单、更自然

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  21 Posts :: 0 Stories :: 14 Comments :: 0 Trackbacks
    MYSQL用了好多年了,一次次的优化,一次次的顶过崩溃的边缘,相信能有这样经历的人也不多。这里我写一点这么多年来优化MYSQL的经验。

    让我们从头开始

     什么机器比较适合跑MYSQL?原则就是IO操作一定要快,要少。在这个原则下,内存肯定是越大越好,硬盘肯定是越快越好。1快硬盘不够快,那就两块,做RAID0。
    什么操作系统比较适合跑MYSQL?我试过Linux,FreeBSD,Solaris。solaris是最差的,因为IO慢,的确比其他两个慢,所以我都不用它了。FBSD和linux哪个好?这个我倒是没认真比过,感觉上,fbsd的IO比linux快,所以我有一个5千万条记录的mysql跑在fbsd上,访问量很高的情况下,感觉还是很快。最近的项目都统一到Linux下了,感觉mysql在linux下跑,也不错。看过不少评测,都说mysql在linux比fbsd快,因为我没有实际对比,只有各自的体会,所以也不多评论了。不过fbsd有一点要注意,它默认的数据段大小只有1G,你想开大缓存,就必须重新编译内核,不然会数据段错。
    MYSQL5.1都已经在测试了,我们应该用什么版本?如果你是新开发一个产品,建议用5.0,不过我没实际用过,不好说。我用的最多的是3.23.x和4.1.x。由于没有在相同的环境下测试,所以不敢说哪个版本性能最好。所以还是只推荐5.0或者4.1毕竟是现在MYSQL主推的,比较有保证。
    我最近用的最多的是4.1。现在我一般会下载for linux+icc编译的二进制包,以前我一般下源文件自己编译,源代码编译的是否好,直接影响性能。关于编译mysql的选项,足够另外写一篇东西了。这里就不提了,有兴趣的看看BUILD目录下的东西。现在我常用的是编译好的二进制包,因为他的编译环境已经基本最优化,而且加上icc编译器的优化,性能还能有一点提升。
    接着就是my.cnf了。我一般在support-files目录下的my-innodb-heavy-4G.cnf文件的基础上来修改。对性能影响比较大的,有table_cache,sort_buffer_size,join_buffer_size,query_cache_size,key_buffer_size,read_buffer_size,innodb_additional_mem_pool_size,innodb_buffer_pool_size。用INNODB是肯定的。innodb_additional_mem_pool_size可以大一点,我一般设256M,可以减少不断增加缓存的操作,innodb_buffer_pool_size是初始化的缓存,我觉得2G有点太大了,我倾向于给操作系统本身留点缓存空间。我一般设到1.2G,他自己有需要,也会慢慢涨到2G。
posted on 2006-03-30 17:49 无风之雨 阅读(570) 评论(1)  编辑  收藏 所属分类: MySQL

Feedback

# re: 从头到尾优化MYSQL 2007-04-19 17:37 mysql爱好者
我的服务器是CPU 2G,内存是 1.8G,windows2003 ,mysql是 5.1,一个数据表有2.03G,1000万行,引擎是MYISAM。
我需要全盘扫描该表,select count(*) from table1 where result like "%adsad%",不建索引,最快需要31秒。我把 read_buff_size 改为2M,读磁盘的次数减少了很多 ,速度反而变慢了,要42秒,还没有 read_buff_size=32K 时的32秒速度那么块。该如何配置参数?请博主赐教,先谢谢了。我的Email 是 lihanhui_2002@163.com。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: