文件首頁
MySQL NDB Cluster API 開發人員指南
相關文件 下載本手冊
PDF (美式信紙) - 3.6Mb
PDF (A4) - 3.6Mb


2.3.25 NdbTransaction 類別

本節提供有關 NdbTransaction 類別的資訊。

NdbTransaction 類別概觀

父類別

子類別

描述

交易在 NDB API 中由 NdbTransaction 物件表示,該物件屬於 Ndb 物件,並使用 Ndb::startTransaction() 建立。交易包含由 NdbOperation 類別,或其子類別之一 — NdbScanOperationNdbIndexOperationNdbIndexScanOperation 所表示的作業清單。每個作業都只存取一個資料表。

方法

下表列出此類別的公用方法,以及每個方法的用途或用法

表 2.66 NdbTransaction 類別方法和描述

名稱 描述
close() 關閉交易
commitStatus() 取得交易的提交狀態
deleteTuple() 使用 NdbRecord 刪除元組
execute() 執行交易
executePendingBlobOps() 如果交易包含尚未執行的指定類型的任何 blob 部分作業,則以 NoCommit 模式執行交易。
getGCI() 取得交易的全域檢查點 ID (GCI)
getMaxPendingBlobReadBytes() 取得目前的 blob 讀取批次大小
getMaxPendingBlobWriteBytes() 取得目前的 blob 寫入批次大小
getNdbError() 取得最近的錯誤
getNdbErrorLine() 取得發生最近錯誤的行號
getNdbErrorOperation() 取得導致錯誤的最近作業
getNextCompletedOperation() 取得已執行的作業;用於尋找錯誤
getNdbOperation() 取得 NdbOperation
getNdbScanOperation() 取得 NdbScanOperation
getNdbIndexOperation() 取得 NdbIndexOperation
getNdbIndexScanOperation() 取得 NdbIndexScanOperation
getTransactionId() 取得交易 ID
insertTuple() 使用 NdbRecord 插入元組
readTuple() 使用 NdbRecord 讀取元組
refresh() 防止交易逾時
releaseLockHandle() 在不再需要 NdbLockHandle 物件時釋放它
scanIndex() 使用 NdbRecord 執行索引掃描
scanTable() 使用 NdbRecord 執行資料表掃描
setMaxPendingBlobReadBytes() 設定 blob 讀取批次大小
setMaxPendingBlobWriteBytes() 設定 blob 寫入批次大小
setSchemaObjectOwnerChecks() 啟用或停用結構描述物件所有權檢查
unlock() 在目前交易上建立解除鎖定作業
updateTuple() 使用 NdbRecord 更新元組
writeTuple() 使用 NdbRecord 寫入元組

方法 readTuple()insertTuple()updateTuple()writeTuple()deleteTuple()scanTable()scanIndex() 需要使用 NdbRecord

類型

NdbTransaction 定義了 2 個公用類型,如下表所示

表 2.67:NdbTransaction 類別類型和描述

名稱 描述
CommitStatusType() 描述交易的提交狀態
ExecType() 決定交易應該被提交還是回滾

使用交易。 取得 NdbTransaction 物件後,其使用方式如下

  1. 使用下列任何一種方法將操作分配給交易

    • getNdbOperation()

    • getNdbScanOperation()

    • getNdbIndexOperation()

    • getNdbIndexScanOperation()

    呼叫其中一種方法來定義操作。可以在同一個 NdbTransaction 物件上定義多個操作,在這種情況下,它們會並行執行。當所有操作都定義完成後,execute() 方法會將它們傳送至 NDB 核心以供執行。

  2. NDB 核心完成先前定義的所有操作的執行時,execute() 方法會傳回。

    所有已配置的操作都應在呼叫 execute() 方法之前正確定義。

  3. execute() 以這裡列出的三種模式之一執行

    • NdbTransaction::NoCommit:執行操作而不提交它們。

    • NdbTransaction::Commit:執行任何剩餘的操作,然後提交完整的交易。

    • NdbTransaction::Rollback:回滾整個交易。

    execute() 還配備了一個額外的錯誤處理參數,它提供了以下兩個選項

    • NdbOperation::AbortOnError:任何錯誤都會導致交易中止。這是預設行為。

    • NdbOperation::AO_IgnoreError:即使為該交易定義的一個或多個操作失敗,交易也會繼續執行。

