首頁  >  文章  >  資料庫  >  淺談MySQL原理與最佳化(一)之歷史與體系結構

淺談MySQL原理與最佳化(一)之歷史與體系結構

藏色散人
藏色散人轉載
2019-05-09 09:47:582219瀏覽

MySQL是目前網路公司應用最廣泛的資料庫軟體(DBMS),沒有之一。小至新創公司,大至BAT,GOOGLE,FACEBOOK都在自己的業務中大量的使用MySQL作為資料儲存。阿里雲也提供了MySQL的雲端版本-雲端資料庫RDS MySQL版。這一系列的文章希望能幫助大家更好的了解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原理與最佳化(一)之歷史與體系結構

##●妃子:負責提出需求,要吃荔枝

● 

大臣:負責安排採摘荔枝,走哪條路徑,發放公文等

#●

 快遞員:負責運送荔枝

這就對應MySQL體系結構中的三個角色:客戶端,處理引擎,執行引擎

淺談MySQL原理與最佳化(一)之歷史與體系結構

用體系架構圖來表示就是這樣的

淺談MySQL原理與最佳化(一)之歷史與體系結構

● 客戶端

相當於妃子的角色:使用者操作客戶端來發出查詢、修改、新增、刪除資料的需求

● 處理引擎

處理引擎相當於大臣的角色,負責解析SQL語句,產生執行計劃。除此之外,還負責有以下責任,我們在最佳化時可以注意:

• 負責管理連線與執行緒:使用了多執行緒模型,設定thread_cache_size可以利用已有執行緒

• 負責管理query cache:利用現成結果,直接快取結果集,測試語句效能時需要用sql_no_cache hint 屏蔽

● 儲存引擎

#儲存引擎相當於快遞員的角色,負責資料實際儲存以及資料的讀取,修改等操作。不同的儲存引擎,在實際的執行上會表現出不同的特性。在後面的文章會詳細展開介紹。

綜上就是MySQL的體系結構概述,希望對大家有幫助。

以上是淺談MySQL原理與最佳化(一)之歷史與體系結構的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:aliyun.com。如有侵權,請聯絡admin@php.cn刪除