ISAM、MyISAM、InnoDB、ACID详解
文章目錄
- 1. ISAM
- 2. MyISAM
- 3. InnoDB
- 4. InnoDB與MyISAM差別
- 5. ACID
- Atomic(原子性):
- Consistency(一致性):
- Isolation(隔離性):
- Durability(持久性):
1. ISAM
索引順序存取方法(ISAM, Indexed Sequential Access Method)最初是IBM公司發展起來的一個文件系統,可以連續地(按照他們進入的順序)或者任意地(根據索引)記錄任何訪問。
每個索引定義了一次不同排列的記錄。
2. MyISAM
MyISAM是默認存儲引擎(Mysql5.1前)。它基于更老的ISAM代碼,但有很多有用的擴展。(注意MySQL 5.1不支持ISAM)。
每個MyISAM在磁盤上存儲成三個文件,每一個文件的名字均以表的名字開始,擴展名指出文件類型。
.frm 文件 存儲 表定義;
.MYD (MYData)文件 存儲 表的數據;
.MYI (MYIndex)文件 存儲 表的索引。
3. InnoDB
InnoDB,是MySQL的數據庫引擎之一,現為MySQL的默認存儲引擎,為MySQL AB發布binary的標準之一。
InnoDB 由Innobase Oy公司所開發 ,2006年五月時由甲骨文公司并購。與傳統的ISAM與MyISAM相比,InnoDB的最大特色就是 支持了ACID兼容的事務(Transaction)功能 ,類似于PostgreSQL。
InnoDB 物理文件結構為:
-
.frm 文件:與表相關的元數據信息都存放在frm文件,包括表結構的定義信息等;
-
.ibd 文件或 .ibdata 文件: 這兩種文件都是存放 InnoDB 數據的文件,之所以有兩種文件形式存放 InnoDB 的數據,是因為 InnoDB 的數據存儲方式能夠通過配置來決定是使用共享表空間存放存儲數據,還是用獨享表空間存放存儲數據。
獨享表空間存儲方式使用.ibd文件,并且每個表一個.ibd文件;
共享表空間存儲方式使用.ibdata文件,所有表共同使用一個.ibdata文件(或多個,可自己配置)。
4. InnoDB與MyISAM差別
聚簇索引的文件存放在主鍵索引的葉子節點上,因此 InnoDB 必須要有主鍵,通過主鍵索引效率很高。
但是輔助索引需要兩次查詢,先查詢到主鍵,然后再通過主鍵查詢到數據。因此,主鍵不應該過大,因為主鍵太大,其他索引也都會很大。
而 MyISAM 是非聚集索引,數據文件是分離的,索引保存的是數據文件的指針。主鍵索引和輔助索引是獨立的。
而 MyISAM 用一個變量保存了整個表的行數,執行上述語句時只需要讀出該變量即可,速度很快;
MyISAM一個更新語句會鎖住整張表,導致其他查詢和更新都會被阻塞,因此并發訪問受限。這也是 MySQL 將默認存儲引擎從 MyISAM 變成 InnoDB 的重要原因之一;
| 主外鍵 | 不支持 | 支持 |
| 事務 | 不支持 | 支持 |
| 行表鎖 | 表鎖,即使操作一條記錄也會鎖住整個表,不適合高并發的操作 | 行鎖,操作時只鎖某一行,不對其它行有影響,適合高并發的操作 |
| 緩存 | 只緩存索引,不緩存真實數據 | 不僅緩存索引還要緩存真實數據,對內存要求較高,而且內存大小對性能有決定性的影響 |
| 表空間 | 小 | 大 |
| 關注點 | 性能 | 事務 |
| 默認安裝 | 是 | 是 |
5. ACID
ACID是:
- Atomic(原子性)
- Consistency(一致性)
- Isolation(隔離性)
- Durability(持久性)
Atomic(原子性):
指 整個數據庫事務是不可分割的工作單位。只有使數據庫中所有的操作執行成功,才算整個事務成功;事務中任何一個SQL語句執行失敗,那么已經執行成功的SQL語句也必須撤銷,數據庫狀態應該退回到執行事務前的狀態。
Consistency(一致性):
指 數據庫事務不能破壞關系數據的完整性以及業務邏輯上的一致性。例如對銀行轉帳事務,不管事務成功還是失敗,應該保證事務結束后ACCOUNTS表中Tom和Jack的存款總額為2000元。
Isolation(隔離性):
指的是在并發環境中,當不同的事務同時操縱相同的數據時,每個事務都有各自的完整數據空間。
Durability(持久性):
指的是只要事務成功結束,它對數據庫所做的更新就必須永久保存下來。即使發生系統崩潰,重新啟動數據庫系統后,數據庫還能恢復到事務成功結束時的狀態。
總結
以上是生活随笔為你收集整理的ISAM、MyISAM、InnoDB、ACID详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找一个传奇服务端,斗破苍穹斗气化翼版本
- 下一篇: 网络工程师考试-计算机网络笔记