PHP Conference Japan 2024

交易的 API 支援

MySQL 伺服器是否支援交易取決於所使用的儲存引擎。自 MySQL 5.5 起,預設的儲存引擎是 InnoDB。InnoDB 具有完整的 ACID 交易支援。

交易可以使用 SQL 或 API 呼叫來控制。建議使用 API 呼叫來啟用和停用 autocommit 模式,以及提交和回滾交易。

範例 #1 使用 SQL 和 API 設定 autocommit 模式

<?php
mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");

/* 建議:使用 API 控制交易設定 */
$mysqli->autocommit(false);

/* 不會被複製和負載平衡外掛程式監控和識別 */
$mysqli->query('SET AUTOCOMMIT = 0');

可選的功能套件,例如複製和負載平衡外掛程式,可以輕鬆監控 API 呼叫。如果使用 API 呼叫控制交易,複製外掛程式會提供交易感知負載平衡。如果使用 SQL 陳述式設定 autocommit 模式、提交或回滾交易,則無法使用交易感知負載平衡。

範例 #2 提交和回滾

<?php
mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");
$mysqli->autocommit(false);

$mysqli->query("INSERT INTO test(id) VALUES (1)");
$mysqli->rollback();

$mysqli->query("INSERT INTO test(id) VALUES (2)");
$mysqli->commit();

請注意,MySQL 伺服器無法回滾所有陳述式。有些陳述式會導致隱含提交。

另請參閱

新增筆記

使用者貢獻的筆記

此頁面沒有使用者貢獻的筆記。
To Top