《Java磨礪分清濁,實戰定乾坤:MySQL性能優化感悟》要點:
本文介紹了Java磨礪分清濁,實戰定乾坤:MySQL性能優化感悟,希望對您有用。如果有疑問,可以聯系我們。
曾幾何時,我工作以后很長一段時間不知道該學些什么,月薪也穩穩地定格在了那里,我明白如果不做些什么,遲早會被應屆生替換下去,因為道理很簡單,你除了經驗沒有任何地方比他強,公司不會花兩倍的錢來雇一個沒什么區其余人.
直到我看了xxx的《打造扛得住的MySQL數據庫架構》,我好像重新找到了最初開始學習的激情和未來的發展方向.
課程一開始讓我有種山重水復疑無路,柳暗花明又一村的感覺,打開了一個MySQL的新世界,我第一次知道MySQL還有存儲引擎這個東西,而且它還是那么的重要,對于課程其中一部分的感悟分享給大家,篇幅有限不能傾囊道來,大家有條件的可以本身去看一下視頻. MySQL中的數據用各種不同的技術存儲在文件(或者內存)中.這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平并且最終提供廣泛的不同的功能和能力.通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能.而MySQL是支持自定義存儲引擎的,所以除了第三方存儲引擎,如果實力足夠甚至可以本身開發出一套存儲引擎.
我們來看一下MySQL常用存儲引擎的特點:
在MySQL5.58版本以前,默認是使用MyISAM存儲引擎的,也便是說5.58以前的MySQL默認是不支持事務的,而5.58以后呢,默認使用的是Innodb存儲引擎,是支持事務的.Innodb實現事務的方式是通過Redo Log 和 Undo Log來實現的.
Redo Log:主要用來實現事務的持久性,存儲的是已提交的事務.由兩部門組成,一個是內存中的重做日志緩沖區,由innodb_log_buffer_size決定其大小,我們可以在MySQL命令行下使用show variables like 命令來查看,另一個則是重做日志文件是以id_logfile開頭的文件,存儲在MySQL的data目錄下,它的數量是由innodb_log_files_in_group參數來決定的,同樣可以使用show variables like命令來查看.
Undo Log:主要作用是實現MVCC(多版本并發控制),存儲的是未提交的事務.當事務進行回滾的時候,就必要使用到Undo Log中的信息了.
Redo Log進行的是順序寫入,在數據庫運行的時候,不必要對Redo Log進行讀取操作,而Undo Log則是必要進行隨機的讀寫的,從MySQL5.6版本開始,Undo Log可以獨立于系統表空間的存在,如果條件允許,可以把它放置在固態硬盤中,能大大增加服務器的性能.
那么如何選擇一個合適的存儲引擎來優化MySQL的性能呢,首先要考慮一下如果必要事務的支持則最好使用Innodb,如果不必要使用事務,并且大部分都是插入和查詢的操作,可以使用MyISAM,如果只是插入,很少查詢的話Archive也是個不錯的選擇.
但是我們的數據庫在生產環境中是需要進行備份的,前面所介紹的所有存儲引擎中,只有Innodb有免費的在線熱備份方案,要么就是收費的方案.而且瓦解后恢復數據,MyISAM損壞的幾率要高于Innodb,所以即使不需要事務的支持,也要優先考慮Innodb,除非是某些比較特別的情況.
同時對于Innodb的事務有一個重要的參數Innodb_flush_log_at_trx_commit,它有三個選項:
0:每秒進行一次log寫入cache,并flush log到磁盤,事務提交時不作任何操作
1[默認]:在每次事務提交以后,將log寫入cache,并flush log到磁盤
2[建議]:事務提交提交以后,執行log數據寫入到cache,而且每秒執行一次flush log到磁盤
第一種,容易丟失數據;第二種,平安高但性能最差;第三種,性能相對較高并且相對平安.需要注意的是,第一種設置MySQL進程崩潰就會至少丟失一秒數據.第三種則是提交到內存以后,準備寫入磁盤時服務器死機,才可能丟失一秒的數據.
關于MySQL的優化還有大量的操作,比如我們操作系統參數的配置,MySQL默認參數的修改,硬件的選擇,表的結構設計,索引的設計,查詢優化,主從同步等等,這些能夠從根本上辦理MySQL的性能問題,打造真正扛得住的MySQL數據庫,也為大家突破兩萬月薪保駕護航.
最后我想說的是:寶劍鋒從磨礪出,梅花香自苦寒來.希望大家都能賡續的學習進取,突破一個又一個的技術巔峰!
學習Java的同學注意了!!!
學習過程中遇到什么問題或者想獲取學習資源的話,歡迎參加Java學習交流,裙號碼:253772578【長按復制】 我們一起學Java!
《Java磨礪分清濁,實戰定乾坤:MySQL性能優化感悟》是否對您有啟發,歡迎查看更多與《Java磨礪分清濁,實戰定乾坤:MySQL性能優化感悟》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8688.html