抓住這兩點,MySQL體系結構和InnoDB存儲引擎可以畢業了

當前關於MySQL的文章大部分都集中在教讀者如何使用 MySQL 。

例如SQL語句的使用、 複製的搭建、數據的切分等 。沒錯,這對快速掌握和使用MySQL數據庫非常有好處 ,但是真 正的數據庫工作者需要了解的不僅僅是應用 ,更多的是內部的具體實現 。

要記住,任何時候WHY都比WHAT重要。

抓住這兩點,MySQL體系結構和InnoDB存儲引擎可以畢業了

WHY>WHAT

這篇文章不是面向應用的數據庫,也不是一本參考手冊 ,更不會教你如何在MySQL 中使用SQL語句。

這裡面向那些使用MySQL InnoDB存儲引擎作為數據庫後端開發應用程序的 開發者和有一定經驗的 MySQL DBA 。

篇中的大部分例子都是用SQL語句來展示關鍵特性的 , 如果想通過本書來了解如何啟 動MySQL ,如何配置Replication 環境,可能並不能如願。

如果你想參加MySQL數據庫技術方面的培訓 ,我希望你不用花錢就可以在這裡得到充電,相信你一定不會失望的。

MySQL體系結構

從概念上來說 :

  1. 數據庫是文件的集合 ,是依照某種數據模型組織起 來並存放於二級存儲器中的數據集合。
  2. 數據庫實例是應用程序 ,是位於用戶與操作系統之 間的一層數據管理軟件 。
  3. 用戶對數據庫數據的任何操作 ,包括數據庫定義 、數據查詢、數據維護、數據庫運行控制等 ,都是在數據庫實例下進行的 ,應用程序只有通過數據庫實例 才能和數據庫打交道 。

如果你覺得煩瑣,我直白來說:

數據庫是由 一個個文件組成 (一般來說都是二進制的文件) 的,如果要對這些文件執行諸如 SELECT 、 INSERT 、UPDATE和DETELE 之類的操作 ,不能通過簡單的操作文件來更改數據庫的內容 , 需要通過數據庫實例來完成對數據庫的操作 。

抓住這兩點,MySQL體系結構和InnoDB存儲引擎可以畢業了

MySQL數據庫體系結構

他由以下幾部分組成:

  1. 連接池組件
  2. 管理服務和工具組件
  3. SQL接口組件
  4. 查詢分析器組件
  5. 優化器組件
  6. 緩衝(cache)組件
  7. 插件式存儲引擎
  8. 物理文件

注意:

存儲引擎是基於表,而不是數據庫。MySQL區別於其它數據庫的最重要的特點就是其插件式的表存儲引擎。

MySQL InnoDB存儲引擎

InnoDB存儲引擎支持事務 ,主要面向在線事務處理 ( OLTP ) 方面的應用 。

其特點是 行鎖設計、支持外鍵 ,並支持類似於Oracle的非鎖定讀 ,即默認情況下讀取操作不會產生鎖。

MySQL 在Windows版本下的InnoDB 是默認的存儲引擎 ,同時lnnoDB默認地被包含在 所有的MySQL二進制發佈版本中 。

抓住這兩點,MySQL體系結構和InnoDB存儲引擎可以畢業了

InnoDB文件組織

你也可以通過SHOW ENGINES語句查看當前使用 的MySQL數據庫所支持的存儲引擎 ,也 可以通過查找information_schema 架構下的ENGINES表來查看

抓住這兩點,MySQL體系結構和InnoDB存儲引擎可以畢業了

存儲引擎

通過MySQL提供的示例數據庫來簡單顯示各種存儲引 擎之間的區別。

分別運行以下語句,然後統計每次使用各種存儲引擎後表的大小。

mysql> create table mytest engine=myisam as select * f rom salaries1 Query OK , 284404 7 rows af f ected ( 4 .37 sec )

Records: 2844047 Duplicates: O Warnings: O

mysql> alter table mytest engine=innodb1 Query OK , 284 4 04 7 rows af f ected ( 15 .86 sec )

Records: 2844 04 7 Duplicates: 0 Warnings: 0

mysql> alter table mytest engine=ARCHIVE1 Query OK , 2 844 04 7 rows af f ected ( 16 .03 sec )

Records: 284404 7 Duplicates: O Warnings: 0

通過每次的統計我們發現 ,當最初的表使用MyISAM存儲引擎時,表的大小為40.7MB , 使用InnoDB存儲引擎時表增大到了 113.6MB,而使用Archive存儲引擎時表的大小卻只有 20.2MB。


分享到:


相關文章: