1. 程式人生 > >Mysql資料庫Innodb與MyISAM的效能對比測試

Mysql資料庫Innodb與MyISAM的效能對比測試

由於近期有個專案對系統性能要求很高,技術選型上由於種種原因已經確定使用Mysql資料庫,接下來就是要確定到底使用哪種儲存引擎。我們的應用是典型的寫多讀少,寫入內容為也很短,對系統的穩定性要求很高。所以儲存引擎肯定就定在廣泛使用的Innodb和MyISAM之中了。

    至於兩者的比較網上也有很多,但是畢竟這個事情也不復雜,決定還是自己來做,去驗證一下在我們的場景下誰更優。

測試的版本是mysql  Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (i686),使用的是Innodb plugin 1.0.8(官方稱比built-in版本效能更好)和預設的MyISAM。

測試機器是我的筆記本,配置如下:Intel 酷睿2雙核 P8600,2G*2 DDR3 1066記憶體,320G硬碟5400轉。

    測試一:資料插入效能測試,這裡我分別對innodb_flush_log_at_trx_commit引數開啟和關閉都測了了一下,每次測試都是執行40s,表中數字都是實際插入條數。

                       MyISAM                 Innodb (開啟)      Innodb (關閉)

單執行緒,逐個插入         120000                 60000              60000

4執行緒,逐個插入          

40000*4                20000*4            40000*4

單執行緒,批量100條/次插入  3600*100               800*100            3000*100

單執行緒,批量200條/次插入  1800*200               400*200            1600*200

    可以發現批量插入的效能遠高於單條插入,但是一次批量的大小對效能影響不大。每條記錄是否都重新整理日誌的引數對innodb效能的影響巨大。總體上來說,MyISAM效能更優一點。這裡有一點需要注意,在插入測試過程中,我對系統資源進行了監控,發現MyISAM對系統資源佔用很低,但是Innodb對磁碟佔用卻很高,應該是對事務控制多了很多需要記錄的日誌。

    測試二:資料讀取效能測試。每次隨機讀取1000條記錄,反覆進行讀取。

                        MyISAM        Innodb

單執行緒,200次讀取         5.7s          16.7s

4執行緒,200次讀取          12s           40.8s

    可以看出MyISAM的讀取效能非常恐怖,效能差距在3倍的樣子。

    以上兩個測試發現MyISAM在無事務的需求下幾乎完勝,但是要知道它是表鎖,Innodb是行鎖,那麼在併發讀寫同時存在的情況下,那結果會是怎麼樣呢?!

    測試三:兩個執行緒併發寫入,2個執行緒併發讀取。

                       MyISAM                                 Innodb

逐個插入                寫入40s:10000*2 讀取200次*2:14s        寫入40s:60000*2 讀取200次*2:50s

批量100條/次插入        寫入40s:1000*100*2 讀取200次*2:10s      寫入40s:1500*100*2 讀取200次*2:50s

    這下立刻顯示出Innodb在併發情況下強勁的效能,幾乎沒有什麼效能衰減。而MyISAM單條插入速度變得非常慢,批量插入也下降了40%效能。

    總結一下,在寫多讀少的應用中還是Innodb插入效能更穩定,在併發情況下也能基本,如果是對讀取速度要求比較快的應用還是選MyISAM。

    另外提一下,這裡需要用到對Innodb的熱備份,除了用Master-Slave的方式,還可以選用XtraBackup這個開源軟體。

相關推薦

Mysql資料庫InnodbMyISAM效能對比測試

由於近期有個專案對系統性能要求很高,技術選型上由於種種原因已經確定使用Mysql資料庫,接下來就是要確定到底使用哪種儲存引擎。我們的應用是典型的寫多讀少,寫入內容為也很短,對系統的穩定性要求很高。所以儲存引擎肯定就定在廣泛使用的Innodb和MyISAM之中了。   

mysqlInnoDBMyISAM的區別

兩者的區別: 1. InnoDB支援事務,MyISAM不支援,對於InnoDB每一條SQL語言都預設封裝成事務,自動提交,這樣會影響速度,所以最好把多條SQL語言放在begin和commit之間,組成一個事務; 2. InnoDB支援外來鍵,而MyISAM不支援。對一個包含外來鍵的InnoDB錶轉為MYI

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

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

MySQL引擎:InnoDBMySIAM區別對比,以及事務隔離級別

一,InnoDB與MyISAM的對比: InnoDB MyISAM 事務上 InnoDB提供事務支援,是MySQL預設的事務型儲存引擎, 支援事務安全表(ACID), 只要在需要InnoDB不支

tmpfsext3效能對比測試

author:skate time:2011/08/22 磁碟的大檔案的copy測試 [email protected] ~]# du -m --max-depth=1 /tmp/dhexp 1189    /tmp/dhexp [[email pr

MySQL資料庫InnoDBMyISAM資料引擎的差別

