mysql數(shù)據(jù)庫(kù)的負(fù)載能力除了和你機(jī)器硬件有關(guān),還有一個(gè)重要參數(shù)就是你系統(tǒng)的配置有關(guān),下面我來(lái)給大家介紹幾種提高M(jìn)YSQL數(shù)據(jù)庫(kù)連接數(shù)負(fù)載能力方法總結(jié),各位同學(xué)可進(jìn)入?yún)⒖?
第一先限制Innodb的并發(fā)處理,如果innodb_thread_concurrency = 0 可以先改成 16或是64 看機(jī)器壓力,如果非常大,先改成16讓機(jī)器的壓力下來(lái),然后慢慢增達(dá),適應(yīng)自已的業(yè)務(wù).
處理方法:set global innodb_thread_concurrency=16;
方法一:window系統(tǒng)中可直接修改my.ini文件
進(jìn)入MYSQL安裝目錄 打開MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改為 max_connections=1000 服務(wù)里重起MYSQL即可
方法二:在mysql命令模式下
對(duì)于連接數(shù)已經(jīng)超過(guò)600或是更多的情況,可以考慮適當(dāng)?shù)南拗埔幌逻B接數(shù),讓前端報(bào)一下錯(cuò),也別讓DB掛了.DB在了,總是可以用來(lái)加載一下數(shù)據(jù),當(dāng)數(shù)據(jù)加載到了nosql里了,慢慢的DB壓力也會(huì)降下來(lái)的.限制單用戶連接數(shù)在500以下,如:
set global max_user_connections=500;
MySQL隨著連接數(shù)的增加性能會(huì)是下降的,這也是thread_pool出現(xiàn)的原因,另外對(duì)于有的監(jiān)控程序會(huì)讀取information_schema下面的表的程序可以考慮關(guān)閉下面的參數(shù).
innodb_stats_on_metadata=0
set global innodb_stats_on_metadata=0;
方法:MySQL的最大連接數(shù)默認(rèn)是100客戶端登錄:mysql -uusername -ppassword
設(shè)置新的最大連接數(shù)為200:mysql> set GLOBAL max_connections=200
顯示當(dāng)前運(yùn)行的Query:mysql> show processlist
顯示當(dāng)前狀態(tài):mysql> show status
退出客戶端:mysql> exit
查看當(dāng)前最大連接數(shù):mysqladmin -uusername -ppassword variables
這個(gè)參數(shù)主要防止對(duì)讀取information_schema時(shí)造成大量讀取磁盤進(jìn)行信息統(tǒng)計(jì)(如果慢查詢中出現(xiàn)關(guān)于information_schema中表時(shí),也可以考慮禁用該參數(shù))
處理依據(jù):當(dāng)學(xué)校的一個(gè)食堂一分鐘只能為兩個(gè)打飯, 忽然來(lái)了100個(gè)時(shí)人來(lái)打飯,又沒排隊(duì), 不出會(huì)現(xiàn)了打飯的師傅要用點(diǎn)時(shí)間去選擇為那個(gè)用戶服務(wù)了, 人越多,場(chǎng)面就越亂, 難免出現(xiàn)用戶大吼該他的場(chǎng)面, 最后有可能就出現(xiàn)不是打飯了,而時(shí)之間相互打架了,打飯的師傅也將收到同時(shí)有90個(gè)以上的Server too busy. 如果能排一下隊(duì).最多也就50分鐘能處理完了.
方法三:linux中得新編譯mysql
以centos 4.4 下面的mysql 5.0.33 手工編譯版本為例說(shuō)明:
vi /usr/local/mysql/bin/mysqld_safe
找到safe_mysqld編輯它,找到mysqld啟動(dòng)的那兩行,在后面加上參數(shù):
-O max_connections=1500
具體一點(diǎn)就是下面的位置:
- then $NOHUP_NICENESS $ledir/$MYSQLD
- $defaults --basedir=$MY_BASEDIR_VERSION
- --datadir=$DATADIR $USER_OPTION
- --pid-file=$pid_file
- --skip-external-locking
- -O max_connections=1500
- >> $err_log 2>&1 else
- eval "$NOHUP_NICENESS $ledir/$MYSQLD
- $defaults --basedir=$MY_BASEDIR_VERSION
- --datadir=$DATADIR $USER_OPTION
- --pid-file=$pid_file
- --skip-external-locking $args
- -O max_connections=1500 >>
- $err_log 2>&1" --Vevb.com
- 保存。
- # service mysqld restart
- # /usr/local/mysql/bin/mysqladmin -uroot -p variables
- 輸入root數(shù)據(jù)庫(kù)賬號(hào)的密碼后可看到
- max_connections 1500 即新改動(dòng)已經(jīng)生效。
新聞熱點(diǎn)
疑難解答
圖片精選