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、這行資料的刪除版本必須是未定義的或者比事務版本要大。這可以保證在事務開始之前這行資料沒有被刪除。
- MyISAM:預設的MySQL外掛式儲存引擎,它是在Web、資料倉儲和其他應用環境下最常使用的儲存引擎之一
- InnoDB:用於事務處理應用程式,具有眾多特性,包括ACID事務支援。
(1)做很多count 的計算;
(2)插入不頻繁,查詢非常頻繁;
(3)沒有事務。
InnoDB適合:
(1)可靠性要求比較高,或者要求事務;
(2)表更新和查詢都相當的頻繁,並且表鎖定的機會比較大的情況指定資料引擎的建立
相關推薦
mysql 儲存引擎 innodb和myisam 區別
轉自:http://blog.sina.com.cn/s/blog_6e322ce70100xwve.html 1, 事務處理 innodb 支援事務功能,myisam 不支援。 Myisam 的執行速度更快,效能更好。 2,select ,update ,insert
MYSQL儲存引擎innodb和myisam的區別
innodb:預設事務型引擎,最重要最廣泛的儲存引擎,效能非常優秀,資料庫儲存在共享表空間,可以通過配置分開。對主鍵查詢的效能高於其他型別的儲存引擎。它內部做了很多優化,從磁碟讀取資料時自動在記憶體構建hash(雜湊)索引,插入資料時自動構建插入緩衝區。它可以通過一些機制和工具支援真正的熱備份,支援
mysql儲存引擎innodb、myisam區別
MyISAM與InnoDB的區別是什麼? 1、 儲存結構 MyISAM:每個MyISAM在磁碟上儲存成三個檔案。第一個檔案的名字以表的名字開始,副檔名指出檔案型別。.frm檔案儲存表定義。資料檔案的副檔名為.MYD (MYData)。索引檔案的副檔名是.MYI (MYIndex)。InnoDB:所有的表都
MySQL儲存引擎InnoDB與Myisam的六大區別
MySQL有多種儲存引擎,每種儲存引擎有各自的優缺點,可以擇優選擇使用: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 MySQL支援數個
MySQL儲存引擎中的MyISAM和InnoDB區別詳解
在使用MySQL的過程中對MyISAM和InnoDB這兩個概念存在了些疑問,到底兩者引擎有何分別一直是存在我心中的疑問。為了解開這個謎題,搜尋了網路,找到了如下資訊: MyISAM是MySQL的預設資料庫引擎(5.5版之前),由早期的ISAM(Indexed Sequent
MySQL儲存引擎--MyISAM與InnoDB區別
MyISAM 和InnoDB 講解 InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個表型別,這兩個表型別各有優劣,視具體應用而定。基本的差別為:MyISAM型別不支援事務處理等高階處理,而InnoDB型別支援。MyISAM型別的表強調的是效能,其執行數度
mysql的儲存引擎innodb、myisam對插入影響和索引對插入的影響
前言 一直好奇mysql的儲存引擎innodb和myisam對插入影響和索引對插入的影響。 這次我就來做個測試,以下測試供大家參考。 drop table userinfo; CREATE TAB
MySQL存儲引擎Innodb和MyISAM對比總結
級別 索引 日誌 鎖定 lte mysql 恢復 ins 標準 Innodb引擎 InnoDB是一個事務型的存儲引擎,設計目標是處理大數量數據時提供高性能的服務,它在運行時會在內存中建立緩沖池,用於緩沖數據和索引。 Innodb引擎優點 1.支持事務處
mysql數據庫引擎InnoDB和MyISAM
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儲存引擎:MyISAM和InnoDB區別詳解
1、MyISAM和InnoDB區別 1.1 區別 InnoDB MyISAM 構造 由.frm檔案、表空間(分為獨立表空間或者共享表空間)和日誌檔案(redo log)組成。 MyIS
Mysql 儲存引擎MyISAM和InnoDB的簡單區別
原址:https://blog.csdn.net/lamp_yang_3533/article/details/51757567 MyISAM 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好,MyISAM不支援事務、外來鍵和行鎖。MyISAM的每個資料表包括三個檔案,分
探究:Mysql資料庫innodb和myisam兩種儲存引擎auto_increment屬性的區別
part1:重啟的影響 為包含表頭和表體的業務物件建立表,要求表頭.fid=表體.fid。有一種常見的思路是通過一個單獨的表設定種子列,通過這個單獨的表獲取表頭和表體需要的fid,獲取之後刪除單獨表的記錄。這裡需要注意了,這個獨立的表必須使用myisam格式,因為innod
MySQL儲存引擎簡介-MyISAM和InnoDB的區別
上篇文章《MySql邏輯結構簡介》我們聊到了儲存引擎,可以說MySQL可插拔的多元化儲存引擎給我們的使用者帶來了很靈活的選擇。 這篇文章我們來聊一下目前主流的兩種儲存引擎MyISAM和InnoDB的區別。 MyISAM InnoDB 外來鍵 不支援 支援 事務 不支援 支援 鎖
MySQL儲存引擎:MyISAM和InnoDB的區別
### MyISAM和InnoDB的區別 #### 定義 **InnoDB**:MySQL預設的事務型引擎,也是最重要和使用最廣泛的儲存引擎。它被設計成為大量的短期事務,短期事務大部分情況下是正常提交的,很少被回滾。InnoDB的效能與自動崩潰恢復的特性,使得它在非事務儲存需求中也很流行。除非有非常特別的
MySQL 儲存引擎 MyISAM 和 InnoDB 配置
abc ports duplicate 資源 rec 批量 top 更新 null MySQL 存儲引擎 MyISAM 和 InnoDB 配置 MyISAM 和 InnoDB 最大特點: MyISAM : ① 不支持事務 。 ② 表級鎖定形式 ,數據在更新時鎖定整個表 。
MySQL儲存引擎MyISAM與InnoDB的區別比較
使用MySQL當然會接觸到MySQL的儲存引擎,在新建資料庫和新建資料表的時候都會看到。 MySQL的預設引擎5.7以前是MyISAM,5.7以後是InnoDB。建議使用InnoDB。 至於到底用哪種儲存引擎比較好?這個問題沒有定論,需要根據你的需求和環境來衡量。所以對這兩種引擎