NdbTransaction::close()

描述

此方法會關閉交易。它等同於呼叫 Ndb::closeTransaction()

如果交易尚未提交,則在呼叫此方法時會中止交易。請參閱 Ndb::startTransaction()

簽名
void close
    (
      void
    )
參數

.

傳回值

.

NdbTransaction::commitStatus()

描述

此方法會取得交易的提交狀態。

簽名
CommitStatusType commitStatus
    (
      void
    )
參數

.

傳回值

交易的提交狀態,類型為 CommitStatusType 的值。

NdbTransaction::CommitStatusType

本節提供有關 CommitStatusType 資料類型的資訊。

描述

此類型用於描述交易的提交狀態。

列舉值

下表顯示了可能的值以及描述

表 2.68:NdbTransaction::CommitStatusType 值和描述

名稱 描述
NotStarted 交易尚未開始。
Started 交易已開始,但尚未提交。
Committed 交易已完成,並且已提交。
Aborted 交易已中止。
NeedAbort 交易遇到錯誤,但尚未中止。

可以使用 commitStatus() 讀取交易的提交狀態。

NdbTransaction::deleteTuple()

描述

使用 NdbRecord 刪除元組。

簽名
const NdbOperation* deleteTuple
    (
      const NdbRecord* key_rec,
      const char* key_row,
      const NdbRecord* result_rec,
      char* result_row,
      const unsigned char* result_mask = 0,
      const NdbOperation::OperationOptions* opts = 0,
      Uint32 sizeOfOptions = 0
    )
參數

此方法採用下列參數

  • key_rec 是指向表格或索引的 NdbRecord 的指標。如果是在表格上,則刪除操作會使用主鍵;如果是在索引上,則操作會使用唯一鍵。在任何一種情況下,key_rec 都必須包含索引的所有欄位。

  • 傳遞給此方法的 key_row 定義了要刪除的元組的主鍵或唯一鍵,並且必須保持有效,直到呼叫 execute() 為止。

  • result_rec 是要使用的 NdbRecord

  • 如果要傳回任何屬性,result_row 可以是 NULL

  • 如果 result_mask 不是 NULL,則定義要讀取並傳回給用戶端的屬性子集。遮罩會被複製,因此在呼叫此方法傳回後,不需要保持有效。

  • OperationOptions (opts) 可用於提供更精細的操作定義控制。傳遞具有旗標的 OperationOptions 結構,這些旗標指出存在哪些操作定義選項。並非所有操作類型都支援所有操作選項;對於每種操作類型支援的選項,請參閱 NdbTransaction::readTuple()

  • 選用的 sizeOfOptions 參數提供此介面與先前 OperationOptions 結構定義的向後相容性。如果介面實作偵測到不尋常的大小,則可以使用此參數來決定如何解譯傳遞的 OperationOptions 結構。若要啟用此功能,呼叫者應傳遞 sizeof(NdbOperation::OperationOptions) 作為此引數的值。

傳回值

指向代表此寫入操作的 NdbOperationconst 指標。如有必要,可以檢查操作是否有錯誤。

NdbTransaction::ExecType

本節提供有關 ExecType 資料類型的資訊。

描述

此類型設定交易的執行類型;也就是說,它應該執行、執行並提交,還是中止。它用作 execute() 方法的參數。(請參閱 NdbTransaction::execute()。)

列舉值

下表顯示了可能的值以及描述

表 2.69:NdbTransaction::ExecType 值和描述

名稱 描述
NoCommit 交易應該執行,但不提交。
Commit 交易應該執行並提交。
Rollback 交易應該回滾。

NdbTransaction::execute()

描述

此方法用於執行交易。

簽名
int execute
    (
      ExecType execType,
      NdbOperation::AbortOption abortOption = NdbOperation::DefaultAbortOption,
      int force = 0
    )
參數

execute() 方法採用這裡列出的三個參數

傳回值

成功時傳回 0,失敗時傳回 -1。交易未中止的事實並不一定表示每個操作都成功;您必須單獨檢查每個操作是否有錯誤。

此方法僅在交易中止時報告失敗。在這種情況下,會設定交易的錯誤資訊以反映實際的錯誤代碼和類別。

如果有可能發生 NoDataFound 錯誤,您必須明確檢查它,如本範例所示

