1. 程式人生 > >mysql 儲存引擎 innodb和myisam 區別

mysql 儲存引擎 innodb和myisam 區別

轉自:http://blog.sina.com.cn/s/blog_6e322ce70100xwve.html

1, 事務處理

innodb 支援事務功能,myisam 不支援。
Myisam 的執行速度更快,效能更好。

2,select ,update ,insert ,delete 操作

MyISAM:如果執行大量的SELECT,MyISAM是更好的選擇
InnoDB:如果你的資料執行大量的INSERT或UPDATE,出於效能方面的考慮,應該使用InnoDB表

3,鎖機制不同

InnoDB 為行級鎖,myisam 為表級鎖。
注意:當資料庫無法確定,所找的行時,也會變為鎖定整個表。
如: update table set num = 10 where username like "%test%";

4,查詢表的行數不同
MyISAM:select count(*) from table,MyISAM只要簡單的讀出儲存好的行數,注意的是,當count(*)語句包含   where條件時,兩種表的操作是一樣的

InnoDB : InnoDB 中不儲存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行

5,物理結構不同

MyISAM :每個MyISAM在磁碟上儲存成三個檔案。第一個檔案的名字以表的名字開始,副檔名指出檔案型別。
  .frm檔案儲存表定義。
  資料檔案的副檔名為.MYD (MYData)。
  索引檔案的副檔名是.MYI (MYIndex)

InnoDB:基於磁碟的資源是InnoDB表空間資料檔案和它的日誌檔案,InnoDB 表的大小隻受限於作業系統檔案的大小,一般為 2GB
6,anto_increment 機制不同
 更好和更快的auto_increment處理


其他:為什麼MyISAM會比Innodb 的查詢速度快。
INNODB在做SELECT的時候,要維護的東西比MYISAM引擎多很多;
1)資料塊,INNODB要快取,MYISAM只快取索引塊,  這中間還有換進換出的減少; 
2)innodb定址要對映到塊,再到行,MYISAM 記錄的直接是檔案的OFFSET,定位比INNODB要快
3)INNODB還需要維護MVCC一致;雖然你的場景沒有,但他還是需要去檢查和維護
MVCC ( Multi-Version Concurrency Control )多版本併發控制 
InnoDB:通過為每一行記錄新增兩個額外的隱藏的值來實現MVCC,這兩個值一個記錄這行資料何時被建立,另外一個記錄這行資料何時過期(或者被刪除)。但是InnoDB並不儲存這些事件發生時的實際時間,相反它只儲存這些事件發生時的系統版本號。這是一個隨著事務的建立而不斷增長的數字。每個事務在事務開始時會記錄它自己的系統版本號。每個查詢必須去檢查每行資料的版本號與事務的版本號是否相同。讓我們來看看當隔離級別是REPEATABLE READ時這種策略是如何應用到特定的操作的:
  SELECT InnoDB必須每行資料來保證它符合兩個條件:
  1、InnoDB必須找到一個行的版本,它至少要和事務的版本一樣老(也即它的版本號不大於事務的版本號)。這保證了不管是事務開始之前,或者事務建立時,或者修改了這行資料的時候,這行資料是存在的。

  2、這行資料的刪除版本必須是未定義的或者比事務版本要大。這可以保證在事務開始之前這行資料沒有被刪除。

  1. MyISAM:預設的MySQL外掛式儲存引擎,它是在Web、資料倉儲和其他應用環境下最常使用的儲存引擎之一
  2. InnoDB:用於事務處理應用程式,具有眾多特性,包括ACID事務支援。
一般來說,MyISAM適合:
(1)做很多count 的計算;
(2)插入不頻繁,查詢非常頻繁;
(3)沒有事務。
InnoDB適合:
(1)可靠性要求比較高,或者要求事務;
(2)表更新和查詢都相當的頻繁,並且表鎖定的機會比較大的情況指定資料引擎的建立

相關推薦

mysql 儲存引擎 innodbmyisam 區別

轉自:http://blog.sina.com.cn/s/blog_6e322ce70100xwve.html 1, 事務處理 innodb 支援事務功能,myisam 不支援。 Myisam 的執行速度更快,效能更好。 2,select ,update ,insert

MYSQL儲存引擎innodbmyisam區別

innodb:預設事務型引擎,最重要最廣泛的儲存引擎,效能非常優秀,資料庫儲存在共享表空間,可以通過配置分開。對主鍵查詢的效能高於其他型別的儲存引擎。它內部做了很多優化,從磁碟讀取資料時自動在記憶體構建hash(雜湊)索引,插入資料時自動構建插入緩衝區。它可以通過一些機制和工具支援真正的熱備份,支援

mysql儲存引擎innodbmyisam區別

MyISAM與InnoDB的區別是什麼? 1、 儲存結構 MyISAM:每個MyISAM在磁碟上儲存成三個檔案。第一個檔案的名字以表的名字開始,副檔名指出檔案型別。.frm檔案儲存表定義。資料檔案的副檔名為.MYD (MYData)。索引檔案的副檔名是.MYI (MYIndex)。InnoDB:所有的表都

MySQL儲存引擎InnoDBMyisam的六大區別

MySQL有多種儲存引擎,每種儲存引擎有各自的優缺點,可以擇優選擇使用: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 MySQL支援數個

MySQL儲存引擎中的MyISAMInnoDB區別詳解

