MySQL 的最佳化設定

来源:百度文库 编辑:神马文学网 时间:2024/05/23 14:51:58
虛擬主機系列 - MySQL 的最佳化設定
作者: 鄙雕兔  日期: 2007-01-20 22:02
字體大小:小中大

一. 適用系統 : Fedora Core 3, 4, 5, 6
二. 說明 :
當主機的服務量越來越多後, 就會造成資料庫存取變慢的情況發生, 特別是一些幾千種商品的購物網站, 若是沒有將一些常用的資料利用 MySQL 本身的快取能力, 存放到記憶體內的話, 你會發現網站開啟的速度真是慢到受不了, 特別再加上一台主機上面有個幾家重量級的大戶的話, 那你的網站服務速度一定會讓人家無法接受的, 所以為了能夠將網站服務的速度提升, 還有減少磁碟 I/O 的情況發生, 所以就上網找了一些設定的資料, 將我們家主機的設定修改一下, 改完後發現效能真是提升不少, 網頁開啟的速度快上很多, 尤其是一頁上有很多資料要同時顯示的網頁最明顯.
三. 修改設定檔案 :  /etc/my.cnf
四. 主要修改內容如下 :
(1) MySQL 設定檔案資料, 請不要使用  RPM 安裝後預設的,  請到 /usr/share/doc/mysql-server-x.x.x 的目錄中選擇你要的設定檔案
my-huge.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
請選定以上其中一個將該檔案複製到 /etc/my.cnf , 將原來的檔案蓋過去, 一般來說重新啟動 MySQL 後可以解決很多記憶體不足或者是效能不足的問題, 在 MySQL 4.x 版以後的 cache 功能很強大, 會將很多 Query 過的資料放在記憶體中, 這樣下一個使用者若是下相同條件或者是查詢相同資料時, 你會發現真是太快了, 特別是在一些產品展示的網站或者討論區的網站上來說, 是相當有用的.
(2)採用了以上的預設設定後若效能還是不夠, 或者因為客戶越來越多後需要更大的效能請修改以下的一些設定
set-variable    = key_buffer=384M
#請加大到 384 M 或者更大
set-variable    = max_allowed_packet=2M
set-variable    = table_cache=2048
# table_cache 的部份主要是要將開啟的 Table cache 到記憶體中, 若發現已經開啟的數量大於這個數的話, 請加大
set-variable    = join_buffer_size=128M
set-variable    = sort_buffer=8M
set-variable    = net_buffer_length=8K
set-variable    = myisam_sort_buffer_size=128M
# mysiam_sort_buffer_size 若是採用 3.x 版的 MySQL 請將這個參數加大, 若是採用 4.x 的話不需要
set-variable    = thread_concurrency=4
# 請將 thread_concurrency 設定為 CPU 數的兩倍, 這個參數在多 CPU 的系統上面很有用
#log-bin   請將這個東東 mark掉, 但若是你有用到 Cluster 的話請打開
server-id       = 1
set-variable    = max_connections=2000
# 這個參數最重要,  因為當你的網站連線數越來越多後, 就會發生Too many conneciton .... 的情況, 所以你就需要將 MySQL能夠同一時間連線的數量加大,這樣的話就可以讓 MySQL 服務更多人.
說明 :
以上的設定是在 4Gb 的記憶體下用的, 若是你主機的記憶體數量很小的話請不要用這些設定, 用了話保證你的主機一定負荷不了的.
引用通告地址: http://jeantean.idv.tw/linux/trackback.php?tbID=5&extra=633b90