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。

对比

1、各自特定

SQLite :独立、简单(零配置);适用于为单个应用程序和设备提供本地数据存储。
MySQL:可伸缩、高并发性;适用于客户端/服务器模式企业数据的共享数据存储。

2、使用场景

SQLite :嵌入式设备和物联网、中小型网站、缓存企业数据、作为一种文件格式使用;
MySQL:客户端/服务器应用程序、大型网站、大型数据、高并发。

3、选择哪个

1) 数据和应用程序是分开的需要通过网络访问:选择MySQL;
2)多线程或多进程同时执行写操作并且要求不能排队轮流写操作:选择MySQL(SQLite同时只支持一个写操作);
3)数据大于1TB:选择MySQL(SQLite只能使用单个最大140TB的文件);
4)并发性低、数据小于1TB、本地存储:选择SQLite。

猜你喜欢

转载自blog.csdn.net/weixin_37989267/article/details/111043088
今日推荐