2.3.25 NdbTransaction 类

本节提供有关 NdbTransaction该类的信息。

NdbTransaction 类概述

家长班

没有任何

儿童班

没有任何

描述

事务在 NDB API 中由一个 NdbTransaction对象表示,该对象属于一个Ndb对象并使用 Ndb::startTransaction(). 事务由NdbOperation类或其子类之一( 、 或 )NdbScanOperation表示 NdbIndexOperation的 一系列操作组成NdbIndexScanOperation。每个操作只访问一个表。

方法

下表列出了该类的公共方法以及每个方法的用途或用途:

表 2.65 NdbTransaction 类方法和说明

姓名 描述
close() 关闭交易
commitStatus() 获取事务的提交状态
deleteTuple() 使用删除元组NdbRecord
execute() 执行交易
executePendingBlobOps() NoCommit如果事务包含任何尚未执行的指定类型的 blob 部分操作,则以模式执行事务。
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.66 NdbTransaction 类类型和描述

姓名 描述
CommitStatusType() 描述事务的提交状态
ExecType() 确定事务是应该提交还是回滚

使用交易。  获取NdbTransaction对象后,使用如下:

  1. 使用以下任何一种方法将操作分配给事务:

    • getNdbOperation()

    • getNdbScanOperation()

    • getNdbIndexOperation()

    • getNdbIndexScanOperation()

    调用这些方法之一定义操作。可以在同一个 NdbTransaction对象上定义多个操作,在这种情况下它们是并行执行的。定义完所有操作后,该 execute() 方法将它们发送到NDB内核执行。

  2. 当内核完成所有先前定义的操作的执行 时, 该execute() 方法返回。NDB

    在调用该 方法 之前, 应正确定义所有分配的操作 。execute()

  3. execute() 以此处列出的三种模式之一运行:

    • NdbTransaction::NoCommit:执行操作而不提交它们。

    • NdbTransaction::Commit:执行任何剩余的操作,然后提交完整的事务。

    • NdbTransaction::Rollback:回滚整个事务。

    execute()还配备了一个额外的错误处理参数,它提供了此处列出的两个备选方案:

    • NdbOperation::AbortOnError:任何错误都会导致事务中止。这是默认行为。

    • NdbOperation::AO_IgnoreError:即使为该事务定义的一个或多个操作失败,事务也会继续执行。

NdbTransaction::关闭()

描述

此方法关闭事务。相当于调用 Ndb::closeTransaction().

如果事务尚未提交,调用此方法时将中止事务。请参阅 Ndb::startTransaction()

签名
void close
    (
      void
    )
参数

没有

返回值

没有

NdbTransaction::commitStatus()

描述

此方法获取事务的提交状态。

签名
CommitStatusType commitStatus
    (
      void
    )
参数

没有

返回值

事务的提交状态,类型的值 CommitStatusType

NdbTransaction::CommitStatusType

本节提供有关 CommitStatusType数据类型的信息。

描述

此类型用于描述事务的提交状态。

枚举值

下表显示了可能的值以及说明:

表 2.67 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_recNdbRecord要使用 的。

  • 如果不返回任何属性,则可以 result_rowNULL

  • 如果result_mask不是 NULL,则定义要读取并返回给客户端的属性子集。掩码被复制,因此在调用此方法返回后不需要保持有效。

  • OperationOptions ( opts) 可用于提供更细粒度的操作定义控制。传递的 OperationOptions结构带有标志,指示存在哪些操作定义选项。并非所有操作类型都支持所有操作选项;对于每种类型的操作支持的选项,请参阅 NdbTransaction::readTuple()

  • 可选sizeOfOptions 参数提供此接口与以前的 OperationOptions 结构定义的向后兼容性。如果接口实现检测到异常大小,它可以使用它来确定如何解释传递的 OperationOptions结构。要启用此功能,调用者应传递 sizeof(NdbOperation::OperationOptions) 此参数的值。

返回值

const指向 NdbOperation表示此写操作 的指针。如有必要,可以检查操作是否有错误。

NdbTransaction::ExecType

本节提供有关 ExecType数据类型的信息。

描述

该类型设置交易的执行类型;也就是说,它是应该执行、执行并提交还是中止。它用作方法的参数 execute()。(参见 NdbTransaction::execute()。)

