作者:angel青彤雪 | 来源:互联网 | 2023-09-05 23:03
导读:今天编程笔记来给各位分享关于php为什么用事务回滚的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、哪位能详细谈谈PHP在MySQL中rollback的使用方法。
2、请教大神 ThinkPHP5 的事务回滚问题
3、php关于mysql数据库简单回滚问题
4、thinkphp可以跨模型使用事务回滚么
哪位能详细谈谈PHP在MySQL中rollback的使用方法。
好像不支持事务回滚
mysql Max版支持
mysql_query('BEGIN');//开始事务
mysql_query('..........');//中间执行其他sql语句
mysql_query('COMMIT');//成功后提交事务
//mysql_query('ROLLBACK');//失败后回滚
上面不是php代码吗
就是用mysql_query执行而已
在当前mysql中虽然出现了事务的支持,但它还很不成熟,所以,呵呵,先观望事务吧,采取其他手段达到事务的效果
比如你想删除或更新一些记录,你可以创建一个临时表或者使用预先建立的备份表,将要将要操作的数据备份下来,当其他操作失败时将这些数据恢复回去。当然实际情况可能更复杂一些。这样做看起来很麻烦,而且效率值得怀疑,不过需要事务处理的地方应该不会很多,所以麻烦一次两次还是可以忍受的。
事务处理本身就不是一个高效的、百分百安全的手段,我们完全可以通过优化表的结构、编写有效的脚本而避免使用事务。关注我也关注
请教大神 ThinkPHP5 的事务回滚问题
请看手册:
使用 transaction 方法操作数据库事务,当发生异常会自动回滚,例如:
自动控制事务处理
Db::transaction(function(){
Db::table('think_user')-find(1);
Db::table('think_user')-delete(1);
});
也可以手动控制事务,例如:
// 启动事务
Db::startTrans();
try{
Db::table('think_user')-find(1);
Db::table('think_user')-delete(1);
// 提交事务
Db::commit();
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
}
注意在事务操作的时候,确保你的数据库连接是相同的。
php关于mysql数据库简单回滚问题
我们经常会遇到操作一张大表,发现操作时间过长或影响在线业务了,想要回退大表操作的场景。在我们停止大表操作之后,等待回滚是一个很漫长的过程,尽管你可能对知道一些缩短时间的方法,处于对生产环境数据完整性的敬畏,也会选择不做介入。最终选择不作为的原因大多源于对操作影响的不确定性。实践出真知,下面针对两种主要提升事务回滚速度的方式进行验证,一种是提升操作可用内存空间,一种是通过停实例,禁用 redo 回滚方式进行进行验证。
仔细阅读过官方手册的同学,一定留意到了对于提升大事务回滚效率,官方提供了两种方法:一是增加 innodb_buffer_pool_size 参数大小,二是合理利用 innodb_force_recovery=3 参数,跳过事务回滚过程。第一种方式比较温和,innodb_buffer_pool_size 参数是可以动态调整的,可行性也较高。第二种方式相较之下较暴力,但效果较好。
两种方式各有自己的优点,第一种方式对线上业务系统影响较小,不会中断在线业务。第二种方式效果更显著,会短暂影响业务连续,回滚所有没有提交的事务。
thinkphp可以跨模型使用事务回滚么
当然可以了,事务是数据库的事务和哪个模型没有关系,需要注意的是事物开启需要在一开始使用事物就全部开启了,如果分开的话,你会发现第二个事物开启会把第一个事物给提交了。
结语:以上就是编程笔记为大家介绍的关于php为什么用事务回滚的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。