日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ISAM、MyISAM、InnoDB、ACID详解

發布時間:2023/12/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 不支持事務。 這是 MySQL 將默認存儲引擎從 MyISAM 變成 InnoDB 的重要原因之一;

  • InnoDB 支持外鍵,而 MyISAM 不支持。 對一個包含外鍵的 InnoDB 表轉為 MYISAM 會失敗;

  • InnoDB 是聚簇索引,MyISAM 是非聚簇索引。
    聚簇索引的文件存放在主鍵索引的葉子節點上,因此 InnoDB 必須要有主鍵,通過主鍵索引效率很高。
    但是輔助索引需要兩次查詢,先查詢到主鍵,然后再通過主鍵查詢到數據。因此,主鍵不應該過大,因為主鍵太大,其他索引也都會很大。
    而 MyISAM 是非聚集索引,數據文件是分離的,索引保存的是數據文件的指針。主鍵索引和輔助索引是獨立的。

  • InnoDB 不保存表的具體行數,執行select count(*) from table 時需要全表掃描。
    MyISAM 用一個變量保存了整個表的行數,執行上述語句時只需要讀出該變量即可,速度很快;

  • InnoDB 最小的鎖粒度是行鎖,MyISAM 最小的鎖粒度是表鎖。
    MyISAM一個更新語句會鎖住整張表,導致其他查詢和更新都會被阻塞,因此并發訪問受限。這也是 MySQL 將默認存儲引擎從 MyISAM 變成 InnoDB 的重要原因之一;
  • 對比項MyISAMInnoDB
    主外鍵不支持支持
    事務不支持支持
    行表鎖表鎖,即使操作一條記錄也會鎖住整個表,不適合高并發的操作行鎖,操作時只鎖某一行,不對其它行有影響,適合高并發的操作
    緩存只緩存索引,不緩存真實數據不僅緩存索引還要緩存真實數據,對內存要求較高,而且內存大小對性能有決定性的影響
    表空間
    關注點性能事務
    默認安裝

    5. ACID

    ACID是:

    • Atomic(原子性)
    • Consistency(一致性)
    • Isolation(隔離性)
    • Durability(持久性)

    Atomic(原子性):

    整個數據庫事務是不可分割的工作單位。只有使數據庫中所有的操作執行成功,才算整個事務成功;事務中任何一個SQL語句執行失敗,那么已經執行成功的SQL語句也必須撤銷,數據庫狀態應該退回到執行事務前的狀態。

    Consistency(一致性):

    數據庫事務不能破壞關系數據的完整性以及業務邏輯上的一致性。例如對銀行轉帳事務,不管事務成功還是失敗,應該保證事務結束后ACCOUNTS表中Tom和Jack的存款總額為2000元。

    Isolation(隔離性):

    指的是在并發環境中,當不同的事務同時操縱相同的數據時,每個事務都有各自的完整數據空間

    Durability(持久性):

    指的是只要事務成功結束,它對數據庫所做的更新就必須永久保存下來。即使發生系統崩潰,重新啟動數據庫系統后,數據庫還能恢復到事務成功結束時的狀態。

    總結

    以上是生活随笔為你收集整理的ISAM、MyISAM、InnoDB、ACID详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。