MySQl學習-——Mysql體繫結構與Mysql儲存引擎

來源:互聯網
上載者:User

標籤:

Mysql體繫結構與Mysql儲存引擎

Mysql體繫結構

mysql體繫結構圖:

 

1)        Connectors指的是不同語言中與SQL的互動

    max_connections 就是整個MySQL執行個體的最大串連數限制

    max_user_connections 是單個使用者的最大串連數,這裡未指明是哪個使用者,是任意一個使用者。

2)        Management Serveices & Utilities:系統管理和控制工具

 備份和恢複的安全性,複製,叢集,管理,配置,遷移和中繼資料

3)        Connection Pool: 串連池

進行身分識別驗證、線程重用,串連限制,檢查記憶體,資料緩衝;系統管理使用者的串連,線程處理等需要緩衝的需求。 

4)        SQL Interface: SQL介面

 進行DML、DDL,預存程序、視圖、觸發器等操作和管理;使用者通過SQL命令來查詢所需結果。 

5)        Parser: 解析器

查詢翻譯對象的特權;SQL命令傳遞到解析器的時候會被解析器驗證和解析。

6)        Optimizer: 查詢最佳化工具

SQL語句在查詢之前會使用查詢最佳化工具對查詢進行最佳化。他使用的是“選取-投影-聯結”策略進行查詢。

使用者也可以請求伺服器給出最佳化過程的各種說明,以獲知伺服器的最佳化策略,為使用者提供了參數基準,以便使用者可以重寫查詢,架構和修改相關伺服器配置,便於mysql更高效的運行。

7)        CacheBuffer 查詢快取

在解析查詢之前,要查詢快取,這個緩衝只能儲存查詢資訊以及結果資料。如果請求一個查詢在緩衝 中存在,就不需要解析,最佳化和執行查詢了。直接返回緩衝中所存放的這個查詢的結果。這個緩衝機制是由一系列小緩衝組成的,比如表緩衝,記錄緩衝,key緩衝,許可權緩衝等。

8)        Engine儲存引擎

Mysql支援多種儲存引擎,最常用的儲存引擎為MyIsam和InnoDB。

最佳化器並是不關心表使用了哪種儲存引擎,但是儲存引擎對伺服器最佳化查詢的方式是有影響的。最佳化器需要知道儲存引擎的一些特性:具體操作的效能和開銷方面的資訊,以及表內資料的統計資訊。例如,儲存引擎支援哪些索引類型,這對於查詢是非常有用的。

總結:mysql體繫結構分為三層,分別為:用戶端串連層,sql層,儲存引擎層。用戶端串連層主要指不同的語言與資料庫的互動,如jdbc,odbc,php等。sql是mysql體繫結構的核心,主要又包括系統管理和控制工具(db的備份,恢複,複製,遷移等),串連池(主要負責使用者的串連請求驗證,許可權驗證和安全性等),SQL介面查詢快取(只儲存查詢資訊和資料結果),解析器最佳化層(當有一條新的查詢語句時,DBMS會先查看查詢快取,如果請求的查詢在緩衝中存在,則不用進行解析,最佳化和執行的操作,直接從查詢快取中讀取即可,但如果請求的查詢在查詢快取中不存在,則解析器會對查詢語句進行分析,然後對其進行各種最佳化,這些最佳化包括了,查詢語句的重寫,讀表的順序,索引的選擇等等)。儲存引擎層(Mysql最常用的儲存引擎有MyIsam,InnoDB等)。

Mysql儲存引擎

MyISAM:不是事務安全的,而且不支援外鍵,適合在以下幾種情況下使用:

  1. 選擇密集型的表。MyISAM儲存引擎在篩選大量資料時非常迅速,這是它最突出的優點。
  2. 插入密集型的表。MyISAM的並發插入特性允許同時選擇和插入資料。例如:MyISAM儲存引擎很適合管理郵件或Web伺服器日誌資料。

InnoDB:支援事務安全的引擎,支援外鍵、行鎖、事務是他的最大特點,適合在以下幾種情況下使用:

  1. 更新密集的表。InnoDB儲存引擎特別適合處理多重並發的更新要求。
  2. 事務。InnoDB儲存引擎是支援事務的標準MySQL儲存引擎。
  3. 自動災難恢複。與其它儲存引擎不同,InnoDB表能夠自動從災難中恢複。
  4. 外鍵約束。MySQL支援外鍵的儲存引擎只有InnoDB。
  5. 支援自動增加列AUTO_INCREMENT屬性。

一般來說,如果需要事務支援,並且有較高的並發讀取頻率,InnoDB是不錯的選擇。

Memory:使用MySQL Memory儲存引擎的出發點是速度。為得到最快的回應時間,採用的邏輯儲存介質是系統記憶體。雖然在記憶體中儲存表資料確實會提供很高的效能,但當 mysqld守護進程崩潰時,所有的Memory資料都會丟失。獲得速度的同時也帶來了一些缺陷。它要求儲存在Memory資料表裡的資料使用的是長度不變的格式,這意味著不能使用BLOB和TEXT這樣的長度可變的資料類型,VARCHAR是一種長度可變的類型,但因為它在MySQL內部當做長度固定不 變的CHAR類型,所以可以使用。一般在以下幾種情況下使用Memory儲存引擎:

  1. 目標資料較小,而且被非常頻繁地訪問。在記憶體中存放資料,所以會造成記憶體的使用,可以通過參數max_heap_table_size控制Memory表的大小,設定此參數,就可以限制Memory表的最大大小。
  2. 如果資料是臨時的,而且要求必須立即可用,那麼就可以存放在記憶體表中。
  3. 儲存在Memory表中的資料如果突然丟失,不會對應用服務產生實質的負面影響。

MYISAM和InnoDB儲存引擎只支援BTREE索引;MEMORY和HEAP儲存引擎可以支援HASH和BTREE索引。

B樹索引的優於散列索引的是,可以使用部分查詢和通配查詢,也可以使用<、>和>=等操作符方便資料採礦。散列索引進行“相等比較”非 常快,但是對“範圍比較”的速度就慢多了,因此散列索引值適合使用在=和<>的操作符中,不適合在<或>操作符中,也同樣不適合 用在order by子句中。

 

【參考】http://www.cnblogs.com/yjf512/archive/2012/02/06/2339496.html

    http://www.jb51.net/article/55849.htm

MySQl學習-——Mysql體繫結構與Mysql儲存引擎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.