国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

淺談一下MyISAM和InnoDB存儲引擎的區(qū)別

瀏覽:277日期:2023-05-05 10:11:59
目錄
  • 前言
  • 存儲引擎
  • 區(qū)別
    • 事務
    • 外鍵
    • 表單的存儲
    • 數(shù)據(jù)查詢效率
    • 數(shù)據(jù)更新效率
  • 如何選擇

    前言

    MyISAM和InnoDB是使用MySQL最常用的兩種存儲引擎,在5.5版本之前默認采用MyISAM存儲引擎,從5.5開始采用InnoDB存儲引擎。

    存儲引擎

    存儲引擎是:數(shù)據(jù)庫管理系統(tǒng)如何存儲數(shù)據(jù)、如何為存儲的數(shù)據(jù)建立索引和如何更新、查詢數(shù)據(jù)等技術的實現(xiàn)方法。

    MySQL的核心就是插件式存儲引擎,支持多種存儲引擎

    show engines; //查看存儲引擎

    關于數(shù)據(jù)庫的大致架構和基礎操作,這里不過多介紹;

    區(qū)別

    說區(qū)別之前說一下他倆的索引底層都是BTREE+ , B+樹的數(shù)據(jù)結構維護索引和數(shù)據(jù)(m是非聚簇索引,i是聚簇索引,這點注意下)

    事務

    • InnoDB支持事務,具有安全性和完整性,系統(tǒng)容災性強,且通過使用多版本并發(fā)控制MVCC來獲得高并發(fā)性;
    • MyISAM不支持事務; 系統(tǒng)容災性弱;

    外鍵

    • InnoDB支持外鍵
    • MyISAM不支持外鍵

    因此把一個有外鍵的InnoDB表單轉換成MyISAM表單會失敗;

    表單的存儲

    通過使用不同存儲引擎建立表單查看生成的對應存儲文件,發(fā)現(xiàn)除了雙方共有的 .frm存儲表屬性外:

    • InnoDB存儲引擎表單獨存放到一個獨立的IBD文件中;(索引和數(shù)據(jù)放在了一起)–>聚簇索引–>通過主鍵索引效率高; 普通鍵進行索引可能需要回表;
    • MyISAM存儲引擎表單MYDMYI兩部分組成,其中MYD(MYData)用來存放數(shù)據(jù)文件,而MYI(MYIndex)則用來存放索引文件–>非聚簇索引–>數(shù)據(jù)存放的是指針,不需要回表,主鍵索引和普通鍵索引分開了;

    數(shù)據(jù)查詢效率

    • InnoDB不支持全文索引,而 MyISAM 支持全文索引,查詢效率上 MyISAM更高;
    • InnoDB不保存表的具體行數(shù),執(zhí)行 select count(*) from table 時需要全表掃描。而 MyISAM 用一個變量保存了整個表的行數(shù),執(zhí)行上述語句時只需要讀出該變量即可,速度很快;

    數(shù)據(jù)更新效率

    InnoDB的內部優(yōu)化,包括**磁盤預讀(**從磁盤讀取數(shù)據(jù)時采用可預測性讀取),自適應哈希(自動在內存中創(chuàng)建hash索引以加速讀操作)等, 且能夠加速插入操作的插入緩沖區(qū)。所以比MyISAM在數(shù)據(jù)更新能力上更優(yōu);

    如何選擇

    1. 看設計的業(yè)務是否需要支持事務,需要–InnoDB;不需要–MyISAM;
    2. 如果select讀操作頻繁,用MyISAM; 如果數(shù)據(jù)更新操作使用頻繁操作用InnoDB
    3. 考慮系統(tǒng)容災能力,MyISAM更不容易恢復,InnoDB容易恢復;

    既然MySQL5.5版本之后默認了InnoDB,不知道用什么那就InnoDB,跟著主流走不會錯;

    到此這篇關于淺談一下MyISAM和InnoDB存儲引擎的區(qū)別的文章就介紹到這了,更多相關MyISAM和InnoDB存儲引擎內容請搜索以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持!

    標簽: MySQL
    相關文章:
    主站蜘蛛池模板: 万宁市| 合阳县| 游戏| 棋牌| 涞水县| 望都县| 永泰县| 宜川县| 广西| 定襄县| 乐平市| 金秀| 湘乡市| 探索| 武强县| 龙胜| 贵港市| 丰顺县| 杨浦区| 乐至县| 凤阳县| 镇坪县| 麻城市| 祁门县| 铜川市| 图片| 高平市| 新邵县| 宜宾市| 浦江县| 常州市| 时尚| 康平县| 金乡县| 丰宁| 花莲市| 无为县| 墨玉县| 钦州市| 都江堰市| 迭部县|