您好,登錄后才能下訂單哦!
這篇文章主要介紹MySQL原理與優化的案例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
MySQL是目前互聯網公司應用最廣泛的數據庫軟件(DBMS),沒有之一。小至初創公司,大至BAT,GOOGLE,FACEBOOK都在自己的業務中大量的使用MySQL作為數據存儲。阿里云也提供了MySQL的云版本——云數據庫RDS MySQL版。這一系列的文章希望能幫助大家更好的了解MySQL,更好的發揮數據庫的性能,讓我們的數據存儲更有效率。
MySQL的歷史
MySQL是一個開源的自由軟件,我們可以在網上直接獲取到它的源碼。至今為止MySQL已經有超過20年的歷史,大體的里程碑事件如下:
● 1996年,MySQL 1.0發布,它只面向一小撥人。到了1996年10月,MySQL 3.11.1發布(MySQL沒有2.x版本),最開始只提供Solaris下的二進制版本。一個月后,Linux版本出現了。在接下來的兩年里,MySQL被依次移植到各個平臺。
● 1999~2000年,MySQL AB公司在瑞典成立,開發出了Berkeley DB引擎, 由于BDB支持事務處理,因此MySQL從此開始支持事務處理了。
● 2001年 V3.23:MyISAM引擎,以及Innodb引擎雛形
● 2003年 V4.0:新的語法特性,Innodb成為標準組件,加入query_cache
● 2006年 V5.0:視圖,觸發器,存儲過程等功能加入
● 2008年 V5.1:分區,行復制
● 2010年 V5.5:Innodb成為默認引擎,半同步復制
● V5.6 Innodb改進,復制功能等提升
● V5.7 加入mariaDB等新的存儲引擎
MySQL的體系架構
MySQL并沒有和同時期數據庫的一樣,而是采用了自己獨特的架構。這個架構我們可以用唐代詩人杜牧的一首著名的詩句來理解:
長安回望繡成堆,山頂千門次第開。 一騎紅塵妃子笑,無人知是荔枝來。
這里面有三個角色:
● 妃子:負責提出需求,要吃荔枝
● 大臣:負責安排采摘荔枝,走哪條路徑,發放公文等
● 快遞員:負責運送荔枝
這就對應MySQL體系結構中的三個角色:客戶端,處理引擎,執行引擎
用體系架構圖來表示就是這樣的
● 客戶端
相當于妃子的角色:用戶操作客戶端來發出查詢、修改、添加、刪除數據的需求
● 處理引擎
處理引擎相當于大臣的角色,負責解析SQL語句,生成執行計劃。除此之外,還負責有以下責任,我們在優化時可以注意:
? 負責管理連接與線程:使用了多線程模型,設置thread_cache_size可以利用已有線程
? 負責管理query cache:利用現成結果,直接緩存結果集,測試語句性能時需要用 sql_no_cache hint 屏蔽
● 存儲引擎
存儲引擎相當于快遞員的角色,負責數據實際存儲以及數據的讀取,修改等操作。不同的存儲引擎,在實際的執行中會表現出不同的特性。在后面的文章會詳細展開介紹。
以上是“MySQL原理與優化的案例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。