枚举值

下表显示了可能的值以及说明:

表 2.68 NdbTransaction::ExecType 值和描述

姓名 描述
NoCommit 事务应该执行,但不提交。
Commit 事务应该执行并提交。
Rollback 事务应该被回滚。

NdbTransaction::执行()

描述

此方法用于执行事务。

签名
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 部分操作, 此方法将执行 ExecType 等于的事务。NoCommit

签名
int executePendingBlobOps
  (
    Uint8 flags = 0xFF
  )
参数

flags参数是按位的结果 ,OR等于,其中 是 。默认对应于 . 1 << optypeoptypeNdbOperation::TypeNdbOperation::Type::PrimaryKeyAccess

返回值

返回0成功或 -1失败。事务没有中止的事实并不一定意味着每个操作都成功;您必须单独检查每个操作是否有错误。

NdbTransaction::getGCI() 函数

描述

此方法检索事务的全局检查点 ID (GCI)。

每个提交的事务都属于一个 GCI。发生全局检查点时,已提交事务的日志将保存在磁盘上。

通过将事务的 GCI 与重新启动的 NDB Cluster 中恢复的最新 GCI 的值进行比较,您可以确定事务是否已恢复。

该方法无法判断带有该GCI的全局检查点是否已经保存在磁盘上。

扫描事务的 GCI 未定义,因为在扫描事务中不执行任何更新。

execute() 在使用调用 之前,GCI 不可 用ExecType::Commit

签名
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()

描述

此方法检索导致错误的操作。

要获取有关实际错误的更多信息,请使用 返回的对象 的NdbOperation::getNdbError() 方法。 NdbOperationgetNdbErrorOperation()

签名
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)NdbOperationNdbOperation myOp

此方法应仅在事务执行后但在事务关闭之前使用。

签名
const NdbOperation* getNextCompletedOperation
    (
      const NdbOperation* op
    ) const
参数

此方法需要一个参数 op,它是一个操作(NdbOperation对象),或者 NULL

返回值

以下操作op或为事务定义的第一个操作(如果 getNextCompletedOperation()使用 调用)NULL

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) 此参数的值。

返回值

const指向 NdbOperation表示此插入操作 的 指​​针。

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()

    掩码(如果不是NULL)定义要读取、更新或插入的属性子集。只有 设置了才会影响列。掩码由方法复制,因此在调用返回后不需要保持有效。 (mask[attrId >> 3] & (1<<(attrId & 7)))

  • result_rec是指向 NdbRecord用于保存结果 的指针

  • result_row为结果数据定义一个缓冲区。

  • lock_mode指定对操作有效的锁定模式。有关允许的值和其他信息, 请参阅 NdbOperation::LockMode 。

  • result_mask定义要读取的属性子集。只有mask[attrId >> 3] & (1<<(attrId & 7)) 设置了才会影响列。掩码被复制,因此在方法调用返回后不需要保持有效。

  • OperationOptions ( opts) 可用于提供更细粒度的操作定义控制。传递的 OperationOptions结构带有标志,指示存在哪些操作定义选项。并非所有操作类型都支持所有操作选项;下表显示了每种类型的操作支持的选项:

    表 2.69 NdbTransaction::readTuple() OperationOptions (opts) 参数的操作类型,以及每种类型支持的操作选项

    操作类型(方法) OperationOptions支持的标志
    readTuple() OO_ABORTOPTION, OO_GETVALUE, OO_PARTITION_ID, OO_INTERPRETED
    insertTuple() OO_ABORTOPTION, OO_SETVALUE, OO_PARTITION_ID, OO_ANYVALUE
    updateTuple() OO_ABORTOPTION, OO_SETVALUE, OO_PARTITION_ID, OO_INTERPRETED, OO_ANYVALUE
    writeTuple() OO_ABORTOPTION, OO_SETVALUE, OO_PARTITION_ID, OO_ANYVALUE
    deleteTuple() OO_ABORTOPTION, OO_GETVALUE, OO_PARTITION_ID, OO_INTERPRETED, OO_ANYVALUE

  • 可选sizeOfOptions 参数用于保持此接口与以前的 OperationOptions 结构定义的向后兼容性。如果接口实现检测到异常大小,它可以使用它来确定如何解释传递的 OperationOptions结构。要启用此功能,调用者应传递 sizeof(NdbOperation::OperationOptions) 此参数的值。