Ndb_cluster_connection myConnection;

if( myConnection.connect(4, 5, 1) )
{
  cout << "Unable to connect to cluster within 30 secs." << endl;
  exit(-1);
}

Ndb myNdb(&myConnection, "test");

//  define operations...

myTransaction = myNdb->startTransaction();

if(myTransaction->getNdbError().classification == NdbError:NoDataFound)
{
  cout << "No records found." << endl;
  //  ...
}

myNdb->closeTransaction(myTransaction);

您應該知道,成功的 execute() 呼叫僅保證掃描請求已組裝並傳送至交易協調器,且沒有任何錯誤;它不會等待從資料節點傳回的任何訊號,然後才傳回。

NdbTransaction::executePendingBlobOps()

描述

如果仍有任何尚未執行的給定類型的 blob 部分操作,則此方法會以等於 NoCommitExecType 來執行交易。

簽名
int executePendingBlobOps
  (
    Uint8 flags = 0xFF
  )
參數

flags 參數是位元運算 OR 的結果,等於 1 << optype,其中 optype 是一個 NdbOperation::Type。預設值對應於 NdbOperation::Type::PrimaryKeyAccess

傳回值

成功時傳回 0,失敗時傳回 -1。交易未中止的事實並不一定表示每個操作都成功;您必須單獨檢查每個操作是否有錯誤。

NdbTransaction::getGCI()

描述

此方法會擷取交易的全域檢查點 ID (GCI)。

每個已提交的交易都屬於一個 GCI。當發生全域檢查點時,已提交交易的記錄會儲存在磁碟上。

透過比較交易的 GCI 與重新啟動的 NDB Cluster 中還原的最新 GCI 值,您可以判斷是否已還原該交易。

此方法無法判斷具有此 GCI 的全域檢查點是否已儲存到磁碟上。

掃描交易的 GCI 是未定義的,因為掃描交易中不會執行任何更新。

在以 ExecType::Commit 呼叫 execute() 之前,沒有可用的 GCI。

簽名
int getGCI
    (
      void
    )
參數

.

傳回值

交易的 GCI,如果沒有可用的,則為 -1

NdbTransaction::getMaxPendingBlobReadBytes()

描述

取得 blob 讀取操作的目前批次大小 (以位元組為單位)。當在給定交易中要讀取的 blob 資料量超過此值時,將執行該交易的所有待處理 blob 讀取操作。

簽名
Uint32 getMaxPendingBlobReadBytes
    (
      void
    ) const
參數

.

傳回值

目前的 blob 讀取批次大小,以位元組為單位。如需更多資訊,請參閱 NdbTransaction::setMaxPendingBlobReadBytes()

NdbTransaction::getMaxPendingBlobWriteBytes()

描述

取得 blob 寫入操作的目前批次大小 (以位元組為單位)。當在給定交易中要寫入的 blob 資料量超過此值時,將執行該交易的所有待處理 blob 寫入操作。

簽名
Uint32 getMaxPendingBlobWriteBytes
    (
      void
    ) const
參數

.

傳回值

目前的 blob 寫入批次大小,以位元組為單位。如需更多資訊,請參閱 NdbTransaction::setMaxPendingBlobWriteBytes()

NdbTransaction::getNdbError()

描述

此方法用於取得最近的錯誤 (NdbError)。

簽名
const NdbError& getNdbError
    (
      void
    ) const
參數

.

傳回值

NdbError 物件的參考。

如需交易中處理錯誤的其他資訊,請參閱 第 1.4.2.3.6 節,「錯誤處理」

NdbTransaction::getNdbErrorLine()

描述

此方法會傳回發生最近錯誤的行號。

簽名
int getNdbErrorLine
    (
      void
    )
參數

.

傳回值

最近錯誤的行號。

如需交易中處理錯誤的其他資訊,請參閱 第 1.4.2.3.6 節,「錯誤處理」

NdbTransaction::getNdbErrorOperation()

描述

此方法會擷取造成錯誤的操作。

若要取得有關實際錯誤的更多資訊,請使用 getNdbErrorOperation() 所傳回的 NdbOperation 物件的 NdbOperation::getNdbError() 方法。

簽名
NdbOperation* getNdbErrorOperation
    (
      void
    )
參數

.

傳回值

