热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » MySQL/MSSQL编程 » SQLite与其他数据库的速度比较

SQLite与其他数据库的速度比较

论坛链接
  • SQLite与其他数据库的速度比较
  • 发布时间:2008-12-01 18:42:11    浏览数:8671    发布者:tzlink    设置字体【   
执行程序总结一系列的测试程序已经被运行去测量SQLite 2.7.6,PostgreSQL 7.1.3,和 MySQL 3.23.41 的相对性能。以下是根据实验得出的一些总结:
SQLite 2.7.6 是非常快的,有时可以比安装在RedHat 7.2 上的预置的PostgreSQL 7.1.3 快10倍甚至20倍。
SQLite 2.7.6 总是很快, 有时比MySQL 3.23.41 快2倍多。
SQLite 执行CREATE INDEX or DROP TABLE时不像其它数据库那样快。但这不是什么问题,因为这些是很少运用的操作。
如果你把 multiple 操作聚集到一个单独的事物项,SQLite可以更快些。
但以下几点是值得注意的:
这些测试程序不是在测量多用户使用时数据库的性能,也不是在测量包含multiple的最优化复杂查询。
这些测试是在一个相对小的数据库里完成的(大约14兆字节)。 它们没有测试数据库引擎的大小对程序运行速度的影响有多大。
测试环境测试所用的平台是一个具有1GB内存的1.6GHz Athlon和一个IDE驱动硬盘。操作系统是具有一个stock内核的RedHat Linux 7.2 。使用的PostgreSQL 和MySQL服务器被RedHat 7.2 中的默认程序所传送。(PostgreSQL 7.1.3 版和MySQL3.23.41版)所使用的引擎自始至终没有被调整过。需要特别注意的是,RedHat 7.2 中默认的MYSQL配置不支持处理事物项,这一点使MYSQL的速度大大增加。但SQLite还是有能力完成大部分的测试的。

我被告知,RedHat 7.3 中预设的PostgreSQL配置是非常落后的(它必须在具有 8MB RAM 的机器上工作)。 and that PostgreSQL则可以通过调整一些配置来运行的快些。 Matt Sergeant 报道说他已经调整了他的PostgreSQL装置,并且像下面所显示的一样重新进行测试。他的结果显示 PostgreSQL和MySQL运行速度一样。如想查看结果,访问:http://www.sergeant.org/sqlite_vs_pgsync.htmlSQLite实在同样的配置下被测试的,它是用 -O6 optimization 和 -DNDEBUG=1 交叉编写,这样使许多SQLite代码中的"assert()"语句 无法运行。

所有的测试都是在一个静止的机器上进行的。所有的测试时由一个简单的TCL文稿编排程序产生和运行的。 A copy of this Tcl script can be found in the你可以在源文件目录文件SQLite source tree in the filetools/speedtest.tcl中发现TCL文稿编排程序的副本. 所有测试中的时间都是以精确到秒的背景时钟来计算的.SQLite有两个单独的时间值. 第一个时间值在一个完整磁盘同步化打开的默认装置里.同步话打开后,为了确保重要数据已被真正的写入磁盘驱动表面,SQLite在关键的时候执行fsync()系统调用. 在数据库更新过程中,当操作系统崩溃时或者计算机突然断电时,为了保证数据库的完整性,同步化是非常有必要的.第二个时间值是当同步化关闭的时候.关闭同步化, SQLite有时会运行的快些,但如果系统崩溃或者突然断电数据库将会受到损失. 通常来说,同步化的SQLite的时间是为了和PostgreSQL(因为他也是同步化的)比较,异步化的SQLite是为了和也是异步化的MySQL引擎比较.


测试 1: 1000 INSERTs
CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three');
INSERT INTO t1 VALUES(2,75560,'seventy five thousand five hundred sixty');
... 995 lines omitted
INSERT INTO t1 VALUES(998,66289,'sixty six thousand two hundred eighty nine');
INSERT INTO t1 VALUES(999,24322,'twenty four thousand three hundred twenty two');
INSERT INTO t1 VALUES(1000,94142,'ninety four thousand one hundred forty two');
PostgreSQL: 4.373
MySQL: 0.114
SQLite 2.7.6: 13.061
SQLite 2.7.6 (nosync): 0.223


因为没有一个中央服务器来控制访问,SQLite必须先关闭再打开数据库文件,这样高速缓存器就失去了作用。在这个测试中,每个 SQL语句都是一个独立的事务元,所以数据库文件必须被打开和关闭,高速缓存必须刷新1000次。尽管这样,异步版本的SQLite还是和MYSQL一样快。但同步版本的却是非常慢。SQLite在每个同步事务元后调用fsync(),因而确保了磁盘表面所有的数据都是安全的。13秒的测试时间大部分都被用于磁盘I/O。
TAG: 速度 数据库 sqlite SQLite SqLite
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理