返回值

指向 NdbOperation表示此读取操作的指针(这可用于检查错误)。

NdbTransaction::刷新()

描述

此方法更新事务的超时计数器,从而避免由于事务超时而中止。

不建议锁定记录并长时间维护它,因为这会影响其他事务。

签名
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_recordresult_record必须从基础表创建,而不是从要扫描的索引创建。在扫描操作关闭之前, key_record 和结构都必须保持原样。result_record NdbRecord

  • result_mask指针是可选 的。如果它存在,则只有那些设置了相应位(按属性 ID 顺序)的列 result_mask才会在扫描中实际检索到。是在 result_mask内部复制的,因此与它相反, 它在调用 result_record时不需要有效。execute()

  • IndexBound 可以在此调用中或在对 的单独调用中指定 单个 NdbIndexScanOperation::setBound()。要执行多范围读取, 结构scan_flags中的 ScanOptions 必须包含SF_MULTIRANGE. 可以使用对 的连续调用来添加额外的界限 NdbIndexScanOperation::setBound()

    要指定等于界限,请对low_keyhigh_key以及低位和高位包含位设置使用相同的行指针。

    对于多范围扫描, 指针low_keyhigh_key指针必须是唯一的。换句话说,不允许在一次扫描中为几个不同的范围边界重复使用同一个行缓冲区。low_key但是,允许使用与和 相同的行指针 high_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指针是可选 的。如果它存在,则只有那些设置了相应位(按属性 ID 顺序)的列 result_mask才会在扫描中实际检索到。是在 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 读取批处理,这是默认行为(为了向后兼容)。

返回值

没有

笔记

blob 读取批处理也可以在 mysql客户端和其他 MySQL 客户端应用程序中使用 MySQL 服务器的 --ndb-blob-read-batch-bytes 选项及其关联的 MySQL 服务器系统变量进行控制。

NdbTransaction::setMaxPendingBlobWriteBytes()

描述

设置 blob 写入操作的批处理大小(以字节为单位)。当给定事务中要写入的 blob 数据量超过此数量时,将执行该事务的所有待处理 blob 写入操作。

签名
void setMaxPendingBlobWriteBytes
    (
      Uint32 bytes
    )
参数

批量大小,作为 bytes. 使用 0 会导致禁用 blob 写入批处理,这是默认行为(为了向后兼容)。

返回值

没有

笔记

通过将 MySQL 服务器的服务器系统变量设置为适当的值, 还可以 在 NDB 8.0.30 及更高版本 中的mysql客户端和其他 MySQL 客户端应用程序中控制 Blob 写入批处理。ndb_replica_blob_write_batch_bytes您应该知道,如果 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 此连接所拥有的。这是通过从连接中获取同名的模式对象并将它们与传递给事务的模式对象进行比较来完成的。如果它们不匹配,则返回错误。

从 NDB 7.3.9 开始,此方法可用于调试目的。(错误号 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_recNdbRecord对要写入的属性的引用。

    对于唯一索引操作, attr_rec必须引用索引的基础表,而不是索引本身。

  • attr_row是包含新数据的缓冲区。

  • 如果mask不是 NULL,则定义要写入的属性子集。掩码被复制,因此在调用此方法返回后不需要保持有效。

  • OperationOptions ( opts) 可用于提供更细粒度的操作定义控制。传递的 OperationOptions结构带有标志,指示存在哪些操作定义选项。并非所有操作类型都支持所有操作选项;对于每种类型的操作支持的选项,请参阅 NdbTransaction::readTuple()

  • 可选sizeOfOptions 参数用于提供此接口与以前的 OperationOptions 结构定义的向后兼容性。如果接口实现检测到异常大小,它可以使用它来确定如何解释传递的 OperationOptions结构。要启用此功能,调用者应传递 sizeof(NdbOperation::OperationOptions) 此参数的值。

返回值

const指向 NdbOperation表示此写操作 的指针。如有必要,可以检查操作是否有错误。