指向 NdbOperation 的指標。

如需交易中處理錯誤的其他資訊,請參閱 第 1.4.2.3.6 節,「錯誤處理」

NdbTransaction::getNdbIndexOperation()

描述

此方法用於建立與給定表格關聯的 NdbIndexOperation

相同交易中的所有索引操作都必須使用此方法初始化。操作必須在執行之前定義。

簽名
NdbIndexOperation* getNdbIndexOperation
    (
      const NdbDictionary::Index* index
    )
參數

要執行操作的 Index 物件。

傳回值

指向新的 NdbIndexOperation 的指標。

NdbTransaction::getNdbIndexScanOperation()

描述

此方法用於建立與給定表格關聯的 NdbIndexScanOperation

相同交易中的所有索引掃描操作都必須使用此方法初始化。操作必須在執行之前定義。

簽名
NdbIndexScanOperation* getNdbIndexScanOperation
    (
      const NdbDictionary::Index* index
    )
參數

要執行操作的 Index 物件。

傳回值

指向新的 NdbIndexScanOperation 的指標。

NdbTransaction::getNdbOperation()

描述

此方法用於建立與給定表格關聯的 NdbOperation

相同交易中的所有操作都必須使用此方法初始化。操作必須在執行之前定義。

簽名
NdbOperation* getNdbOperation
    (
      const NdbDictionary::Table* table
    )
參數

要執行操作的 Table 物件。

傳回值

指向新的 NdbOperation 的指標。

NdbTransaction::getNdbScanOperation()

描述

此方法用於建立與給定表格關聯的 NdbScanOperation

相同交易中的所有掃描操作都必須使用此方法初始化。操作必須在執行之前定義。

簽名
NdbScanOperation* getNdbScanOperation
    (
      const NdbDictionary::Table* table
    )
參數

要執行操作的 Table 物件。

傳回值

指向新的 NdbScanOperation 的指標。

NdbTransaction::getNextCompletedOperation()

描述

此方法用於擷取交易的已完成操作。它通常用於擷取屬於給定交易的所有操作,以檢查錯誤。

NdbTransaction::getNextCompletedOperation(NULL) 會傳回交易的第一個 NdbOperation 物件;NdbTransaction::getNextCompletedOperation(myOp) 會傳回在 NdbOperation myOp 之後定義的 NdbOperation 物件。

此方法僅應在交易執行之後,但在交易關閉之前使用。

簽名
const NdbOperation* getNextCompletedOperation
    (
      const NdbOperation* op
    ) const
參數

此方法需要一個參數 op,它是一個操作 (NdbOperation 物件),或 NULL

傳回值

op 之後的操作,如果使用 NULL 呼叫 getNextCompletedOperation(),則為為交易定義的第一個操作。

NdbTransaction::getTransactionId()

描述

此方法用於取得交易 ID。

簽名
Uint64 getTransactionId
    (
      void
    )
參數

.

傳回值

交易 ID,作為一個不帶正負號的 64 位元整數。

NdbTransaction::insertTuple()

描述

使用 NdbRecord 插入元組。

簽名
const NdbOperation* insertTuple
    (
      const NdbRecord* key_rec,
      const char* key_row,
      const NdbRecord* attr_rec,
      const char* attr_row,
      const unsigned char* mask = 0,
      const NdbOperation::OperationOptions* opts = 0,
      Uint32 sizeOfOptions = 0
    )
const NdbOperation* insertTuple
    (
      const NdbRecord* combined_rec,
      const char* combined_row,
      const unsigned char* mask = 0,
      const NdbOperation::OperationOptions* opts = 0,
      Uint32 sizeOfOptions = 0
    )
參數

insertTuple() 採用下列參數

  • 指向 NdbRecord 的指標,指示要插入的記錄 (key_rec)。

    也可以使用單個 NdbRecord 指標和單個 char 指標 (combined_rec, combined_row) 呼叫此方法,其中單個 NdbRecord 代表記錄和屬性與資料。

  • 要插入的資料列 (key_row)。

  • 指向 NdbRecord 的指標,指示要插入的屬性 (attr_rec)。

  • 要作為屬性插入的資料列 (attr_row)。

  • 可用於篩選要插入的欄位的 mask

  • OperationOptions (opts) 可用於提供更精細的操作定義控制。傳遞具有旗標的 OperationOptions 結構,這些旗標指出存在哪些操作定義選項。並非所有操作類型都支援所有操作選項;對於每種操作類型支援的選項,請參閱 NdbTransaction::readTuple()

  • 可選的 sizeOfOptions 參數用於保留此介面與先前 OperationOptions 結構定義的向後相容性。如果介面實作偵測到不尋常的大小,則可以使用此參數來判斷如何解譯傳遞的 OperationOptions 結構。若要啟用此功能,呼叫者應傳遞 sizeof(NdbOperation::OperationOptions) 作為此引數的值。

