Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 服务器管理 » MobiLink 事件 » 同步事件

 

upload_statistics 表事件

为特定表跟踪有关上载操作的同步统计信息。

参数

在下表中,说明部分提供 SQL 数据类型。如果您使用 Java 或 .NET 编写脚本,则应该使用相应的数据类型。请参见SQL-Java 数据类型SQL-.NET 数据类型

在 SQL 脚本中,可以使用名称或问号指定事件参数,但不能在一个脚本中混合使用名称和问号。如果使用问号,则参数必须按照如下所示的顺序并且仅当没有指定任何后继参数时才是可选的(例如,如果您想使用参数 2,则必须使用参数 1)。如果使用命名参数,则可以按照任何顺序指定任意参数子集。

SQL 脚本的参数名称

说明

顺序

s.remote_id VARCHAR(128)。MobiLink 远程 ID。只有在使用命名参数时才能引用远程 ID。 不适用

s.username

VARCHAR(128)。MobiLink 用户名。

1

s.table

VARCHAR(128)。表名。

2

s.warnings

INTEGER。表上载过程中发出的警告的数目。

3

s.errors

INTEGER。表上载过程中发生的错误的数目,包括已处理的错误。

4

s.inserted_rows

INTEGER。成功插入到统一数据库中的行数。

5

s.deleted_rows

INTEGER。从统一数据库中成功删除的行数。

6

s.updated_rows

INTEGER。

7

s.conflicted_inserts

INTEGER。始终为零。

8

s.conflicted_deletes

INTEGER。始终为零。

9

s.conflicted_updates

INTEGER。导致冲突的更新行数目。仅当对某行成功调用了解决冲突脚本时才包括该行。

10

s.ignored_inserts

INTEGER。忽略的上载插入行总数。它们被忽略的原因是:1) 在正常模式中没有 upload_insert 脚本或在强制冲突模式中没有 upload_new_row_insert 脚本,2) MobiLink 服务器调用相应脚本时出现了错误并且 handle_error 或 handle_odbc_error 事件返回 1000。

11

s.ignored_deletes

INTEGER。如果定义了 handle_error 或 handle_odbc_error 并返回 1000 或者对给定表没有定义 upload_delete 脚本,当调用 upload_delete 脚本时导致出错的上载删除行数。

12

s.ignored_updates

INTEGER。导致冲突但冲突解决脚本未能成功调用或者未定义 upload_update 脚本的上载更新行数。

13

s.bytes

INTEGER。MobiLink 服务器内用来存储上载的内存量。

14

s.deadlocks

INTEGER。统一数据库中为同步已检测到的死锁的数目。

15

缺省操作

无。

注释

upload_statistics 事件可用于为所有用户收集有关同步事件(当它们应用于任何表时)的重要统计信息。upload_statistics 表脚本在上载事务结束时执行提交操作之前被调用。

另请参见
SQL 示例

以下示例在用于跟踪上载统计信息的表中插入一行。

CALL ml_add_connection_script(
 'ver1',
 'upload_statistics',
 'INSERT INTO my_upload_statistics ( 
   user_name, 
   table_name, 
   num_warnings, 
   num_errors, 
   inserted_rows, 
   deleted_rows, 
   updated_rows,
   conflicted_inserts, 
   conflicted_deletes,
   conflicted_updates, 
   ignored_inserts,
   ignored_deletes, 
   ignored_updates, bytes,
   deadlocks )
  VALUES( 
   {ml s.username}, 
   {ml s.table}, 
   {ml s.warnings}, 
   {ml s.errors}, 
   {ml s.inserted_rows}, 
   {ml s.deleted_rows}, 
   {ml s.updated_rows}, 
   {ml s.conflicted_inserts}, 
   {ml s.conflicted_deletes}, 
   {ml s.conflicted_updates}, 
   {ml s.ignored_inserts}, 
   {ml s.ignored_deletes}, 
   {ml s.ignored_updates}, 
   {ml s.bytes}, 
   {ml s.deadlocks} )'  )

以下示例在 Oracle 统一数据库中运行。

CALL ml_add_connection_script(
 'ver1',
 'upload_statistics',
 'INSERT INTO upload_tables_audit (
  id,
  user_name,
  table,
  warnings,
  errors,
  inserted_rows,
  deleted_rows,
  updated_rows,
  conflicted_inserts,
  conflicted_deletes,
  conflicted_updates,
  ignored_inserts,
  ignored_deletes,
  ignored_updates, 
  bytes, 
  deadlocks )
 VALUES ( 
   ut_audit.nextval,
   {ml s.username}, 
   {ml s.table}, 
   {ml s.warnings}, 
   {ml s.errors}, 
   {ml s.inserted_rows}, 
   {ml s.deleted_rows}, 
   {ml s.updated_rows}, 
   {ml s.conflicted_inserts}, 
   {ml s.conflicted_deletes}, 
   {ml s.conflicted_updates}, 
   {ml s.ignored_inserts}, 
   {ml s.ignored_deletes}, 
   {ml s.ignored_updates}, 
   {ml s.bytes}, 
   {ml s.deadlocks} )' )

在审计表中插入统计信息之后,您将可以使用这些统计信息监控同步过程,并在条件允许时进行优化。

Java 示例

以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 时将名为 uploadStatisticsTable 的 Java 方法注册为 upload_statistics 表事件的脚本。

CALL ml_add_java_table_script(
  'ver1',
  'table1',
  'upload_statistics',
  'ExamplePackage.ExampleClass.uploadStatisticsTable' )

以下是 Java 方法 uploadStatisticsTable 示例。它将某些统计信息记录到 MobiLink 消息日志。(请注意:将统计信息记录到 MobiLink 消息日志在开发时可能会有帮助,但会降低生产服务器的性能。)

public String uploadStatisticsTable(
  String user,
  int warnings,
  int errors,
  int insertedRows,
  int deletedRows,
  int updatedRows,
  int conflictedInserts,
  int conflictedDeletes,
  int conflictedUpdates,
  int ignoredInserts,
  int ignoredDeletes,
  int ignoredUpdates,
  int bytes,
  int deadlocks ) {
  java.lang.System.out.println( "updated rows: " +
    updatedRows ); 
  return ( null );
}
.NET 示例

以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 和表 table1 时将名为 UploadTableStats 的 .NET 方法注册为 upload_statistics 表事件的脚本。

CALL ml_add_dnet_table_script(
  'ver1',
  'table1',
  'upload_statistics',
  'TestScripts.Test.UploadTableStats'
)

以下是 .NET 方法 uploadStatisticsTable 示例。它将某些统计信息记录到 MobiLink 消息日志。(请注意:将统计信息记录到 MobiLink 消息日志在开发时可能会有帮助,但会降低生产服务器的性能。)

public string UploadTableStats(
  string user,
  string table,
  int warnings,
  int errors,
  int insertedRows,
  int deletedRows,
  int updatedRows,
  int conflictInserts,
  int conflictDeletes,
  int conflictUpdates,
  int ignoredInserts,
  int ignoredDeletes,
  int ignoredUpdates,
  int bytes,
  int deadlocks ) {
  System.Console.WriteLine( "updated rows: " +
    updatedRows );
  return ( null ); 
}