首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php + mysql 分布式事务

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元; 事务应该具有4个属性:原子性、一致性、隔离性、持续性; 原子性(atomicity)。...一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。...一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。...分布式事务:分布式事务的参与者、资源管理器、事务管理器等位于不用的节点上,这些不同的节点相互协作共同完成一个具有逻辑完整性的事务。...MySQL XA分为两类,内部XA与外部XA;内部XA用于同一实例下跨多个引擎的事务,由大家熟悉的Binlog作为协调者;外部XA用于跨多MySQL实例的分 布式事务,需要应用层介入作为协调者(崩溃时的悬挂事务

1.5K60
您找到你想要的搜索结果了吗?
是的
没有找到

PHP+Mysqli 事务处理

MYSQL php PHP+Mysqli 事务处理 php+mysqli 事物处理 事物就是如果两条或多条数据只要有一条SQL语句错误,那么已经执行成功的执行回滚操作,把已经生效的SQL语句回滚为原来的值...原来有100元,B也有100元,A向B转账50元,那么就要执行两条SQL语句,一个是A的余额要减50,B的余额要加50, 如果第一条语句成功了,但是第二条语句失败了,那么就会丢失数据了,这个时候就需要事务处理了...mysqli_connect_error()); } $mysqli->set_charset('utf8');//设置数据库字符集 $mysqli->autocommit(false); // 开始事务...true:false;//第二条SQL语句状态 if($status_1 && $_status_2){//判断两条SQL语句状态,如果都为true,则提交事务,否则回滚 $mysqli-...>commit();//提交事务 }else{ $mysqli->rollback();//回滚 } } $mysqli->autocommit(true);//关闭事务 $mysqli

1K10

PHP的PDO事务与自动提交

PHP PDO 事务与自动提交 现在通过 PDO 连接上了,在开始进行查询前,必须先理解 PDO 是如何管理事务的。...自动提交模式意味着,如果数据库支持,运行的每个查询都有它自己的隐式事务,如果数据库不支持事务,则没有。 如果需要一个事务,则必须用PDO::beginTransaction() 方法来启动。...一旦开始了事务,可用PDO::commit()或PDO::rollBack()来完成,这取决于事务中的代码是否运行成功。 注意:PDO 仅在驱动层检查是否具有事务处理能力。...试着在 MySQL 数据库的 MyISAM 数据表中使用事务就是一个很好的例子。 当脚本结束或连接即将被关闭时,如果尚有一个未完成的事务,那么 PDO 将自动回滚该事务。...php try { $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2', array(PDO::ATTR_PERSISTENT = true)

1.2K31

PHP中的PDO操作学习(二)预处理语句及事务

PHP中的PDO操作学习(二)预处理语句及事务 今天这篇文章,我们来简单的学习一下 PDO 中的预处理语句以及事务的使用,它们都是在 PDO 对象下的操作,而且并不复杂,简单的应用都能很容易地实现。...在 PHP中操作数据库的预处理语句 这篇文章中有详细的示例。 事务能力 关于事务想必大家也都有一定的了解,所以在这里也不介绍具体的概念了,我们只看看在 PDO 中事务是如何实现的。...就是这样三个简单的函数,就为我们完成了整个事务操作。关于事务的深入学习我们会在将来深入地研究 MySQL 时再进行探讨。...参考文档: https://www.php.net/manual/zh/pdo.prepare.php https://www.php.net/manual/zh/pdo.begintransaction.php...https://www.php.net/manual/zh/pdo.commit.php https://www.php.net/manual/zh/pdo.rollback.php

95510

PHP中的PDO操作学习(二)预处理语句及事务

此为默认的游标选项,因为此游标最快且是 PHP 中最常用的数据访问模式。关于数据库游标的知识大家可以自行查阅相关的内容。...在 PHP中操作数据库的预处理语句 这篇文章中有详细的示例。 事务能力 关于事务想必大家也都有一定的了解,所以在这里也不介绍具体的概念了,我们只看看在 PDO 中事务是如何实现的。...Joe', 12)"); // 成功插入 $pdo->exec("insert into tran_innodb2 (name, age) values ('Joe', 12)"); // 报错停止整个PHP...$e->getMessage(), PHP_EOL; // Failed: SQLSTATE[42S02]: Base table or view not found: 1146 Table '...就是这样三个简单的函数,就为我们完成了整个事务操作。关于事务的深入学习我们会在将来深入地研究 MySQL 时再进行探讨。

93900

PHP中使用PDO操作事务的一些小测试

$e->getMessage(), PHP_EOL; } tran_myisam 和 tran_myisam2 表都是 MyISAM 类型的表,在这段代码中,我们故意写错了 tran_myisam2 的插入语句...$e->getMessage(), PHP_EOL; } 我们可以打开 sleep(30); 这行代码的注释,也就是在事务提交前暂停 30 秒,然后在 MySQL 中查看 infomation_schema.INNODB_TRX...$e->getMessage(), PHP_EOL; } PHP 会在脚本执行结束后,其实也就是在 $pdo 对象析构时回滚这个事务。也就是说,这里的 SQL 语句是不会执行的。...$e->getMessage(), PHP_EOL; } // innodb try { $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION...$e->getMessage(), PHP_EOL; // Failed: There is already an active transaction } 我们可以看到,第二段事务直接就报错了,内容是