傳回值

指向表示此插入操作的 NdbOperationconst 指標。

NdbTransaction::readTuple()

描述

此方法使用 NdbRecord 物件讀取元組。

簽名
const NdbOperation* readTuple
    (
      const NdbRecord* key_rec,
      const char* key_row,
      const NdbRecord* result_rec,
      char* result_row,
      NdbOperation::LockMode lock_mode = NdbOperation::LM_Read,
      const unsigned char* result_mask = 0,
      const NdbOperation::OperationOptions* opts = 0,
      Uint32 sizeOfOptions = 0
    )
參數

此方法採用下列參數

  • key_rec 是指向表格或索引的 NdbRecord 的指標。如果在表格上,則該操作使用主索引鍵;如果在索引上,則該操作使用唯一索引鍵。在任一情況下,key_rec 都必須包含索引鍵的所有欄位。

  • 傳遞給此方法的 key_row 定義受影響元組的主索引鍵或唯一索引鍵,並且必須保持有效直到呼叫 execute() 為止。

    如果 mask 不是 NULL,則定義要讀取、更新或插入的屬性子集。只有在設定 (mask[attrId >> 3] & (1<<(attrId & 7))) 時,才會影響該欄位。mask 會由方法複製,因此不需要在呼叫傳回之後保持有效。

  • result_rec 是指向用於保存結果的 NdbRecord 的指標

  • result_row 定義結果資料的緩衝區。

  • lock_mode 指定操作生效的鎖定模式。如需允許的值和其他資訊,請參閱 NdbOperation::LockMode

  • result_mask 定義要讀取的屬性子集。只有在設定 mask[attrId >> 3] & (1<<(attrId & 7)) 時,才會影響該欄位。mask 會被複製,因此不需要在方法呼叫傳回之後保持有效。

  • 可使用 OperationOptions (opts) 更精細地控制操作定義。 OperationOptions 結構會傳遞帶有旗標,指出存在哪些操作定義選項。並非所有操作類型都支援所有操作選項;下表顯示每種操作類型支援的選項。

    表 2.70 NdbTransaction::readTuple() 的 OperationOptions (opts) 參數的操作類型,以及每種類型支援的操作選項

    操作類型 (方法) OperationOptions 支援的旗標
    readTuple() OO_ABORTOPTIONOO_GETVALUEOO_PARTITION_IDOO_INTERPRETED
    insertTuple() OO_ABORTOPTIONOO_SETVALUEOO_PARTITION_IDOO_ANYVALUE
    updateTuple() OO_ABORTOPTIONOO_SETVALUEOO_PARTITION_IDOO_INTERPRETEDOO_ANYVALUE
    writeTuple() OO_ABORTOPTIONOO_SETVALUEOO_PARTITION_IDOO_ANYVALUE
    deleteTuple() OO_ABORTOPTIONOO_GETVALUEOO_PARTITION_IDOO_INTERPRETEDOO_ANYVALUE

  • 可選的 sizeOfOptions 參數用於保留此介面與先前 OperationOptions 結構定義的向後相容性。如果介面實作偵測到不尋常的大小,則可以使用此參數來判斷如何解譯傳遞的 OperationOptions 結構。若要啟用此功能,呼叫者應傳遞 sizeof(NdbOperation::OperationOptions) 作為此引數的值。

傳回值

指向代表此讀取操作的 NdbOperation 的指標(可用於檢查錯誤)。

NdbTransaction::refresh()

描述

此方法會更新交易的逾時計數器,因此可避免因交易逾時而中止。

不建議鎖定記錄並長時間維持鎖定,因為這會影響其他交易。

簽名
int refresh
    (
      void
    )
參數

.

傳回值

成功時傳回 0,失敗時傳回 -1

