测试sqlite3 autocommit的相对速度

2020年10月14日 / 7次阅读 / 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的相对速度》有1条留言

电子邮件地址不会被公开。 必填项已用*标注

  • 麦新杰

    如果把sqlite3的数据库建在内存中,速度相当地块!!

    >>> import sqlite3
    >>> conn = sqlite3.connect(':memory:')
    
     [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top