在使用MySQL的過程中對MyISAM和InnoDB這兩個概念存在了些疑問,到底兩者引擎有何分別一直是存在我心中的疑問。為了解開這個謎題,搜尋了網路,找到了如下資訊: MyISAM是MySQL的預設資料庫引擎(5.5版之前),由早期的ISAM(Indexed Sequent

MySQL儲存引擎--MyISAMInnoDB區別

MyISAM 和InnoDB 講解   InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個表型別,這兩個表型別各有優劣,視具體應用而定。基本的差別為:MyISAM型別不支援事務處理等高階處理,而InnoDB型別支援。MyISAM型別的表強調的是效能,其執行數度

mysql儲存引擎innodbmyisam對插入影響索引對插入的影響

前言 一直好奇mysql的儲存引擎innodb和myisam對插入影響和索引對插入的影響。 這次我就來做個測試,以下測試供大家參考。 drop table userinfo; CREATE TAB

MySQL存儲引擎InnodbMyISAM對比總結

級別 索引 日誌 鎖定 lte mysql 恢復 ins 標準 Innodb引擎 InnoDB是一個事務型的存儲引擎,設計目標是處理大數量數據時提供高性能的服務,它在運行時會在內存中建立緩沖池,用於緩沖數據和索引。 Innodb引擎優點 1.支持事務處

mysql數據庫引擎InnoDBMyISAM

delet spa 發生 lock 查看 加鎖 地方 也會 啟動參數 一.Mysql鎖分類   表級鎖:開銷小,加鎖塊;不會出現死鎖,鎖定粒度大,發生鎖沖突的概率最高,並發度最低。 行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,並發性也最高

mysql儲存引擎InnoDB插入資料的過程詳解

https://blog.csdn.net/tangkund3218/article/details/47361705 mysql是目前市面上應用非常廣泛的關係型資料庫. 當插入,更新,刪除等sql語句執行後,mysql為何總能高效,快速的執行,而且不管是斷電,mysql程序崩潰,還是一些其

mysql 儲存引擎InnoDB — 索引

mysql 儲存引擎Innodb — 索引 簡介: 索引可以包含一個或多個列的值。如果索引包含多個列,那麼列的順序也十分重要。MySQL只能高效地使用索引的最左字首列。下面會有詳細的介紹。 大家都知道

深入瞭解MySQL儲存引擎-------InnoDB

如果想看自己的資料庫預設使用的那個儲存引擎,可以通過使用命令SHOW VARIABLES LIKE 'storage_engine';一、InnoDB儲存引擎1.InnoDB是事務型資料庫的首選引擎,支援事務安全表(ACID)事務的ACID屬性:即原子性、一致性、隔離性、永續

mysql儲存引擎InnoDB詳解,從底層看清InnoDB資料結構

InnoDB一個支援事務安全的儲存引擎,同時也是mysql的預設儲存引擎。本文主要從資料結構的角度,詳細介紹InnoDB行記錄格式和資料頁的實現原理,從底層看清InnoDB儲存引擎。 > 本文主要內容是根據掘金小冊《從根兒上理解 MySQL》整理而來。如想詳細瞭解,建議購買掘金小冊閱讀。 ## I

MySQL儲存引擎MyISAMInnoDB區別詳解

1、MyISAM和InnoDB區別 1.1 區別   InnoDB MyISAM 構造 由.frm檔案、表空間(分為獨立表空間或者共享表空間)和日誌檔案(redo log)組成。 MyIS

Mysql 儲存引擎MyISAMInnoDB的簡單區別

原址:https://blog.csdn.net/lamp_yang_3533/article/details/51757567  MyISAM 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好,MyISAM不支援事務、外來鍵和行鎖。MyISAM的每個資料表包括三個檔案,分

探究:Mysql資料庫innodbmyisam兩種儲存引擎auto_increment屬性的區別

part1:重啟的影響 為包含表頭和表體的業務物件建立表,要求表頭.fid=表體.fid。有一種常見的思路是通過一個單獨的表設定種子列,通過這個單獨的表獲取表頭和表體需要的fid,獲取之後刪除單獨表的記錄。這裡需要注意了,這個獨立的表必須使用myisam格式,因為innod

MySQL儲存引擎簡介-MyISAMInnoDB區別

上篇文章《MySql邏輯結構簡介》我們聊到了儲存引擎,可以說MySQL可插拔的多元化儲存引擎給我們的使用者帶來了很靈活的選擇。 這篇文章我們來聊一下目前主流的兩種儲存引擎MyISAM和InnoDB的區別。   MyISAM InnoDB 外來鍵 不支援 支援 事務 不支援 支援 鎖

MySQL儲存引擎MyISAMInnoDB區別

### MyISAM和InnoDB的區別 #### 定義 **InnoDB**:MySQL預設的事務型引擎,也是最重要和使用最廣泛的儲存引擎。它被設計成為大量的短期事務,短期事務大部分情況下是正常提交的,很少被回滾。InnoDB的效能與自動崩潰恢復的特性,使得它在非事務儲存需求中也很流行。除非有非常特別的

MySQL 儲存引擎 MyISAM InnoDB 配置

abc ports duplicate 資源 rec 批量 top 更新 null MySQL 存儲引擎 MyISAM 和 InnoDB 配置 MyISAM 和 InnoDB 最大特點: MyISAM : ① 不支持事務 。 ② 表級鎖定形式 ,數據在更新時鎖定整個表 。

MySQL儲存引擎MyISAMInnoDB區別比較

使用MySQL當然會接觸到MySQL的儲存引擎,在新建資料庫和新建資料表的時候都會看到。 MySQL的預設引擎5.7以前是MyISAM,5.7以後是InnoDB。建議使用InnoDB。 至於到底用哪種儲存引擎比較好?這個問題沒有定論,需要根據你的需求和環境來衡量。所以對這兩種引擎