NdbTransaction::releaseLockHandle()

描述

當不再需要鎖定控制代碼時,此方法用於釋放鎖定控制代碼(請參閱 NdbOperation::getLockHandle)。對於 NdbRecord 主索引鍵讀取操作,必須在執行相關聯的讀取操作後才能呼叫此方法。

當關閉交易時,會釋放與指定交易相關聯的所有鎖定控制代碼。

簽名
int releaseLockHandle
    (
      const NdbLockHandle* lockHandle
    )
參數

要釋放的 NdbLockHandle 物件。

傳回值

成功時傳回 0。

NdbTransaction::scanIndex()

描述

對資料表執行索引範圍掃描,並可選擇是否排序。

簽名
NdbIndexScanOperation* scanIndex
    (
      const NdbRecord* key_record,
      const NdbRecord* result_record,
      NdbOperation::LockMode lock_mode = NdbOperation::LM_Read,
      const unsigned char* result_mask = 0,
      const NdbIndexScanOperation::IndexBound* bound = 0,
      const NdbScanOperation::ScanOptions* options = 0,
      Uint32 sizeOfOptions = 0
    )
參數
  • key_record 描述要掃描的索引。它必須是索引的索引鍵記錄;也就是說,它必須至少指定索引的所有索引鍵欄。 key_record 必須從要掃描的索引建立(而不是從基礎資料表)。

  • result_record 描述要從掃描傳回的列。對於排序的索引掃描,result_record 必須是要掃描索引的索引鍵記錄;也就是說,它必須至少包含索引中的所有欄(NDB API 需要完整的索引鍵,才能合併排序從每個片段傳回的排序列)。

    key_record 類似,result_record 必須從基礎資料表建立,而不是從要掃描的索引建立。在掃描操作關閉之前,key_recordresult_record 這兩個 NdbRecord 結構都必須保持就緒狀態。

  • result_mask 指標是選用的。如果存在此指標,則只會擷取 result_mask 中對應位元(依屬性 ID 順序)設定的欄。 result_mask 會在內部複製,因此與 result_record 不同,在叫用 execute() 時,它不必有效。

  • 可以在此呼叫中或在另行呼叫 NdbIndexScanOperation::setBound() 時指定單一 IndexBound。若要執行多範圍讀取,ScanOptions 結構中的 scan_flags 必須包含 SF_MULTIRANGE。可以使用連續呼叫 NdbIndexScanOperation::setBound() 來新增其他界限。

    若要指定等號界限,請使用相同的列指標作為 low_keyhigh_key,並設定低和高包含位元。

    對於多範圍掃描,low_keyhigh_key 指標必須是唯一的。換句話說,不允許在單次掃描中為數個不同的範圍界限重複使用相同的列緩衝區。但是,允許使用相同的列指標作為 low_keyhigh_key,以便指定等號界限;在 scanIndex() 方法傳回後,也允許重複使用這些列,也就是說,它們不必保持有效,直到 execute() 時間(與 NdbRecord 指標不同)。

  • 若要指定其他選項,請傳遞 ScanOptions 結構。

  • 存在 sizeOfOptions,是為了啟用此介面的回溯相容性。此參數會指出用戶端編譯時 ScanOptions 結構的大小,並可偵測到舊樣式 ScanOptions 結構的使用。如果不需要此功能,則可以將此引數設定為 0。

傳回值

目前的 NdbIndexScanOperation,可用於錯誤檢查。

NdbTransaction::scanTable()

描述

此方法會使用 NdbRecord 物件來讀取欄資料,以執行資料表掃描。

簽名
NdbScanOperation* scanTable
    (
      const NdbRecord* result_record,
      NdbOperation::LockMode lock_mode = NdbOperation::LM_Read,
      const unsigned char* result_mask = 0,
      Uint32 scan_flags = 0,
      Uint32 parallel = 0,
      Uint32 batch = 0
    )
參數

