Ginew.Z 的博客

          一切,為了讓生活更簡單、更自然

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            21 Posts :: 0 Stories :: 14 Comments :: 0 Trackbacks
          ??? MYSQL用了好多年了,一次次的優(yōu)化,一次次的頂過崩潰的邊緣,相信能有這樣經(jīng)歷的人也不多。這里我寫一點(diǎn)這么多年來優(yōu)化MYSQL的經(jīng)驗(yàn)。

          ??? 讓我們從頭開始

          ???? 什么機(jī)器比較適合跑MYSQL?原則就是IO操作一定要快,要少。在這個(gè)原則下,內(nèi)存肯定是越大越好,硬盤肯定是越快越好。1快硬盤不夠快,那就兩塊,做RAID0。
          ??? 什么操作系統(tǒng)比較適合跑MYSQL?我試過Linux,FreeBSD,Solaris。solaris是最差的,因?yàn)镮O慢,的確比其他兩個(gè)慢,所以我都不用它了。FBSD和linux哪個(gè)好?這個(gè)我倒是沒認(rèn)真比過,感覺上,fbsd的IO比linux快,所以我有一個(gè)5千萬條記錄的mysql跑在fbsd上,訪問量很高的情況下,感覺還是很快。最近的項(xiàng)目都統(tǒng)一到Linux下了,感覺mysql在linux下跑,也不錯(cuò)。看過不少評(píng)測(cè),都說mysql在linux比fbsd快,因?yàn)槲覜]有實(shí)際對(duì)比,只有各自的體會(huì),所以也不多評(píng)論了。不過fbsd有一點(diǎn)要注意,它默認(rèn)的數(shù)據(jù)段大小只有1G,你想開大緩存,就必須重新編譯內(nèi)核,不然會(huì)數(shù)據(jù)段錯(cuò)。
          ??? MYSQL5.1都已經(jīng)在測(cè)試了,我們應(yīng)該用什么版本?如果你是新開發(fā)一個(gè)產(chǎn)品,建議用5.0,不過我沒實(shí)際用過,不好說。我用的最多的是3.23.x和4.1.x。由于沒有在相同的環(huán)境下測(cè)試,所以不敢說哪個(gè)版本性能最好。所以還是只推薦5.0或者4.1畢竟是現(xiàn)在MYSQL主推的,比較有保證。
          ??? 我最近用的最多的是4.1。現(xiàn)在我一般會(huì)下載for linux+icc編譯的二進(jìn)制包,以前我一般下源文件自己編譯,源代碼編譯的是否好,直接影響性能。關(guān)于編譯mysql的選項(xiàng),足夠另外寫一篇東西了。這里就不提了,有興趣的看看BUILD目錄下的東西。現(xiàn)在我常用的是編譯好的二進(jìn)制包,因?yàn)樗木幾g環(huán)境已經(jīng)基本最優(yōu)化,而且加上icc編譯器的優(yōu)化,性能還能有一點(diǎn)提升。
          ??? 接著就是my.cnf了。我一般在support-files目錄下的my-innodb-heavy-4G.cnf文件的基礎(chǔ)上來修改。對(duì)性能影響比較大的,有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可以大一點(diǎn),我一般設(shè)256M,可以減少不斷增加緩存的操作,innodb_buffer_pool_size是初始化的緩存,我覺得2G有點(diǎn)太大了,我傾向于給操作系統(tǒng)本身留點(diǎn)緩存空間。我一般設(shè)到1.2G,他自己有需要,也會(huì)慢慢漲到2G。
          posted on 2006-03-30 17:49 無風(fēng)之雨 閱讀(575) 評(píng)論(1)  編輯  收藏 所屬分類: MySQL

          Feedback

          # re: 從頭到尾優(yōu)化MYSQL 2007-04-19 17:37 mysql愛好者
          我的服務(wù)器是CPU 2G,內(nèi)存是 1.8G,windows2003 ,mysql是 5.1,一個(gè)數(shù)據(jù)表有2.03G,1000萬行,引擎是MYISAM。
          我需要全盤掃描該表,select count(*) from table1 where result like "%adsad%",不建索引,最快需要31秒。我把 read_buff_size 改為2M,讀磁盤的次數(shù)減少了很多 ,速度反而變慢了,要42秒,還沒有 read_buff_size=32K 時(shí)的32秒速度那么塊。該如何配置參數(shù)?請(qǐng)博主賜教,先謝謝了。我的Email 是 lihanhui_2002@163.com。  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 榆中县| 宣威市| 宽城| 克东县| 洪洞县| 东安县| 集贤县| 成武县| 环江| 汤阴县| 广东省| 延川县| 柏乡县| 德化县| 京山县| 临夏县| 房产| 花莲市| 吴桥县| 天长市| 盐城市| 宜丰县| 深泽县| 金川县| 上杭县| 大连市| 巴里| 香河县| 康定县| 东辽县| 道孚县| 临海市| 甘孜县| 安泽县| 焦作市| 云浮市| 盐源县| 和田县| 河西区| 光山县| 余江县|