关于事务开启与否对数据库插入数据所需时间的影响的讨论
2017-02-10 16:12
323 查看
转载
最近在做sqlite3的二次开发,看到API里面关于事务的时候,萌生了测试一下事务的开启与否对插入数据所需要的时间影响的想法,根据sqlite3的api,在后面测试的时候发现对于sqlite3来说事务的开启与否仅插入1w条数据,时间的差距就已经非常非常明显了,先说下测试环境:ubuntu 12.04, sqlite3
3.7.14.1,测试插入1w条数据。
不开启事务时的测试代码如下:
int insert_no_trans()
{
printf("<---------------------> \n"
"go into function insert_no_trans()\n");
int j = 0;
for (j = 0; j < 10000; j++)
{
sprintf(sql, "INSERT INTO [dev] ([id], [name], [age])\
values (%d, '%s', %d)", j, "JGood", j);
if(SQLITE_OK != sqlite3_exec
(conn, sql, 0, 0, &err_msg))
{
fprintf(stderr, "INSERT ERROR: %s\n", err_msg);
exit(EXIT_FAILURE);
}
}
printf("INSERT all succussfully!\n");
printf("function insert_no_trans() end. \n"
"<---------------------> \n");
return EXIT_SUCCESS;
}
开启事务的测试代码如下:
int insert_with_trans()
{
printf("<---------------------> \n"
"go into function insert_with_trans()\n");
sqlite3_exec(conn, "begin;", 0, 0, 0); //开启事务
int j = 0;
for (j = 0; j < 10000; j++)
{
sprintf(sql, "INSERT INTO [dev] ([id], [name], [age])\
values (%d, '%s', %d)", j, "JGood", j);
if(SQLITE_OK != sqlite3_exec(conn, sql, 0, 0, &err_msg))
{
is_succeed = false; //失败之后把标识设为false
fprintf(stderr, "INSERT ERROR: %s\n", err_msg);
break;
}
相关文章推荐
- 关于事务开启与否对数据库插入数据所需时间的影响的讨论
- 数据库中关于datetime、date 、time数据类型比较,及插入日期时间数据格式
- Java 往数据库插入时间格式的数据
- 关于从sql*plus中往数据库插入数据却查询不到的原因
- [原]ibatis 数据库时间 插入数据
- Yii Framework中插入时间类型数据到数据库
- 开启事务后hibernate缓存自动更新数据到数据库?
- 解决数据库中插入时间丢失时分秒(关于Mi和MM两个见文底)
- c#批量插入数据到数据库【支持事务操作】
- 关于如何将一个数据库中的表的数据插入另一个数据库中
- 使用sql语句向数据库插入数据,不受错误数据影响
- oracle向数据库中插入时间数据
- ibatis 数据库时间 插入数据
- 【基础】关于Java向数据库中插入DateTime类型数据
- 数据库插入数据时间比较
- c#批量插入数据到数据库【支持事务操作】
- 关于若干数据库数据插入性能的对比分析
- ibatis 数据库时间 插入数据
- C# 通过事务向数据库插入多条数据(通过Hashtable存储数据)
- 关于数据库查询一个表中的数据插入到另一个表中