您好,登錄后才能下訂單哦!
這篇文章主要介紹了MySQL安裝后需要調整哪些內容,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
面對MySQL的DBA或者做MySQL性能相關的工作的人,我最喜歡問的問題是,在MySQL服務器安裝后,需要調整什么,假設是以缺省的設置安裝的。
我很驚訝有非常多的人沒有合理的回答,很多的MySQL服務器都在缺省的配置下運行。
盡管你可以調整非常多的MySQL服務器變量,但是在通常情況下只有少數的變量是真正重要的。在你設置完這些變量以后,其他變量的改動通常只能帶來相對有限的性能改善。
key_buffer_size ---- 非常重要,如果你使用MyISAM表。如果只使用MyISAM表,那么把它的值設置為可用內存的30%到40%。恰當的大小依賴索引的數量、數據量和負載 ----記住MyISAM使用操作系統的cache去緩存數據,所以你也需要為它留出內存,而且數據通常比索引要大很多。然而需要查看是否所有的 key_buffer總是在被使用 ---- key_buffer為4G而.MYI文件只有1G的情況并不罕見。這樣就有些浪費了。如果只是使用很少的MyISAM表,你希望它的值小一些,但是仍然至少要設成16到32M,用于臨時表(占用硬盤的)的索引。
innodb_buffer_pool_size ---- 非常重要,如果使用Innodb表。相對于MyISAM表而言,Innodb表對buffer size的大小更敏感。在處理大的數據集(data set)時,使用缺省的key_buffer_size和innodb_buffer_pool_size,MyISAM可能正常工作,而Innodb可能就是慢得像爬一樣了。同時Innodb buffer pool緩存了數據和索引頁,因此你不需要為操作系統的緩存留空間,在只用Innodb的數據庫服務器上,可以設成占內存的70%到80%。上面 key_buffer的規則也同樣適用 ---- 如果只有小的數據集,而且也不會戲劇性地增大,那么不要把innodb_buffer_pool_size設得過大。因為你可以更好地使用多余的內存。
innodb_additional_pool_size ---- 這個變量并不太影響性能,至少在有像樣的(decent)內存分配的操作系統中是這樣。但是仍然需要至少設為20MB(有時候更大),是Innodb分配出來用于處理一些雜事的。
innodb_log_file_size ---- 對于以寫操作為主的負載(workload)非常重要,特別是數據集很大的時候。較大的值會提高性能,但增加恢復的時間。因此需要謹慎。我通常依據服務器的大小(server size)設置為64M到512M。
innodb_log_buffer_size ---- 缺省值在中等數量的寫操作和短的事務的大多數負載情況下是夠用的。如果有大量的UPDATE或者大量地使用blob,你可能需要增加它的值。不要把它的值設得過多,否則會浪費內存--log buffer至少每秒刷新一次,沒有必要使用超過一秒鐘所需要的內存。8MB到16MB通常是足夠的。小一些的安裝應該使用更小的值。
innodb_flush_logs_at_trx_commit ---- 為Innodb比MyISAM慢100倍而哭泣?你可能忘記了調整這個值。缺省值是1,即每次事務提交時都會把日志刷新到磁盤上,非常耗資源,特別是沒有電池備份的cache時。很多應用程序,特別是那些從MyISAM表移植過來的,應該把它設成2。意味著只把日志刷新到操作系統的cache,而不刷新到磁盤。此時,日志仍然會每秒一次刷新到磁盤上,因此通常你不會丟失超過1到2秒的更新。設成0會更快一些,但安全性差一些,在MySQL服務崩潰的時候,會丟失事務。設成2只會在操作系統崩潰的時候丟失數據。
table_cache ---- 打開表是昂貴的(耗資源)。例如,MyISAM表在MYI文件頭做標記以標明哪些表正在使用。你不會希望這樣的操作頻繁發生,通常最好調整你的cache 大小,使其能夠滿足大多數打開的表的需要。它使用了一些操作系統的資源和內存,但是對于現代的硬件水平來說通常不是問題。對于一個使用幾百個表的應用, 1024是一個合適的值(注意每個連接需要各自的緩存)。如果有非常多的連接或者非常多的表,則需要增大它的值。我曾經看到過使用超過100000的值。
thread_cache ---- 線程創建/銷毀是昂貴的,它在每次連接和斷開連接時發生。我通常把這個值至少設成16。如果應用有時會有大量的并發連接,并且可以看到 threads_created變量迅速增長,我就把它的值調高。目標是在通常的操作中不要有線程的創建。
query_cache ---- 如果你的應用是以讀為主的,并且你沒有應用級的緩存,那么它會有很大幫助。不要把它設得過大,因為它的維護可能會導致性能下降。通常會設置在32M到 512M之間。設置好后,經過一段時間要進行檢查,看看是否合適。For certain workloads cache hit ratio is lower than would justify having it enabled.(這句不會翻譯)
注意:就像你看到的,上面所說的都是全局變量。這些變量依賴硬件和存儲引擎的使用,而會話級的變量(per session variables)則與特定的訪問量(workload)相關。如果只是一些簡單的查詢,就沒有必要增加sort_buffer_size,即使有 64G的內存讓你去浪費。而且這樣做還可能降低性能。我通常把調整會話級的變量放在第二步,在我分析了訪問量(或負載)之后。
此外在MySQL分發版中包含了一些my.cnf文件的例子,可以作為非常好的模板去使用。如果你能夠恰當地從中選擇一個,通常會比缺省值要好。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“MySQL安裝后需要調整哪些內容”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。