久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中怎么配置參數優化

148次閱讀
沒有評論

共計 4268 個字符,預計需要花費 11 分鐘才能閱讀完成。

這期內容當中丸趣 TV 小編將會給大家帶來有關 MySQL 中怎么配置參數優化,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Mysql 參數優化對于新手來講,是比較難懂的東西,其實這個參數優化,是個很復雜的東西,對于不同的網站,及其在線量,訪問量,帖子數量,網絡情況,以及機器硬件配置都有關系,優化不可能一次性完成,需要不斷的觀察以及調試,才有可能得到最佳效果。
下面先說我的服務器的硬件以及論壇情況,
CPU: 2 顆四核 Intel Xeon 2.00GHz
內存: 4GB DDR
硬盤: SCSI 146GB
論壇:在線會員 一般在 5000 人左右 – 最高記錄是 13264.
下面,我們根據以上硬件配置結合一份已經做過一次優化的 my.cnf 進行分析說明:有些參數可能還得根據論壇的變化情況以及程序員的程序進行再調整。
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking # 避免 MySQL 的外部鎖定,減少出錯幾率增強穩定性。skip-name-resolve
禁止 MySQL 對外部連接進行 DNS 解析,使用這一選項可以消除 MySQL 進行 DNS 解析的時間。但需要注意,如果開啟該選項,則所有遠程主機連接授權都要使用 IP 地址方式,否則 MySQL 將無法正常處理連接請求!
back_log = 500
要求 MySQL 能有的連接數量。當主要 MySQL 線程在一個很短時間內得到非常多的連接請求,這就起作用,然后主線程花些時間 (盡管很短) 檢查連接并且啟動一個新線程。
back_log 值指出在 MySQL 暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。只有如果期望在一個短時間內有很多連接,你需要增加 它,換句話說,這值對到來的 TCP/IP 連接的偵聽隊列的大小。你的操作系統在這個隊列大小上有它自己的限制。試圖設定 back_log 高于你的操作系統 的限制將是無效的。當你觀察你的主機進程列表,發現大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待連接進程時,就要加大 back_log 的值了。默認數值是 50,我把它改為 500。
key_buffer_size = 384M
# key_buffer_size 指定用于索引的緩沖區大小,增加它可得到更好處理的索引 (對所有讀和多重寫),到你能負擔得起那樣多。如果你使它太大,系 統將開始換頁并且真的變慢了。對于內存在 4GB 左右的服務器該參數可設置為 384M 或 512M。通過檢查狀態值 Key_read_requests 和 Key_reads, 可以知道 key_buffer_size 設置是否合理。比例 key_reads / key_read_requests 應該盡可能的低,至少是 1:100,1:1000 更好(上述狀態值可以使用 SHOW STATUS LIKE lsquo;key_read% rsquo; 獲得)。注意:該參數值設置的過大反而會是服務器整體效率降低!
max_allowed_packet = 32M
增加該變量的值十分安全,這是因為僅當需要時才會分配額外內存。例如,僅當你發出長查詢或 mysqld 必須返回大的結果行時 mysqld 才會分配更多內 存。該變量之所以取較小默認值是一種預防措施,以捕獲客戶端和服務器之間的錯誤信息包,并確保不會因偶然使用大的信息包而導致內存溢出。
table_cache = 512
table_cache 指定表高速緩存的大小。每當 MySQL 訪問一個表時,如果在表緩沖區中還有空間,該表就被打開并放入其中,這樣可以更快地訪問表 內容。通過檢查峰值時間的狀態值 Open_tables 和 Opened_tables,可以決定是否需要增加 table_cache 的值。如果你發現 open_tables 等于 table_cache,并且 opened_tables 在不斷增長,那么你就需要增加 table_cache 的值了(上述狀 態值可以使用 SHOW STATUS LIKE lsquo;Open%tables rsquo; 獲得)。注意,不能盲目地把 table_cache 設置成很大的值。如果設置得太高,可能會造成文件描述符不足,從而造成性能 不穩定或者連接失敗。
sort_buffer_size = 4M
查詢排序時所能使用的緩沖區大小。注意:該參數對應的分配內存是每連接獨占! 如果有 100 個連接,那么實際分配的總共排序緩沖區大小為 100 times; 4 = 400MB。所以,對于內存在 4GB 左右的服務器推薦設置為 4 -8M。
read_buffer_size = 4M
讀查詢操作所能使用的緩沖區大小。和 sort_buffer_size 一樣,該參數對應的分配內存也是每連接獨享!
join_buffer_size = 8M
聯合查詢操作所能使用的緩沖區大小,和 sort_buffer_size 一樣,該參數對應的分配內存也是每連接獨享!
myisam_sort_buffer_size = 64M
MyISAM 表發生變化時重新排序所需的緩沖
query_cache_size = 64M
指定 MySQL 查詢緩沖區的大小。可以通過在 MySQL 控制臺執行以下命令觀察:
# SHOW VARIABLES LIKE %query_cache% # SHOW STATUS LIKE Qcache% # 如果 Qcache_lowmem_prunes 的值非常大,則表明經常出現緩沖不夠的情況;
如果 Qcache_hits 的值非常大,則表明查詢緩沖使用非常頻繁,如果該值較小反而會影響效率,那么可以考慮不用查詢緩沖;Qcache_free_blocks,如果該值非常大,則表明緩沖區中碎片很多。
thread_cache_size = 64
可以復用的保存在中的線程的數量。如果有,新的線程從緩存中取得,當斷開連接的時候如果有空間,客戶的線置在緩存中。如果有很多新的線程,為了提高性能 可以這個變量值。通過比較 Connections 和 Threads_created 狀態的變量,可以看到這個變量的作用
tmp_table_size = 256M
max_connections = 1000
指定 MySQL 允許的最大連接進程數。如果在訪問論壇時經常出現 Too Many Connections 的錯誤提示,則需要增大該參數值。
max_connect_errors = 10000000
對于同一主機,如果有超出該參數值個數的中斷錯誤連接,則該主機將被禁止連接。如需對該主機進行解禁,執行:FLUSH HOST;。
wait_timeout = 10
指定一個請求的最大連接時間,對于 4GB 左右內存的服務器可以設置為 5 -10。
thread_concurrency = 8
該參數取值為服務器邏輯 CPU 數量 times;2,在本例中,服務器有 2 顆物理 CPU,而每顆物理 CPU 又支持 H.T 超線程,所以實際取值為 4 times; 2 = 8
skip-networking
開啟該選項可以徹底關閉 MySQL 的 TCP/IP 連接方式,如果 WEB 服務器是以遠程連接的方式訪問 MySQL 數據庫服務器則不要開啟該選項! 否則將無法正常連接!
long_query_time = 10
log-slow-queries =
log-queries-not-using-indexes
開啟慢查詢日志(slow query log)
慢查詢日志對于跟蹤有問題的查詢非常有用。它記錄所有查過 long_query_time 的查詢,如果需要,還可以記錄不使用索引的記錄。下面是一個慢查詢日志的例子:
開啟慢查詢日志,需要設置參數 log_slow_queries、long_query_times、log-queries-not-using-indexes。
log_slow_queries 指定日志文件,如果不提供文件名,MySQL 將自己產生缺省文件名。long_query_times 指定慢查詢的閾 值,缺省是 10 秒。log-queries-not-using-indexes 是 4.1.0 以后引入的參數,它指示記錄不使用索引的查詢。設置 long_query_time=10
另外附上使用 show status 命令查看 mysql 狀態相關的值及其含義:
使用 show status 命令
含義如下:
aborted_clients 客戶端非法中斷連接次數
aborted_connects 連接 mysql 失敗次數
com_xxx xxx 命令執行次數, 有很多條
connections 連接 mysql 的數量
Created_tmp_disk_tables 在磁盤上創建的臨時表
Created_tmp_tables 在內存里創建的臨時表
Created_tmp_files 臨時文件數
Key_read_requests The number of requests to read a key block from the cache
Key_reads The number of physical reads of a key block from disk
Max_used_connections 同時使用的連接數
Open_tables 開放的表
Open_files 開放的文件
Opened_tables 打開的表
Questions 提交到 server 的查詢數
Sort_merge_passes 如果這個值很大, 應該增加 my.cnf 中的 sort_buffer 值
Uptime 服務器已經工作的秒數
提升性能的建議:
1. 如果 opened_tables 太大, 應該把 my.cnf 中的 table_cache 變大
2. 如果 Key_reads 太大, 則應該把 my.cnf 中 key_buffer_size 變大. 可以用 Key_reads/Key_read_requests 計算出 cache 失敗率
3. 如果 Handler_read_rnd 太大, 則你寫的 SQL 語句里很多查詢都是要掃描整個表, 而沒有發揮索引的鍵的作用
4. 如果 Threads_created 太大, 就要增加 my.cnf 中 thread_cache_size 的值. 可以用 Threads_created/Connections 計算 cache 命中率
5. 如果 Created_tmp_disk_tables 太大, 就要增加 my.cnf 中 tmp_table_size 的值, 用基于內存的臨時表代替基于磁盤的

上述就是丸趣 TV 小編為大家分享的 MySQL 中怎么配置參數優化了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計4268字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 乌拉特后旗| 余姚市| 五大连池市| 浦东新区| 西充县| 百色市| 泗洪县| 桂阳县| 星子县| 龙井市| 青川县| 响水县| 营山县| 兖州市| 泰来县| 房产| 柘城县| 越西县| 北票市| 高雄县| 仲巴县| 南城县| 毕节市| 安达市| 云霄县| 凤翔县| 哈尔滨市| 池州市| 民丰县| 平利县| 喜德县| 休宁县| 黑河市| 大姚县| 年辖:市辖区| 五指山市| 遂昌县| 陈巴尔虎旗| 卢龙县| 嘉禾县| 东乌珠穆沁旗|