52800

java 事务嵌套_Java事务以及嵌套事务

最近遇到事务的处理,嵌套事务,自己研究,整理一下。 1 先看结论 1、在Java事务中,事务的嵌套,如果有事务成功,那么则都成功,否则都不会成功。...结论:并行事务不存在事务影响 4.2 场景:嵌套相同事务 a) 事务嵌套,在同一个事务中,没有对异常进行处理 @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest...结论:如果事务存在异常,并进行捕获处理,不会影响事务。...4.3 场景:嵌套不同事务 a)事务嵌套,在不同事务中,没有对异常进行处理 @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest public...结论:不同事务中,嵌套的事务,没有对异常进行处理,都不会执行成功。(其实在外部事务中出错,两个也是都不会插入成功数据。)

2.2K10

事务

所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。...《MySQL 技术内幕:InnoDB 存储引擎(第 2 版)》7.7 章这样写到: InnoDB 存储引擎提供了对 XA 事务的支持,并通过 XA 事务来支持分布式事务的实现。...分布式事务指的是允许多个独立的事务资源(transactional resources)参与到一个全局的事务中。事务资源通常是关系型数据库系统,但也可以是其他类型的资源。...全局事务要求在其中的所有参与的事务要么都提交,要么都回滚,这对于事务原有的 ACID 要求又有了提高。...解决幻读的方式主要有以下几种: 将事务隔离级别调整为 SERIALIZABLE 。 在可重复读的事务级别下,给事务操作的这张表添加表锁。

50620

PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句

对于 MySQLi 来说,事务和预处理语句当然是它之所以能够淘汰 MySQL(原始) 扩展的资本。我们之前也已经学习过了 PDO 中关于事务和预处理语句相关的内容。...事务处理 首先,我们还是要让 MySQLi 对于错误的语句也报出异常来。关于这个功能就和 PDO 很不一样了。在 PDO 中,我们直接指定连接的报错属性就可以了。...try { // 开始事务 $mysqli->begin_transaction(); $mysqli->query("insert into tran_innodb (name...然后通过 commint() 方法来提交事务。在这段测试代码中,第二条 SQL 语句是会报错的,于是进入了 catch 中,使用 rollback() 来回滚事务。...预处理语句 总体来说,事务的处理和 PDO 的区别不大,但是预处理语句和 PDO 中的使用的区别就有一些了。首先是我们的 MySQLi 中的占位符只有 ? 问号占位。

2.4K00

PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句

PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句 对于 MySQLi 来说,事务和预处理语句当然是它之所以能够淘汰 MySQL(原始) 扩展的资本。...事务处理 首先,我们还是要让 MySQLi 对于错误的语句也报出异常来。关于这个功能就和 PDO 很不一样了。在 PDO 中,我们直接指定连接的报错属性就可以了。...然后通过 commint() 方法来提交事务。在这段测试代码中,第二条 SQL 语句是会报错的,于是进入了 catch 中,使用 rollback() 来回滚事务。...测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/7.PHP中的MySQLi扩展学习(四)mysqli...的事务与预处理语句.php 参考文档: https://www.php.net/manual/zh/book.mysqli.php

2.1K10

事务

1.事务处理 1.事务的概念 事务是针对数据库的一组操作, 它可以由-一条或多条SQL语句组成。 2.事务的基本操作 在默认情况下,用户执行的每一条SQL语句都会被当成单独的事务自动提交。...COMMIT; 如果不想提交当前事务,可以取消事务(即回滚)。 ROLLBACK; 事务的执行要么成功,要么就返回到事务开始前的状态,这就保证了同一事务操作的同步性和数据的完整性。...MySQL中的事务必须满足A、C、I、D这4个基本特性。 Atomicity: 原子性 一个事务必须被视为一个不可分割的最小工作单元,只有事务中所有的数据库操作都执行成功,才算整个事务执行成功。...Isolation: 隔离性 隔离性是指当一个事务在执行时,不会受到其他事务的影响。保证了未完成事务的所有操作与数据库系统的隔离,直到事务完成为止,才能看到事务的执行结果。...为了保证这些事务之间不受影响,对事务设置隔离级是十分必要的。

50130
领券