Mysql數(shù)據(jù)庫服務(wù)器4核,批量寫入1萬條數(shù)據(jù)、每條數(shù)據(jù)4個(gè)字段 性能測(cè)試:
1、常規(guī)for循環(huán)一條條寫入 (這種方式波動(dòng)比較大,基本在60-120s之間)
startTime = time.time()
for i in range(10000):
db.session.add(
Test(
blog_name='阿湯博客{}'.format(i),
blog_url='http://m.maowutv.com/'.format(i),
blog_desc='我是阿湯博客,地址是http://m.maowutv.com/'.format(i),
create_time=datetime.datetime.now()
)
)
db.session.commit()
endTime = time.time()
diff = round(endTime - startTime, 3)
print("耗時(shí):{}s").format(diff)
耗時(shí):95.468s
2、通過bulk_save_objects批量寫入
startTime = time.time()
db.session.bulk_save_objects(
[
Test(
blog_name='阿湯博客{}'.format(i),
blog_url='http://m.maowutv.com/'.format(i),
blog_desc='我是阿湯博客,地址是http://m.maowutv.com/'.format(i),
create_time=datetime.datetime.now()
)
for i in range(10000)
]
)
endTime = time.time()
diff = round(endTime - startTime, 3)
print("耗時(shí):{}s").format(diff)
耗時(shí):0.695s
3、通過bulk_insert_mappings批量寫入
startTime = time.time()
db.session.bulk_insert_mappings(
Test,
[
dict(
blog_name='阿湯博客{}'.format(i),
blog_url='http://m.maowutv.com/'.format(i),
blog_desc='我是阿湯博客,地址是http://m.maowutv.com/'.format(i),
create_time=datetime.datetime.now()
)
for i in range(10000)
]
)
endTime = time.time()
diff = round(endTime - startTime, 3)
print("耗時(shí):{}s").format(diff)
耗時(shí):0.658s
4、原生insert批量寫入
startTime = time.time()
db.session.execute(
Test.__table__.insert(),
[
{
"blog_name": '阿湯博客{}'.format(i),
"blog_url": 'http://m.maowutv.com/'.format(i),
"blog_desc": '我是阿湯博客,地址是http://m.maowutv.com/'.format(i),
"create_time": datetime.datetime.now()
}
for i in range(10000)
]
)
endTime = time.time()
diff = round(endTime - startTime, 3)
print("耗時(shí):{}s").format(diff)
耗時(shí):0.434s
總得來說,只要不是使用第一種方式批量寫入,基本上不會(huì)有太大的性能問題。
贊
0
賞


