使用 单条sql语句、多条sql语句、事务插入数据的性能对比

在测试之前,先连接数据库以及创建表格

1、单条插入数据性能测试

for(int i=0;i<1000;i++)
{
    sql="insert into t_table (name,path) values ('test01','d:/test');
    mysql_query(&mysql,sql.c_str());
}

2、多条sql语句插入数据性能测试

for(int i=0;i<1000;i++)
{
    sql+="insert into t_table (name,path) values ('test.jpg','d:/test');
    mysql_query(&mysql,sql.c_str());
}

//但是记得获取数据
MYSQL_RES*re=mysql_store_result(&mysql);
mysql_next_result(&mysql)

3、使用事务插入数据性能测试

关于事务包含那几步,请看上一篇文章MySQL事务—6个步骤

//1、开始事务
sql="START TRANSACTION";
mysql_query(&mysql,sql.c_str());

//2、手动提交事务,取消自动提交事务
sql="set autocommit=0";
mysql_query(&mysql,sql.c_str());


//3、sql语句
for(int i=0;i<1000;i++)
{
    sql="insert into t_table (name,path) values ('test.png','d:/test');
    mysql_query(&mysql.sql.c_str());
}

//4、回滚
sql="ROLLBACK";
mysql_query(&mysql,sql.c_str());

//5、提交
sql="COMMIT";
mysql_query(&mysql,sql.c_str());

//6、恢复自动提交
sql="set autocommit=1";
mysql_query(&mysql.sql.c_str());

4、设计一个时间函数

#include<time.h>
#include<sys/timeb.h>//可以精确到毫秒
long getSystemTime()
{
	struct timeb tb;
	ftime(&tb);//获得一个时间给到tb
	//*1000  1s等于1000毫秒
	//tb.time是秒  tb.millitm是毫秒 两个加起来就是毫秒   最终时间是毫秒级别的,/1000就是最终的时间s                                                                                                                                     
	return tb.time * 1000 + tb.millitm;
}

在这里,我们直接使用C++库里面的时间模块

#include<chrono>
using namespace chrono;//这句必须放在using namespace std;前面,要不然会报错的

auto start=systerm_clock::now();
.................
.................

auto end=systerm_clock::now();

auto time= duration_cast<milliseconds> (end-start);

cout<<"...语句花费时间为:"<<time.count()<<"毫秒"<<endl;

cout<<"...语句花费时间为:"<<time.count()./1000<<"秒"<<endl;

5、实验验证时间

单条语句插入 花费25s;多条语句插入花费26s;事务插入语句花费0.69s;

可想而知,在插入1000数据的时候,时间性能差距这么大,可见事务在插入数据的时候是非常有效的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值