InnoDB和MyISAM是在使用MySQL最常用的兩個表型別,各有優缺點,視具體應用而定。基本的差別為:MyISAM型別不支援事務處理等高階處理,而InnoDB型別支援。MyISAM型別的表強調的是效能,其執行數度比InnoDB型別更快,但是不提供事務支援,而InnoD

MySQL資料庫InnoDB MyISAM的區別及其應用場景

InnoDB 與 MyISAM 都是MySQL資料庫的引擎。 1.他們的區別分為五點: (1).事務處理: MyISAM是非事務安全型的,而InnoDB是事務安全型的(支援事務處理等) (2).鎖機制不同: MyISAM是

MySQL資料庫知識點之MyIsamInnoDB引擎的區別

MyIsam與InnoDB引擎的區別 MyIsam與InnoDB主要有以下4點大的區別: 快取機制 事務支援 鎖實現 資料物理儲存方式(包括索引和資料) 1 快取機制 MyIsam InnoDB MyIsam僅僅快取索引,不會

MySql中啟用InnoDB數據引擎簡介 以及 InnoDB MYISAM的區別和聯系

隔離級別 最終 全文索引 都是 後臺 isa llb ldb 優勢 1、存儲引擎是什麽?   MySQL中的數據用各種不同的技術存儲在文件(或者內存)中。這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,

MySQL InnoDBMyISAM存儲引擎差異

vco 重建 lec insert 需要 系統文件 name 單個 master 前言:   之前簡單介紹過 MySQL 常用的存儲引擎,今天對兩個主流的存儲簡單分析下差異,書上沒有參考的筆試題解答註解; 差異:   MyISAM 只支持表鎖,不支持事務,表損壞

Mysql 存儲引擎中InnoDBMyisam的主要區別

sql mysq where條件 擴展 擴展名 sel 系統 sele sans innodb 支持事務功能,myisam 不支持。 Myisam 的執行速度更快,性能更好。 2、select ,update ,insert ,delete 操作 MyISAM:如果執行

Mysql 儲存引擎中InnoDBMyisam的主要區別

MVCC ( Multi-Version Concurrency Control )多版本併發控制  InnoDB:通過為每一行記錄新增兩個額外的隱藏的值來實現MVCC,這兩個值一個記錄這行資料何時被建立,另外一個記錄這行資料何時過期(或者被刪除)。但是InnoDB並不儲存這些事件發生時的實際時間,相反它只

HAWQHive查詢效能對比測試

一、實驗目的        本實驗通過模擬一個典型的應用場景和實際資料量,測試並對比HAWQ內部表、外部表與Hive的查詢效能。二、硬體環境1. 四臺VMware虛機組成的Hadoop叢集。2. 每臺機器配置如下:(1)15K RPM SAS 100GB(2)Intel(R)

YDBspark SQL在百億級資料上的效能對比測試

        按照時間逆序排序可以說是很多日誌系統的硬指標。在延雲YDB系統中,我們改變了傳統的暴力排序方式,通過索引技術,可以超快對資料進行單列排序,不需要全表暴力掃描,這個技術我們稱之為blockSort,目前支援tlong,tdouble,tint,tfloat四種

go-gob序列化/反序列化讀寫檔案效能對比測試

測試目的:個人開源專案ZCache需對資料進行持久化儲存,在此驗證兩種技術方案:gob序列化/反序列化和直接讀寫檔案的效能 待測試程式碼 package main import ( gob "encoding/gob" "encoding/json" "fmt" "

MySQL資料庫引擎ISAM MyISAM HEAP InnoDB的區別

        MySQL資料庫引擎取決於MySQL在安裝的時候是如何被編譯的。要新增一個新的引擎,就必須重新編譯MYSQL。在預設情況下,MYSQL支援三個引擎:ISAM、MYISAM和HEAP。另外兩種型別INNODB和BERKLEY(BDB),也常常可以使用。如果技

InnoDBMyISAM資料引擎對比選擇

MySQL優勢之一是外掛式的儲存引擎架構將查詢處理和其它的系統任務以及資料的儲存提取相分離。而MySQL常見的資料庫引擎有兩種:InnoDB和MyISAM,那如何選擇呢? 1.InnoDB和MyISAM對比: 1)MySQL預設採用的是MyISAM。 2)MyISAM

PCIe固態儲存HDD普通硬碟效能對比測試

經過兩週的測試,得出以下結果 MySQL-OLTP測試結果:(50張表,每張表1000萬資料,1000個執行緒) TPS:MySQL在PCIe固態儲存上執行是在HDD上執行的5.63倍 writes:MySQL在PCIe固態儲存上執行是在HDD上執行的5.58倍 read

MySQL儲存引擎InnoDBMyisam的六大區別

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

mysqlinnodbmyisam對比及索引原理區別

InnoDB和MyISAM是很多人在使用MySQL時最常用的兩個表型別,這兩個表型別各有優劣,5.7之後就不一樣了1、事務和外來鍵InnoDB具有事務,支援4個事務隔離級別,回滾,崩潰修復能力和多版本併發的事務安全,包括ACID。如果應用中需要執行大量的INSERT或UPDA