標籤:ref nod 合并 遠程 html 實現 text lte type
一、InnoDB:
處理大量的短期事務;
資料存放區於"資料表空間(table space)"中;
1、所有InnoDB表的資料和索引放置於同一個資料表空間中;
資料表空間檔案:datadir定義的目錄下
資料檔案:ibddata1,ibddata2,...
2、每個表單獨使用一個資料表空間,儲存表的資料和索引;
innodb_file_per_table=ON
資料檔案(儲存資料和索引):tbl_name.ibd
表格式定義:tbl_name.frm
基於MVCC(Multi-Version Concurrency Control )來支援高並發,支援所有的四個交易隔離等級,預設層級為REPEATABLE READ;通過間隙鎖防止幻讀的出現;
使用叢集索引
支援"自適應hash索引"
行級鎖
資料存放區:資料表空間
並發:MVCC,間隙鎖
索引:叢集索引、輔助索引
效能:預讀操作、自適應hash、插入緩衝區
備份:支援熱備(xtrabackup)
MariaDB中雖然也叫InnoDB,但使用的是XtraDB(percona公司提供)
二、MyISAM:
支援全文索引(FULLTEXT index)、壓縮、空間函數(GIS);但不支援事務,且為表級鎖;
崩潰後無法安全恢複
使用情境:唯讀(或者寫較少)、表較小(可以接受長時間進行修複操作)
Aria:crash-safe
檔案:
tbl_name.frm:表格式定義
tbl_name.MYD:資料檔案
tbl_name.MYI:索引檔案
特性:
加鎖和並發:表級鎖
修複:手工或自動修複、但可能遺失資料
索引:非叢集索引
延遲更新索引鍵
壓縮表
行格式:dynamic,fixed,compressed,compact,redundent
三、其他的儲存引擎:
CSV:將普通CSV(欄位通過逗號分隔)作為MySQL表使用
MRG_MYISAM:將多個MyISAM表合并成為一個虛擬表
BLACKHOLE:類似於/dev/null,不真正儲存任何資料
MEMORY:所有資料都儲存於記憶體,記憶體表,唯一支援hash索引的表;表級鎖
暫存資料表
PERFORMANCE_SCHEMA:偽儲存引擎
ARCHIVE:僅支援SELECT和INSERT操作,支援行級鎖和專用緩衝區,不支援事務
FEDERATED:用於訪問其他遠程MySQL伺服器一個代理,它通過建立一個到遠程MySQL伺服器的用戶端串連,並將查詢傳輸到遠程伺服器執行
而後完成資料存放區,在MariaDB上的實現叫做FederatedX
MariaDB支援的其他儲存引擎:
OQGraph、SphinxSE、TokuDB、Cassandra、CONNECT、SEQUENCE
四、編譯安裝MySQL:http://www.cnblogs.com/fansik/p/5270334.html
五、並發控制:鎖
鎖策略:
在鎖粒度及資料安全性尋求的平衡機制;
每種儲存引擎都可以自行實現其鎖策略和鎖粒度;
MySQL在伺服器級也實現了鎖,表級鎖;使用者可顯示請求;
(1) LOCK TABLES
tbl_name [[AS] alias] lock_type
[, tbl_name [[AS] alias] lock_type] ...
lock_type:
READ [LOCAL]
| [LOW_PRIORITY] WRITE
UNLOCK TABLES
(2) FLUSH TABLES tb_name[,...] [WITH READ LOCK]
(3) SELECT clase [FOR UPDATE] [WITH READ LOCK]
MySQL儲存引擎