這篇文章主要介紹了MySQL安裝后需要調(diào)整哪些內(nèi)容,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都做網(wǎng)站、網(wǎng)站設(shè)計的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗。創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗,見的多,溝通容易、能幫助客戶提出的運(yùn)營建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價值服務(wù)。面對MySQL的DBA或者做MySQL性能相關(guān)的工作的人,我最喜歡問的問題是,在MySQL服務(wù)器安裝后,需要調(diào)整什么,假設(shè)是以缺省的設(shè)置安裝的。
我很驚訝有非常多的人沒有合理的回答,很多的MySQL服務(wù)器都在缺省的配置下運(yùn)行。
盡管你可以調(diào)整非常多的MySQL服務(wù)器變量,但是在通常情況下只有少數(shù)的變量是真正重要的。在你設(shè)置完這些變量以后,其他變量的改動通常只能帶來相對有限的性能改善。
key_buffer_size ---- 非常重要,如果你使用MyISAM表。如果只使用MyISAM表,那么把它的值設(shè)置為可用內(nèi)存的30%到40%。恰當(dāng)?shù)拇笮∫蕾囁饕臄?shù)量、數(shù)據(jù)量和負(fù)載 ----記住MyISAM使用操作系統(tǒng)的cache去緩存數(shù)據(jù),所以你也需要為它留出內(nèi)存,而且數(shù)據(jù)通常比索引要大很多。然而需要查看是否所有的 key_buffer總是在被使用 ---- key_buffer為4G而.MYI文件只有1G的情況并不罕見。這樣就有些浪費(fèi)了。如果只是使用很少的MyISAM表,你希望它的值小一些,但是仍然至少要設(shè)成16到32M,用于臨時表(占用硬盤的)的索引。
innodb_buffer_pool_size ---- 非常重要,如果使用Innodb表。相對于MyISAM表而言,Innodb表對buffer size的大小更敏感。在處理大的數(shù)據(jù)集(data set)時,使用缺省的key_buffer_size和innodb_buffer_pool_size,MyISAM可能正常工作,而Innodb可能就是慢得像爬一樣了。同時Innodb buffer pool緩存了數(shù)據(jù)和索引頁,因此你不需要為操作系統(tǒng)的緩存留空間,在只用Innodb的數(shù)據(jù)庫服務(wù)器上,可以設(shè)成占內(nèi)存的70%到80%。上面 key_buffer的規(guī)則也同樣適用 ---- 如果只有小的數(shù)據(jù)集,而且也不會戲劇性地增大,那么不要把innodb_buffer_pool_size設(shè)得過大。因為你可以更好地使用多余的內(nèi)存。
innodb_additional_pool_size ---- 這個變量并不太影響性能,至少在有像樣的(decent)內(nèi)存分配的操作系統(tǒng)中是這樣。但是仍然需要至少設(shè)為20MB(有時候更大),是Innodb分配出來用于處理一些雜事的。
innodb_log_file_size ---- 對于以寫操作為主的負(fù)載(workload)非常重要,特別是數(shù)據(jù)集很大的時候。較大的值會提高性能,但增加恢復(fù)的時間。因此需要謹(jǐn)慎。我通常依據(jù)服務(wù)器的大?。╯erver size)設(shè)置為64M到512M。
innodb_log_buffer_size ---- 缺省值在中等數(shù)量的寫操作和短的事務(wù)的大多數(shù)負(fù)載情況下是夠用的。如果有大量的UPDATE或者大量地使用blob,你可能需要增加它的值。不要把它的值設(shè)得過多,否則會浪費(fèi)內(nèi)存--log buffer至少每秒刷新一次,沒有必要使用超過一秒鐘所需要的內(nèi)存。8MB到16MB通常是足夠的。小一些的安裝應(yīng)該使用更小的值。
innodb_flush_logs_at_trx_commit ---- 為Innodb比MyISAM慢100倍而哭泣?你可能忘記了調(diào)整這個值。缺省值是1,即每次事務(wù)提交時都會把日志刷新到磁盤上,非常耗資源,特別是沒有電池備份的cache時。很多應(yīng)用程序,特別是那些從MyISAM表移植過來的,應(yīng)該把它設(shè)成2。意味著只把日志刷新到操作系統(tǒng)的cache,而不刷新到磁盤。此時,日志仍然會每秒一次刷新到磁盤上,因此通常你不會丟失超過1到2秒的更新。設(shè)成0會更快一些,但安全性差一些,在MySQL服務(wù)崩潰的時候,會丟失事務(wù)。設(shè)成2只會在操作系統(tǒng)崩潰的時候丟失數(shù)據(jù)。
table_cache ---- 打開表是昂貴的(耗資源)。例如,MyISAM表在MYI文件頭做標(biāo)記以標(biāo)明哪些表正在使用。你不會希望這樣的操作頻繁發(fā)生,通常最好調(diào)整你的cache 大小,使其能夠滿足大多數(shù)打開的表的需要。它使用了一些操作系統(tǒng)的資源和內(nèi)存,但是對于現(xiàn)代的硬件水平來說通常不是問題。對于一個使用幾百個表的應(yīng)用, 1024是一個合適的值(注意每個連接需要各自的緩存)。如果有非常多的連接或者非常多的表,則需要增大它的值。我曾經(jīng)看到過使用超過100000的值。
thread_cache ---- 線程創(chuàng)建/銷毀是昂貴的,它在每次連接和斷開連接時發(fā)生。我通常把這個值至少設(shè)成16。如果應(yīng)用有時會有大量的并發(fā)連接,并且可以看到 threads_created變量迅速增長,我就把它的值調(diào)高。目標(biāo)是在通常的操作中不要有線程的創(chuàng)建。
query_cache ---- 如果你的應(yīng)用是以讀為主的,并且你沒有應(yīng)用級的緩存,那么它會有很大幫助。不要把它設(shè)得過大,因為它的維護(hù)可能會導(dǎo)致性能下降。通常會設(shè)置在32M到 512M之間。設(shè)置好后,經(jīng)過一段時間要進(jìn)行檢查,看看是否合適。For certain workloads cache hit ratio is lower than would justify having it enabled.(這句不會翻譯)
注意:就像你看到的,上面所說的都是全局變量。這些變量依賴硬件和存儲引擎的使用,而會話級的變量(per session variables)則與特定的訪問量(workload)相關(guān)。如果只是一些簡單的查詢,就沒有必要增加sort_buffer_size,即使有 64G的內(nèi)存讓你去浪費(fèi)。而且這樣做還可能降低性能。我通常把調(diào)整會話級的變量放在第二步,在我分析了訪問量(或負(fù)載)之后。
此外在MySQL分發(fā)版中包含了一些my.cnf文件的例子,可以作為非常好的模板去使用。如果你能夠恰當(dāng)?shù)貜闹羞x擇一個,通常會比缺省值要好。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“MySQL安裝后需要調(diào)整哪些內(nèi)容”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!