都说打开关闭数据库很消耗资源,影响效率.但到底打开关闭一次数据库会怎样影响效率,影响程度有多大,对我这种轻量级的使用用户是否可以接受这种效率损失,于是就有了下面的测试过程.(在此申明:我的测试是基于我的开发环境所得,是不权威的,甚至是片面的,仅供参考,读者朋友可采用以下代码对自己的开发环境进行实测)
1)首先测试本机mysql数据库开关100次效率如何
import pymysql
from datetime import datetime #必须这样,否则出错
i = 1
btime = datetime.now()
while i <= 100:
starttime = datetime.now()
#本机数据库
connect = pymysql.connect(host='localhost',
port=3306,
user='pubuser', # 连接数据库名称
password='123321', # 连接数据库密码
db='test-pythondata', # 数据库名称
charset='utf8')
# ----获取光标
cursor = connect.cursor()
cursor.close() #关闭光标
connect.close() #关闭连接
endtime = datetime.now()
print(i,' ',endtime-starttime)
i += 1
etime = datetime.now()
print('总:',etime-btime,' 平均:',(etime-btime)/100)
运行后输出结果如图:
小结:本机打开关闭100次MySQL数据库
总: 0:00:00.784442 平均: 0:00:00.007844
平均耗时0.0078秒
2) 再测试内网开关mysql数据库100次效率如何
import pymysql
from datetime import datetime #必须这样,否则出错
i = 1
btime = datetime.now()
while i <= 100:
starttime = datetime.now()
#内网17数据库
connect = pymysql.connect(host='192.168.8.17',
port=3306,
user='pubuser', # 连接数据库名称
password='123321', # 连接数据库密码
db='test-pythondata', # 数据库名称
charset='utf8')
# ----获取光标
cursor = connect.cursor()
cursor.close() #关闭光标
connect.close() #关闭连接
endtime = datetime.now()
print(i,' ',endtime-starttime)
i += 1
etime = datetime.now()
print('总:',etime-btime,' 平均:',(etime-btime)/100)
运行后输出结果如图:
小结:内网打开关闭100次MySQL数据库
总: 0:00:01.396821 平均: 0:00:00.013968
平均耗时0.014秒
3)本机连续开关1000次效率如何
小结:本机打开关闭1000次MySQL数据库
总: 0:00:13.470841 平均: 0:00:00.013471
平均耗时0.013秒
4)内网连续开关1000次效率如何
小结:内网打开关闭1000次MySQL数据库
总: 0:00:13.243744 平均: 0:00:00.013244
平均耗时0.013秒
总结:(以上数据仅供参考,不具有权威性)小数据量的本地开关数据库只需要0.007秒左右,内网开关数据库只需要0.013秒左右;1000次以上的开关数据库本地与内网效率相近大概0.013秒左右.
最终结论:对于我本人这样的小轻量数据应用来说,这个效率是可以接受的.暂时可以不必考虑一步读写,连接池之类的应用,就写以下纯的pymysql CRUD函数,便于开发应用就可以了