日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Inventory Hint

PolarDB提供Inventory Hint,幫助您快速提交、回滾事務。您還可以將Inventory Hint和Statement Queue配合使用,有效提高業務的吞吐能力。

前提條件

PolarDB集群版本需為以下版本之一:

  • PolarDB MySQL版8.0版本且內核小版本需為8.0.1.1.1及以上。

  • PolarDB MySQL版5.7版本且內核小版本需為5.7.1.0.17及以上。

  • PolarDB MySQL版5.6版本。

您可以通過查詢版本號確認集群版本。

背景信息

在電商秒殺活動等業務場景中,減少庫存是一個常見的高并發、串行化的任務模型,PolarDB使用排隊和事務性Hint來控制并發,并快速提交或回滾事務,來提高業務的吞吐能力。

注意事項

PolarDB MySQL版8.0版本的COMMIT_ON_SUCCESSROLLBACK_ON_FAIL語法不能運行在autocommit模式下。示例如下:

UPDATE /*+ ROLLBACK_ON_FAIL */ T
SET c = c - 1
WHERE id = 1
ERROR 7531 (HY000):Inventory transactinal hints didn't allowed in autocommit mode

語法

PolarDB提供的Inventory Hint支持SELECT、UPDATE、INSERT、DELETE語句。

Inventory Hint包括如下三個事務語法:

  • COMMIT_ON_SUCCESS:當前語句執行成功就提交事務。

    示例:

    • PolarDB MySQL版5.6版本

      UPDATE COMMIT_ON_SUCCESS T
      SET c = c - 1
      WHERE id = 1;
    • PolarDB MySQL版5.7和8.0版本

      UPDATE /*+ COMMIT_ON_SUCCESS */ T
      SET c = c - 1
      WHERE id = 1;
  • ROLLBACK_ON_FAIL:當前語句執行失敗就回滾事務。

    示例:

    • PolarDB MySQL版5.6版本

      UPDATE ROLLBACK_ON_FAIL T
      SET c = c - 1
      WHERE id = 1;
    • PolarDB MySQL版5.7和8.0版本

      UPDATE /*+ ROLLBACK_ON_FAIL */ T
      SET c = c - 1
      WHERE id = 1;
  • TARGET_AFFECT_ROW number:如果當前語句影響的行數符合設定的行數則執行成功,否則語句執行失敗。

    假設Target Affect Row的值設為1,如果更新語句實際更新到了一條數據則認為成功,如果更新沒有命中任何記錄則認為失敗。

    示例:

    • PolarDB MySQL版5.6版本

      UPDATE TARGET_AFFECT_ROW 1  T
      SET c = c - 1
      WHERE id = 1;
      ERROR HY000: The affected row number does not match that of user specified.
    • PolarDB MySQL版5.7和8.0版本

      UPDATE /*+ TARGET_AFFECT_ROW(1) */ T
      SET c = c - 1
      WHERE id = 1;
      ERROR HY000: The affected row number does not match that of user specified.

配合Statement Queue使用

UPDATE、INSERT、DELETE語句中的COMMIT_ON_SUCCESSROLLBACK_ON_FAILTARGET_AFFECT_ROW number語法可以和Statement Queue配合使用。

PolarDB MySQL版5.6版本示例如下:

UPDATE COMMIT_ON_SUCCESS POLARDB_STATEMENT_CONCURRENT_QUEUE id ROLLBACK_ON_FAIL TARGET_AFFECT_ROW 1 t
SET col1 = col1 + 1
WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

UPDATE COMMIT_ON_SUCCESS POLARDB_STATEMENT_CONCURRENT_QUEUE 1 ROLLBACK_ON_FAIL TARGET_AFFECT_ROW 1 t
SET col1 = col1 + 1
WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

PolarDB MySQL版5.7和8.0版本示例如下:

UPDATE /*+ COMMIT_ON_SUCCESS ROLLBACK_ON_FAIL TARGET_AFFECT_ROW(1) CCL_QUEUE_VALUE('id') */ t
SET col1 = col1 + 1
WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

UPDATE /*+ COMMIT_ON_SUCCESS ROLLBACK_ON_FAIL TARGET_AFFECT_ROW(1) CCL_QUEUE_VALUE(1) */ t
SET col1 = col1 + 1
WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0