事务提交大量sql与合并提交大量sql效率对比

事务提交5000条update,耗时:13.79 秒,内存占用:17.88 MB(大量时间消耗在Query生成sql语句上)

$startTime  = microtime(true);
$startMemory = memory_get_usage();
$transaction = \Yii::$app->db->beginTransaction();
for($i=0; $i< 5000; ++$i) {
    \Yii::$app->db->createCommand()->update(UserMenu::tableName(), ['menu_id' => 4], ['user_id' => $id, 'menu_id' => 3])->execute();
}
$transaction->commit();
$endTime    = microtime(true);
$runtime    = number_format($endTime - $startTime, 2); //秒
$endMemory  = memory_get_usage();
$usedMemory = number_format(($endMemory - $startMemory) / 1024 / 1024, 2);    //MB

echo("耗时:$runtime 秒,内存占用:$usedMemory MB");

事务提交5000条update,耗时:9.59 秒,内存占用:16.66 MB(一次性生成sql语句)

$transaction = \Yii::$app->db->beginTransaction();
$sql = \Yii::$app->db->createCommand()->update(UserMenu::tableName(), ['menu_id' => 4], ['user_id' => $id, 'menu_id' => 3])->getRawSql().';';
$startTime  = microtime(true);
$startMemory = memory_get_usage();
for($i=0; $i< 5000; ++$i) {
    \Yii::$app->db->createCommand($sql)->execute();
}
$transaction->commit();

$endTime    = microtime(true);
$runtime    = number_format($endTime - $startTime, 2); //秒
$endMemory  = memory_get_usage();
$usedMemory = number_format(($endMemory - $startMemory) / 1024 / 1024, 2);    //MB

echo("耗时:$runtime 秒,内存占用:$usedMemory MB");


合并sql提交5000条update,耗时:13.05 秒,内存占用:0.37 MB(主要时间都耗在Query生成sql语句上了)

$startTime  = microtime(true);
$startMemory = memory_get_usage();
$transaction = \Yii::$app->db->beginTransaction();
$sql = '';
for($i=0; $i< 5000; ++$i) {
    $sql .= \Yii::$app->db->createCommand()->update(UserMenu::tableName(), ['menu_id' => 4], ['user_id' => $id, 'menu_id' => 3])->getRawSql().';';
}
\Yii::$app->db->createCommand($sql)->execute();
$transaction->commit();
$endTime    = microtime(true);
$runtime    = number_format($endTime - $startTime, 2); //秒
$endMemory  = memory_get_usage();
$usedMemory = number_format(($endMemory - $startMemory) / 1024 / 1024, 2);    //MB

echo("耗时:$runtime 秒,内存占用:$usedMemory MB");


合并sql提交5000条update,耗时:4.84 秒,内存占用:0.00 MB(一次性生成sql语句)

$transaction = \Yii::$app->db->beginTransaction();
$sql = '';
for($i=0; $i< 5000; ++$i) {
    $sql .= \Yii::$app->db->createCommand()->update(UserMenu::tableName(), ['menu_id' => 4], ['user_id' => $id, 'menu_id' => 3])->getRawSql().';';
}
$startTime  = microtime(true);
$startMemory = memory_get_usage();
\Yii::$app->db->createCommand($sql)->execute();
$transaction->commit();
$endTime    = microtime(true);
$runtime    = number_format($endTime - $startTime, 2); //秒
$endMemory  = memory_get_usage();
$usedMemory = number_format(($endMemory - $startMemory) / 1024 / 1024, 2);    //MB

echo("耗时:$runtime 秒,内存占用:$usedMemory MB");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LabVIEW SQL数据包是一种以LabVIEW为基础的软件工具,用于在LabVIEW环境中进行与SQL数据库交互的操作。该数据包提供了一系列的功能和工具,可以方便地连接、查询和操作SQL数据库。 通过LabVIEW SQL数据包,用户可以使用LabVIEW图形化编程环境来进行数据库操作,无需编写复杂的SQL语句。用户可以轻松地创建数据库连接、执行查询和更新操作,实现对数据库的增删改查。 LabVIEW SQL数据包提供了不同的功能模块,包括数据库连接模块、查询模块和更新模块等。用户可以根据自己的需求选择不同的模块进行操作。例如,使用数据库连接模块可以连接到SQL数据库,并建立起与数据库的通信;使用查询模块可以执行SQL查询语句,获取所需的数据;使用更新模块可以执行SQL更新语句,修改数据库中的数据。 此外,LabVIEW SQL数据包还支持对数据库进行事务管理,可以实现数据的一致性和完整性。用户可以通过开启事务提交事务或回滚事务等操作来控制数据库的操作过程,确保数据操作的准确性和安全性。 LabVIEW SQL数据包的使用非常灵活和便捷,能够与其他LabVIEW模块和工具进行无缝集成。用户可以将数据库的查询结果和LabVIEW中的其他数据进行合并和处理,实现更加复杂的数据分析和应用开发。 总之,LabVIEW SQL数据包为LabVIEW用户提供了一种方便、快捷的方式来进行与SQL数据库的交互,能够满足用户对数据库操作的各种需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值