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的體系結構概述,希望對大家有幫助。以上是淺談MySQL原理與最佳化(一)之歷史與體系結構的詳細內容。更多資訊請關注PHP中文網其他相關文章!