2020年10月14日 / 37次阅读 / Last Modified 2020年10月22日
SQLite
python官方文档说,sqlite3默认工作在autocommit模式下,而python的sqlite3模块不是。经测试比较,的确如此。
sqlite3的autocommit模式,我觉得最大的问题,可能就是速度了,很慢!
先在sqlite3 shell中感觉一下insert的速度:
sqlite> insert into mod2 values (5,5,5);
Run Time: real 0.080 user 0.001024 sys 0.000279
用时 0.08
然后,在python中试试看:
>>> import sqlite3
>>> import timeit
>>>
>>> conn = sqlite3.connect('tdb')
>>> conn.isolation_level = None
>>> c = conn.cursor()
>>> timeit.timeit("c.execute('insert into mod2 values (3,3,3)')", number=1, globals=globals())
0.08758683101041242
在python中用时 0.08758,可认为时间一样。
现在我们在python中,使用默认模式(要手动commit的模式)
>>> conn.isolation_level=''
>>> timeit.timeit("c.execute('insert into mod2 values (3,3,3)')", number=1, globals=globals())
0.0003143310023006052
0.000314,。。。
虽然最后要手动commit,但是就算insert 1000条记录,commit也非常快。
最后,如果在python默认模式下操作sqlite3,每一条insert后面都跟一个commit,速度跟autocommit差不多,也很慢!
-- EOF --
本文链接:https://www.pynote.net/archives/2574
《测试sqlite3 autocommit的相对速度》有3条留言
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记
正常应用一般都不会在autocommit模式下。 [ ]
对于SQLite3来说,commit太多除了速度慢之外,还存在一个互斥的问题,commit的时候,database will be blocked! [ ]
如果把sqlite3的数据库建在内存中,速度相当地块!!
[ ]