您的位置:首页 > 财经 > 金融 > SQLite的入门级项目学习记录(四)

SQLite的入门级项目学习记录(四)

2024/12/22 19:26:19 来源:https://blog.csdn.net/xulibo5828/article/details/142281585  浏览:    关键词:SQLite的入门级项目学习记录(四)

性能评估和测试

规划项目

        1、框架选择:前端交互和线程控制用pyside,SQLite作为数据库支持。

        2、预估数据量:每秒10个数据,每个月约26000000(26M)条。

        3、压力测试:首先用python脚本创建一个数据库,数据库中只有一个表,表中只有一列,共有26M条数据,每个数据的内容是当前系统时间的字符串,str(datetime.now()),这样可以大致模拟一个月的数据量。然后,用脚本操作数据库,增加新的数据条目,测试如果每个月生成数据库文件,是否能满足系统的速度要求(每秒10个数据)。
        运行以下的脚本创建数据库文件:

import sqlite3
from datetime import datetimedef store_data(conn, cursor, data):try:cursor.execute('BEGIN TRANSACTION')cursor.executemany('INSERT INTO measurements (data) VALUES (?)', data)conn.commit()except Exception as e:print(f"An error occurred: {e}")# 创建数据库连接和游标
db_file = 'createDatas.db'
conn = sqlite3.connect(db_file)
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS measurements (data TEXT NOT NULL)
''')conn.commit()# 存储数据
j = 0
x = 0
data = []
while x < 26000000:while j < 10000:data.append((str(datetime.now()),))j += 1store_data(conn, cursor, data)cursor.execute('SELECT COUNT(*) FROM measurements')x = cursor.fetchone()[0]j = 0data = []print(x)
# 关闭连接和游标
cursor.close()
conn.close()

        压力测试:

import sqlite3
from datetime import datetime
from time import timedef store_data(conn, cursor, data):try:cursor.execute('BEGIN TRANSACTION')cursor.executemany('INSERT INTO measurements (data) VALUES (?)', data)conn.commit()except Exception as e:print(f"An error occurred: {e}")# 创建数据库连接和游标
db_file = 'createDatas.db'
conn = sqlite3.connect(db_file)
cursor = conn.cursor()
x = 0
j = 0
# 创建一个100个元素的数据组
data = []
while j < 100:data.append((str(datetime.now()),))j += 1
while x < 100:time1 = time()store_data(conn, cursor, data)time2 = time()print(time2 - time1)x += 1
# 关闭连接和游标
cursor.close()
conn.close()

 运行结果:

0.03693747520446777
0.036476850509643555
0.03375363349914551
0.03529238700866699
0.03457474708557129
0.03527641296386719
0.03363299369812012
0.03394293785095215
0.03500247001647949
0.03366684913635254
0.03717041015625
0.03408193588256836
0.035376787185668945
0.13425254821777344
0.03524899482727051
0.034047603607177734

看得出,即使是拥有2600W条数据的表中增加100条数据,耗时也仅为30ms左右。
然后,我将脚本修改一下,把每次写入的条数改为10和1000,耗时变化不大。
再将表的起始条数改为100条测试,耗时变化也不大。
这也就可以得出结论,本项目,每个月量的数据库,SQLite是完全可以满足写入速度要求的(即使每秒写一次也有足够的裕量)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com