<track id="jjz3x"></track>

            <menuitem id="jjz3x"><dfn id="jjz3x"><thead id="jjz3x"></thead></dfn></menuitem><bdo id="jjz3x"><optgroup id="jjz3x"></optgroup></bdo><track id="jjz3x"></track>
            <nobr id="jjz3x"><optgroup id="jjz3x"></optgroup></nobr>
          1. 咨詢電話:
            15628812133
            20
            2023/03

            說一說MyISAM和InnoDB的區別_Mysql數據庫

            發布時間:2023-03-20 09:09:26
            發布者:已經寫了
            瀏覽量:
            0

                MySql數據庫是開放源代碼的關系型數據庫。目前,它可以提供的功能有:支持sql語言、子查詢、存儲過程、觸發器、視圖、索引、事務、鎖、外鍵約束和影像復制等

            那么什么是存儲引擎呢?

                存儲引擎說白了就是如何存儲數據、如何為存儲的數據建立索引和如何更新、查詢數據等技術的實現方法。因為在關系數據庫中數據的存儲是以表的形式存儲的,所以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)。

                在Oracle 和SQL Server等數據庫中只有一種存儲引擎,所有數據存儲管理機制都是一樣的。 而MySql數據庫提供了多種存儲引擎。用戶可以根據不同的需求為數據表選擇不同的存儲引擎,用戶也可以根據自己的需要編寫自己的存儲引擎。

            MySql中有哪些存儲引擎?

                1MyISAM:這種引擎是mysql最早提供的。這種引擎又可以分為靜態MyISAM、動態MyISAM 和壓縮MyISAM三種:

                    靜態MyISAM:如果數據表中的各數據列的長度都是預先固定好的,服務器將自動選擇這種表類型。因為數據表中每一條記錄所占用的空間都是一樣的,所以這種表存取和更新的效率非常高。當數據受損時,恢復工作也比較容易做。

                    動態MyISAM:如果數據表中出現varchar、xxxtext或xxxBLOB字段時,服務器將自動選擇這種表類型。相對于靜態MyISAM,這種表存儲空間比較小,但由于每條記錄的長度不一,所以多次修改數據后,數據表中的數據就可能離散的存儲在內存中,進而導致執行效率下降。同時,內存中也可能會出現很多碎片。因此,這種類型的表要經常用optimize table 命令或優化工具來進行碎片整理。

                    壓縮MyISAM:以上說到的兩種類型的表都可以用myisamchk工具壓縮。這種類型的表進一步減小了占用的存儲,但是這種表壓縮之后不能再被修改。另外,因為是壓縮數據,所以這種表在讀取的時候要先時行解壓縮。

                    但是,不管是何種MyISAM表,目前它都不支持事務,行級鎖和外鍵約束的功能。

                2 MyISAM Merge引擎:這種類型是MyISAM類型的一種變種。合并表是將幾個相同的MyISAM表合并為一個虛表。常應用于日志和數據倉庫。

            QQ截圖20230320092833.png

                3 InnoDB: InnoDB表類型可以看作是對MyISAM的進一步更新產品,它提供了事務、行級鎖機制和外鍵約束的功能。

            QQ截圖20230320092847.png

                4 memory(heap): 這種類型的數據表只存在于內存中。它使用散列索引,所以數據的存取速度非???。 因為是存在于內存中,所以這種類型常應用于臨時表中。

                5 archive: 這種類型只支持select 和 insert語句,而且不支持索引。常應用于日志記錄和聚合分析方面。


            QQ截圖20230320092437.png

            如何選擇

            是否要支持事務,如果要請選擇innodb,如果不需要可以考慮MyISAM;

            如果表中絕大多數都只是讀查詢,可以考慮MyISAM,如果既有讀也有寫,請使用InnoDB。

            系統奔潰后,MyISAM恢復起來更困難,能否接受;

            MySQL5.5版本開始Innodb已經成為Mysql的默認引擎(之前是MyISAM),說明其優勢是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不會差。

            InnoDB為什么推薦使用自增ID作為主鍵?

            自增ID可以保證每次插入時B+索引是從右邊擴展的,可以避免B+樹和頻繁合并和分裂(對比使用UUID)。如果使用字符串主鍵和隨機主鍵,會使得數據隨機插入,效率比較差。


            關鍵詞:
            返回列表
            99国产欧美久久久精品蜜臀|精品无码久久久久久久久久|亚洲国产日韩欧美一区综合|国产亚洲欧洲综合5388

            <track id="jjz3x"></track>

                      <menuitem id="jjz3x"><dfn id="jjz3x"><thead id="jjz3x"></thead></dfn></menuitem><bdo id="jjz3x"><optgroup id="jjz3x"></optgroup></bdo><track id="jjz3x"></track>
                      <nobr id="jjz3x"><optgroup id="jjz3x"></optgroup></nobr>