scanTable() 方法採用下列參數

  • 指向 NdbRecord 的指標,用於儲存結果。此 result_record 必須保持有效,直到 execute() 呼叫完成後。

  • 操作生效的 lock_mode。如需允許的值和其他資訊,請參閱 NdbOperation::LockMode

  • result_mask 指標是選用的。如果存在此指標,則只會擷取 result_mask 中對應位元(依屬性 ID 順序)設定的欄。 result_mask 會在內部複製,因此與 result_record 不同,在叫用 execute() 時,它不必有效。

  • scan_flags 可用於為掃描強制執行排序和排序條件。如需允許值的清單,請參閱 NdbScanOperation::ScanFlag

  • parallel 引數是所需的平行處理,或 0 表示最大平行處理(平行接收所有片段的列),此為預設值。

  • batch 決定是否採用批次處理。預設值為 0(關閉)。

傳回值

指向代表此掃描的 NdbScanOperation 的指標。如有必要,可以檢查操作是否有錯誤。

NdbTransaction::setMaxPendingBlobReadBytes()

描述

設定 blob 讀取操作的批次大小(以位元組為單位)。當給定交易中要讀取的 blob 資料量超過此數量時,將會執行所有交易的擱置 blob 讀取操作。

簽名
void setMaxPendingBlobReadBytes
    (
      Uint32 bytes
    )
參數

批次大小,以 bytes 的數量表示。使用 0 會停用 blob 讀取批次處理,此為預設行為(為了回溯相容性)。

傳回值

.

注意

也可以使用 MySQL 伺服器的 --ndb-blob-read-batch-bytes 選項及其相關聯的 MySQL 伺服器系統變數,在 mysql 用戶端和其他 MySQL 用戶端應用程式中控制 blob 讀取批次處理。

NdbTransaction::setMaxPendingBlobWriteBytes()

描述

設定 blob 寫入操作的批次大小(以位元組為單位)。當給定交易中要寫入的 blob 資料量超過此數量時,將會執行所有交易的擱置 blob 寫入操作。

簽名
void setMaxPendingBlobWriteBytes
    (
      Uint32 bytes
    )
參數

批次大小,以 bytes 的數量表示。使用 0 會停用 blob 寫入批次處理,此為預設行為(為了回溯相容性)。

傳回值

.

注意

在 NDB 8.0.30 及更新版本中,也可以藉由將 MySQL 伺服器的 ndb_replica_blob_write_batch_bytes 伺服器系統變數設定為適當的值,在 mysql 用戶端和其他 MySQL 用戶端應用程式中控制 blob 寫入批次處理。您應注意,當 ndb_replica_blob_write_batch_bytes 未設定時,有效的 blob 批次大小(也就是 blob 欄要寫入的最大擱置位元組數)是由 ndb_replica_blob_write_batch_bytes 的預設值和 --ndb-blob-write-batch-bytes MySQL 伺服器選項設定的值所決定的最大值。因此,您應該使用 ndb_replica_blob_write_batch_bytes,而不是 --ndb-blob-write-batch-bytes

在 NDB 8.0.30 之前,您必須使用 --ndb-blob-write-batch-bytes 選項或其相關聯的 MySQL 伺服器系統變數之一,才能從 mysql 或其他 MySQL 用戶端程式設定 blob 批次大小。

NdbTransaction::setSchemaObjectOwnerChecks()

描述

當使用多個 Ndb_cluster_connection 物件時,啟用或停用結構描述物件所有權檢查。啟用此檢查時,會檢查此交易使用的物件,以確定它們屬於此連線擁有的 NdbDictionary。這是透過從連線擷取相同名稱的結構描述物件,並將這些物件與傳遞給交易的結構描述物件進行比較來完成的。如果它們不相符,則會傳回錯誤。

