1. 程式人生 > >MySQL和Sqlite3效能測試

MySQL和Sqlite3效能測試

測試條件:[email protected],普通機械硬碟。

MySql: 5.0.45-community-nt,32bit, innodb引擎,innodb_flush_log_at_trx_commit=0

Sqlite3: Synchronous=Off,LockingMode = Exclusive

TableScript:

MySql:

CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(32) NOT NULL,
  `password` varchar(32) NOT NULL,
  `email` varchar(64) default NULL,
  `mobile` varchar(20) default NULL,
  PRIMARY KEY  (`id`),
  KEY `idx_name` USING BTREE (`name`),
  KEY `idx_mobile` (`mobile`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

Sqlite3:

CREATE TABLE Indy(ID INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT COLLATE NOCASE, password TEXT COLLATE NOCASE, email TEXT COLLATE NOCASE, mobile TEXT COLLATE NOCASE);
CREATE INDEX "idx_indy_mobile" ON "Indy" ("mobile" ASC);

CREATE INDEX "idx_indy_name" ON "Indy" ("name" ASC);

特別說明一下:

name和mobile欄位都有索引,沒有索引這種情況不做測試,原因不解釋。

MySql插入10萬條記錄,開啟Transaction,CachedUpdates。

耗時:8.654s,QPS=11555

Sqlite3插入10萬條記錄,

耗時:1.60s,QPS=62471

測試結論:

62471/11555=5.43

1.單純看插入效能的話,優化過的Sqlite大約比MySql快5倍以上。

2.不使用索引的話,sqlite3每秒插入二三十萬記錄很輕鬆(機械硬碟)。

3.對於特殊部分的應用,如果有需要的話,建議試試Sqlite3。