在测试之前,先连接数据库以及创建表格
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数据的时候,时间性能差距这么大,可见事务在插入数据的时候是非常有效的