此方法可用於偵錯用途。(錯誤 #19875977) 您應注意,啟用此檢查會產生效能損耗,因此您應避免在生產環境中執行此操作。

簽名
void setSchemaObjOwnerChecks
    (
      bool runChecks
    )
參數

單一參數 runChecks。使用 true 啟用所有權檢查,使用 false 停用所有權檢查。

傳回值

.

NdbTransaction::unlock()

描述

此方法會在目前的交易上建立解除鎖定操作;執行時,解除鎖定操作會移除方法傳遞的 NdbLockHandle 參考的鎖定(請參閱 NdbOperation::getLockHandle)。

簽名
const NdbOperation* unlock
    (
      const NdbLockHandle* lockHandle,
      NdbOperation::AbortOption ao = NdbOperation::DefaultAbortOption
    )
參數

指向鎖定控制代碼的指標;此外,可選擇性地傳遞 AbortOptionao

如果解除鎖定操作失敗 (例如,因為該列已被解除鎖定),AbortOption 會指定如何處理這種情況,預設情況下,錯誤會導致交易中止。

傳回值

指向 NdbOperation 的指標 (已建立的解除鎖定操作)。

NdbTransaction::updateTuple()

描述

使用 NdbRecord 物件更新元組。

簽名
const NdbOperation* updateTuple
    (
      const NdbRecord* key_rec,
      const char* key_row,
      const NdbRecord* attr_rec,
      const char* attr_row,
      const unsigned char* mask = 0,
      const NdbOperation::OperationOptions* opts = 0,
      Uint32 sizeOfOptions = 0
    )
參數

updateTuple() 接受以下參數

  • key_rec 是指向表格或索引的 NdbRecord 的指標。如果在表格上,則該操作使用主索引鍵;如果在索引上,則該操作使用唯一索引鍵。在任一情況下,key_rec 都必須包含索引鍵的所有欄位。

  • 傳遞給此方法的 key_row 定義受影響元組的主索引鍵或唯一索引鍵,並且必須保持有效直到呼叫 execute() 為止。

  • attr_rec 是參考要更新屬性的 NdbRecord

    注意

    對於唯一索引操作,attr_rec 必須參照索引的基礎資料表,而不是索引本身。

  • attr_row 是包含更新新資料的緩衝區。

  • 如果 mask 不是 NULL,則定義要更新的屬性子集。遮罩會被複製,因此在呼叫此方法返回後不需要保持有效。

  • OperationOptions (opts) 可用於提供更精細的操作定義控制。傳遞具有旗標的 OperationOptions 結構,這些旗標指出存在哪些操作定義選項。並非所有操作類型都支援所有操作選項;對於每種操作類型支援的選項,請參閱 NdbTransaction::readTuple()

  • 可選的 sizeOfOptions 參數用於保留此介面與先前 OperationOptions 結構定義的向後相容性。如果介面實作偵測到不尋常的大小,則可以使用此參數來判斷如何解譯傳遞的 OperationOptions 結構。若要啟用此功能,呼叫者應傳遞 sizeof(NdbOperation::OperationOptions) 作為此引數的值。

傳回值

代表此操作的 NdbOperation (可用於檢查錯誤)。

NdbTransaction::writeTuple()

描述

此方法與 NdbRecord 一起使用,以寫入資料元組。

簽名
const NdbOperation* writeTuple
    (
      const NdbRecord* key_rec,
      const char* key_row,
      const NdbRecord* attr_rec,
      const char* attr_row,
      const unsigned char* mask = 0,
      const NdbOperation::OperationOptions* opts = 0,
      Uint32 sizeOfOptions = 0
    )
參數

此方法採用下列參數

  • key_rec 是指向表格或索引的 NdbRecord 的指標。如果在表格上,則該操作使用主索引鍵;如果在索引上,則該操作使用唯一索引鍵。在任一情況下,key_rec 都必須包含索引鍵的所有欄位。

  • 傳遞給此方法的 key_row 定義要寫入的元組的主要或唯一鍵,並且必須保持有效直到呼叫 execute()

  • attr_rec 是參考要寫入屬性的 NdbRecord

    對於唯一索引操作,attr_rec 必須參照索引的基礎資料表,而不是索引本身。

  • attr_row 是包含新資料的緩衝區。

  • 如果 mask 不是 NULL,則定義要寫入的屬性子集。遮罩會被複製,因此在呼叫此方法返回後不需要保持有效。

  • OperationOptions (opts) 可用於提供更精細的操作定義控制。傳遞具有旗標的 OperationOptions 結構,這些旗標指出存在哪些操作定義選項。並非所有操作類型都支援所有操作選項;對於每種操作類型支援的選項,請參閱 NdbTransaction::readTuple()

  • 可選的 sizeOfOptions 參數用於提供此介面與先前 OperationOptions 結構定義的向後相容性。如果介面實作偵測到不尋常的大小,它可以使用此參數來判斷如何解譯傳遞的 OperationOptions 結構。若要啟用此功能,呼叫者應為此引數的值傳遞 sizeof(NdbOperation::OperationOptions)

傳回值

指向代表此寫入操作的 NdbOperationconst 指標。如有必要,可以檢查操作是否有錯誤。