1. 資料庫和資料庫實體
資料庫是檔案的集合,是依照某種資料模型組織起來并存放于二級存盤器(計算機主存盤器或記憶體之外的所有可訪問存盤器,如移動/固定硬碟,光碟)中的資料集合,在MySQL資料庫中,資料庫檔案可以是frm, MYD, MYI, ibd結尾的檔案,
資料庫實體是程式,是位于用戶和作業系統之間的一層資料管理軟體,用戶對資料庫資料的任何操作,包括資料庫定義、資料查詢、資料維護、資料庫運行控制等都是在資料庫實體下進行的,應用程式只有通過資料庫實體才能和資料庫打交道
MySQL被設計為一個單行程多執行緒架構的資料庫,所以,MySQL資料庫實體在系統上的表現就是一個行程
2. MySQL體系結構

由上圖可知,MySQL由以下幾部分組成:
- 連接池組件
- 管理服務和工具組件 (第四章會涉及partitioning,第八章會涉及 Backup & Recovery, Replication)
- SQL介面組件
- 查詢分析器組件
- 優化器組件
- 緩沖(Cache)組件
- 插件式存盤引擎(本書重點,各章都會涉及InnoDB存盤引擎相關特性)
- 物理檔案(第三章)
3. MySQL存盤引擎
MySQL支持多種不同的存盤引擎,甚至留有預定義的存盤引擎介面以撰寫自己的存盤引擎,每種存盤引擎都有各自的特點,能夠根據具體的應用建立不同的存盤引擎表,(存盤引擎是基于表的)
典型存盤引擎的簡單介紹:
1) InnoDB存盤引擎(在后面會詳細介紹)
InnoDB存盤引擎支持事務,其主要面向在線事務處理(on-line transaction processing)的應用,InnoDB存盤引擎將資料放在一個邏輯表空間中,這個表空間就像黑盒一樣由InnoDB存盤引擎自身進行管理,對于表中存盤的資料,InnoDB存盤引擎采用了聚集的方式,因此每張表的存盤都是按照主鍵的順序進行存放,如果沒有顯式地定義主鍵,InnoDB存盤引擎會為每一行生成一個6位元組的ROWID,并以此作為主鍵,InnoDB存盤引擎的特點是行鎖設計,支持外鍵,支持非鎖定讀,使用多版本并發控制(MVCC)來獲得高并發性,使用next-key locking的策略來避免幻讀,實作了SQL標準的4種隔離級別,另外,InnoDB存盤引擎還提供了插入緩沖(insert buffer)、二次寫(double write)、自適應哈希索引(adaptive hash index)、預讀(read ahead)等功能,
2) MyISAM存盤引擎
MyISAM存盤引擎不支持事務和表鎖設計,但是支持全文索引,主要面向一些OLAP(online analysis processing)的應用,
為什么MyISAM存盤引擎不支持事務呢?
在資料倉庫中,如果沒有ETL(extract,transform,load)這些操作,只是簡單的報表查詢,并不需要事務支持,
另外,MyISAM存盤引擎還有一個與眾不同的地方在于它的緩沖池只快取(cache)索引檔案,而不緩沖資料檔案,資料檔案的緩沖交由作業系統本身來完成,
MyISAM存盤引擎由MYD和MYI組成,MYD用于存放資料檔案,MYI用于存放索引檔案,
下圖是不同存盤引擎相關特性的比較,(注意,InnoDB存盤引擎自1.2版本開始支持全文索引,full text search index)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296133.html
標籤:其他
上一篇:索引設計與優化-讀書筆記-1
下一篇:第二章 InnoDB 存盤引擎
