共計 4269 個字符,預計需要花費 11 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 my.ini 與 mysql 優化的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
mysql 優化了
所以先說說這個,其實這個,很復雜,對于不同的網站,其在線,訪問量,帖子數量,網絡情況,以及機器配置
都有關系,優化不是一次可以完成的,需要不斷的觀察和調試,以取得最佳效果
下面我引用 Asiwish 和老高的兩篇優化措施,給大家看看
這些設置,只要通過修改 win2000 的 c:/winnt/my.ini 或者 win2003 的 c:/windows/my.ini 來實現
首先,我們打開這個文件,先將最底部的密碼項改成其它的,這個對數據庫本身沒影響,主要是防止一些有心人獲取這個密碼,對我們不利
然后大家看看兩個例子,其中一些設置,略懂的英文的,即明白是什么意思,
不懂得可以去查單詞,我懶得一個個對照寫說明了
一個是 千人在線,1G 內存的
#This File was made using the WinMySQLAdmin 1.4 Tool
#2004-2-23 16:28:14
#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions
[mysqld]
basedir=D:/mysql
#bind-address=210.5.*.*
datadir=D:/mysql/data
#language=D:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
set-variable = max_connections=1500
skip-locking
#skip-networking
set-variable = key_buffer=384M
set-variable = max_allowed_packet=1M
set-variable = table_cache=512
set-variable = sort_buffer=2M
set-variable = record_buffer=2M
set-variable = thread_cache=8
# Try number of CPU’s*2 for thread_concurrency
set-variable = thread_concurrency=8
set-variable = myisam_sort_buffer_size=64M
#set-variable = connect_timeout=5
#set-variable = wait_timeout=5
server-id = 1
[isamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[myisamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[WinMySQLadmin]
Server=D:/mysql/bin/mysqld-nt.exe
這個方案,整體夠用了,但是在 pconnect 和最大連接數上,需要研究
max_connections 沒必要那么大,我個人認為幾百就夠,否則給服務器加大了不少負擔,經常會當機
連接超時的設置也要根據實際情況調整,大家可以自由調整,然后觀察效果如何。
下面是老高兩年前的一些建議,大家參考一下
7、MYSQL 的優化(/etc/my.cnf)
1)確認在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”參數;
2)確認在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”參數;
3)如果不需要的話,可以將二進制日志(binlog)停掉,方法是將“log-bin”注釋掉;
4)在內存允許的情況下,對一些參數進行重新配置,目標在于將大部分操作集中于內存中,盡量不進行磁盤操作,對于我的 MYSQL 服務器我是如下修改的,基于 2G 內存情況:
[mysqld]
set-variable = key_buffer=512M
set-variable = max_allowed_packet=4M
set-variable = table_cache=1024
set-variable = thread_cache=64
set-variable = join_buffer_size=32M
set-variable = sort_buffer=32M
set-variable = record_buffer=32M
set-variable = max_connections=512
set-variable = wait_timeout=120
set-variable = interactive_timeout=120
set-variable = max_connect_errors=30000
set-variable = long_query_time=1
set-variable = max_heap_table_size=256M
set-variable = tmp_table_size=128M
set-variable = thread_concurrency=8
set-variable = myisam_sort_buffer_size=128M
你可以根據“show status”命令返回的狀態進行微調。我主要注意以下變量的數值,越小越好,最好為零:)
Created_tmp_disk_tables
Created_tmp_tables
Created_tmp_files
Slow_queries
另外 mysql wait_timeout 那個值設置大了沒用 做 10 左右就可了 (大 C 說得)
wait_timeout 是使用長久連線時 空閑進程的控制 只要數據庫在連接狀態 他是不進行干預的 不管是否有查詢或更新操作 把這個設置小一點 再使用 pconnect 就比較理想了
timeout 的時間﹐我的經驗值是 5 -20﹐看你的 SERVER 的訪問量了~~ (夢飛說的)
訪問量越大 這個值就應該越小 否則留出的空閑進程太多 會占用不必要的內存
在一個 15 分鐘在線 3000 人的論壇上 設置為 3 比較合適 同時打開 pconnect
另外,我再引用一篇文章
數據庫連接過多的錯誤,可能的原因分析及解決辦法
分析
系統不能連接數據庫,關鍵要看兩個數據:
1、數據庫系統允許的最大可連接數 max_connections。這個參數是可以設置的。如果不設置,默認是 100。最大是 16384。
2、數據庫當前的連接線程數 threads_connected。這是動態變化的。
查看 max_connections、max_connections 的辦法見后。
如果 threads_connected == max_connections 時,數據庫系統就不能提供更多的連接數了,這時,如果程序還想新建連接線程,數據庫系統就會拒絕,如果程序沒做太多的錯誤處理,就會出現類似強壇的報錯信息。
因為創建和銷毀數據庫的連接,都會消耗系統的資源。而且為了避免在同一時間同時打開過多的連接線程,現在編程一般都使用所謂數據庫連接池技術。
但數據庫連接池技術,并不能避免程序錯誤導致連接資源消耗殆盡。
這種情況通常發生在程序未能及時釋放數據庫連接資源或其他原因造成數據庫連接資源不能釋放,但強壇系統估計不會發生這種低級的編程錯誤。
該錯誤的簡便的檢查辦法是,在刷新強壇頁面時,不斷監視 threads_connected 的變化。如果 max_connections 足夠大,而 threads_connected 值不斷增加以至達到 max_connections,那么,就應該檢查程序了。當然,如果采用數據庫連接池技術,threads_connected 增長到數據庫連接池的最大連接線程數時,就不再增長了。
從強壇出錯的情況看,更大的可能性是數據庫系統沒能進行適當地配置。下面提出一點建議。供參考
讓你們的工程師把 MySQL 的最大允許連接數從默認的 100 調成 32000。這就不會老出現連接過多的問題了。
查看 max_connections
進入 MySQL,用命令:show variables
查看數據庫最大可連接數的變量值:max_connections
查看 threads_connected
進入 MySQL,用命令:show status
查看當前活動的連接線程變量值:threads_connected
設置 max_connections
設置辦法是在 my.cnf 文件中,添加下面的最后紅色的一行:
——————————————————————————–
[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable = key_buffer=16K
set-variable = max_allowed_packet=1M
set-variable = thread_stack=64K
set-variable = table_cache=4
set-variable = sort_buffer=64K
set-variable = net_buffer_length=2K
set-variable = max_connections=32000
——————————————————————————–
修改完畢后,重啟 MySQL 即可。當然,為了確保設置正確,應該查看一下 max_connections。
注意:
1、雖然這里寫的 32000。但實際 MySQL 服務器允許的最大連接數 16384;
2、除 max_connections 外,上述其他配置應該根據你們系統自身需要進行配置,不必拘泥;
3、添加了最大允許連接數,對系統消耗增加不大。
4、如果你的 mysql 用的是 my.ini 作配置文件,設置類似,但設置的格式要稍作變通。
可見,mysql 的優化,是多樣化,且根據環境不同,必須靈活調整的
以上是“my.ini 與 mysql 優化的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!