sqlite3的性能不错

标签:性能

Python 2.5里内置了sqlite3模块,可以直接创建sqlite数据库。虽然是个小型的数据库,不过测试后发现性能确实不错,看来足以用于嵌入式开发。

测试是创建了一个含整型的id和随机浮点数这2个字段的表,然后插入1百万条数据,查询其中约10万条,删除其中约10万条。
测试代码如下:
import sqlite3
from random import random
from time import clock

rand = [(random(),) for i in xrange(1000000)]
con = sqlite3.connect(':memory:')
#con = sqlite3.connect('test.db')
cu = con.cursor()

cu.execute('''create table test (
id integer primary key,
value real)''')

t1 = clock()
cu.executemany('insert into test values (NULL, ?)', rand)
con.commit()
t2 = clock()

print cu.execute('select count(*) from test where value < 0.1').fetchone()[0]
t3 = clock()

print len(cu.execute('select * from test where value > 0.5 and value < 0.6').fetchall())
t4 = clock()

cu.execute('delete from test where value > 0.9')
con.commit()
t5 = clock()

cu.close()
con.close()

print t2 - t1
print t3 - t2
print t4 - t3
print t5 - t4
当使用内存表时,时间如下:
7.36210915074
0.396014577272
0.572679488594
0.767905697512
使用文件如下:
8.16458628122
0.534186328151
0.612970642917
2.01278710004
可以看到插入和删除由于进行磁盘IO,会比较影响性能;而查询则和内存表差不多。重点是插入百万条数据只要7、8秒,比MySQL等数据库至少快一个数量级。
不过在并发方面肯定是没法比的,好在一般的小型应用不存在过多的并发。

0条评论 你不来一发么↓

    想说点什么呢?