mysql大量数据写入,分次写入和一次写入的效率测试

  • 10条数据时:分次写入时间0.14秒,一次写入时间0.01秒
  • 100条数据时:分次写入时间1.46秒,一次写入时间0.01秒
  • 1000条数据时:分次写入时间14.82秒,一次写入时间0.05秒
  • 10000条数据时:分次写入时间164.04秒,一次写入时间0.31秒
    由此可见在实时性要求不高的情况下,同时需要写入的数据越多,越应该使用一次性写入,会非常显著的提升效率。

以下为测试条件及代码。

python版本:3.7.1,所用包mysql-connector-python==8.0.19
mysql版本:8.0.20

创建表
主键为id:int类型,自动增长
索引为txt:字符类型

CREATE TABLE xxxx
(
id INT NOT NULL AUTO_INCREMENT,
txt VARCHAR (200),
PRIMARY KEY (`id`) 
);

python程序

import mysql.connector
import time
class testDatabase:
    def __init__(self):
        #连接数据库
        self.conn = mysql.connector.connect(user='数据库用户名', password='数据库密码', database='数据库名', use_unicode=True)
        self.db = self.conn.cursor()
    #以下函数为测试分次写入
    def testMany(self,num,s):
        for i in range(num):
            yuju = "insert into xxxx(txt)values('"+s+"');"
            self.db.execute(yuju)
            self.db.execute('commit')
    #以下函数为测试一次写入
    def testOne(self,num,s):
        yuju = "insert into xxxx(txt)values('"+s+"')"
        for i in range(num-1):
            yuju = yuju+",('"+s+"')"
        yuju+=";"
        self.db.execute(yuju)
        self.db.execute('commit')
test = testDatabase()
#测试分次写入
a  = time.time()
test.testMany(10,"a")
b  = time.time()
print(b-a)
#测试一次写入
a  = time.time()
test.testOne(10,"a")
b  = time.time()
print(b-a)

你可能感兴趣的:(mysql,python,mysql)