標籤:儲存引擎 mysql mariadb innodb myisam
儲存引擎是表層級的概念,每建立一張表都應該指明它的儲存引擎,對同一個資料庫而言,不建議交叉使用同一個儲存引擎。
InnoDB:增強版是xtraDB,mariadb預設使用xtraDB 處理大量的短期事務; 資料存放區於“資料表空間(table space)”中; (1) 所有InnoDB表的資料和索引放置於同一個資料表空間中; 資料表空間檔案:datadir定義的目錄下 資料檔案:ibddata1, ibddata2, ... (2) 每個表單獨使用一個資料表空間儲存表的資料和索引; innodb_file_per_table=ONMariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE ‘innodb_file_per%‘;+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| innodb_file_per_table | OFF |+-----------------------+-------+1 row in set (0.00 sec)建立t2表:MariaDB [mydb]> CREATE TABLE t2 (id int, name char(30));Query OK, 0 rows affected (0.01 sec)在系統的資料目錄下發現了t2表的相關資料 資料檔案(儲存資料和索引):tbl_name.ibd, 表格式定義:tbl_name.frm[[email protected] mydb]# lsdb.opt t1.frm t2.frm[[email protected] mydb]# pwd/var/lib/mysql/mydb基於MVCC來支援高並發,支援所有的四個隔離等級,預設層級為REPEATABLE READ; 間隙鎖防止幻讀; 使用叢集索引 支援“自適應hash索引” 鎖粒度:行級鎖資料存放區:資料表空間並發:MVCC, 間隙鎖索引:叢集索引、輔助索引效能:預計操作、自適應hash、插入緩衝區備份:支援熱備(xtrabacup)
MyISAM: 支援全文索引(FULLTEXT index),innodb不支援、壓縮、空間函數(GIS); 但不支援事務,且為表級鎖,不支援行級鎖; 崩潰後無法安全恢複適用情境:唯讀(或者寫較少)、表較小(可以接受長時間進行修複操作) Aria:crash-safe檔案: tbl_name.frm: 表格式定義 tbl_name.MYD: 資料檔案 tbl_name.MYI: 索引檔案特性: 加鎖和並發:表級鎖 修複:手工或自動修複、但可能遺失資料 索引:非叢集索引 延遲更新索引鍵: 壓縮表行格式:dynamic, fixed, compressed, compact, redundent
本文出自 “明天過後” 部落格,請務必保留此出處http://leeyan.blog.51cto.com/8379003/1709447
mysql儲存引擎,並發控制,事務