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

SQL Anywhere 11.0.1 (日本語) » Mobile Link - サーバ管理 » Mobile Link イベント » 同期イベント

 

upload_statistics テーブル・イベント

特定のテーブルに対するアップロード操作について、同期統計を追跡します。

パラメータ

次の表の説明では、SQL データ型を示します。Java または .NET でスクリプトを作成する場合、適切なデータ型を使用してください。SQL データ型と Java データ型SQL データ型と .NET データ型を参照してください。

SQL スクリプトでは、名前または疑問符を使用してイベント・パラメータを指定できますが、スクリプト内に名前と疑問符を混在させることはできません。疑問符を使用する場合、パラメータは以下に示す順に指定する必要があり、後続のパラメータが指定されていない場合のみ省略可能です (たとえば、パラメータ 2 を使用する場合は、パラメータ 1 を使用してください)。名前付きパラメータを使用する場合は、パラメータの任意のサブセットを任意の順に指定できます。

SQL スクリプトのパラメータ名

説明

順序

s.remote_id VARCHAR(128)。Mobile Link リモート ID。名前付きパラメータを使用している場合のみ、リモート ID を参照できます。 適用不可

s.username

VARCHAR(128)。Mobile Link ユーザ名。

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。常に 0 (ゼロ) です。

8

s.conflicted_deletes

INTEGER。常に 0 (ゼロ) です。

9

s.conflicted_updates

INTEGER。競合を引き起こした更新ローの数。対処する競合解決スクリプトが正常に呼び出された場合のみ、ローは含まれます。

10

s.ignored_inserts

INTEGER。無視されたアップロード挿入ローの合計数。無視される理由は次のとおりです。1) 通常モードで upload_insert スクリプトないか、または強制的な競合モードで upload_new_row_insert スクリプトがない。2) Mobile Link サーバが対応するスクリプトを呼び出し中にエラーが発生し、handle_error または handle_odbc_error イベントが 1000 を返した。

11

s.ignored_deletes

INTEGER。upload_delete スクリプトを呼び出したとき、handle_error または handle_odbc_error が定義され、1000 を返した場合、または指定のテーブルに対して upload_delete スクリプトが定義されていない場合にエラーを発生したアップロード削除ローの数。

12

s.ignored_updates

INTEGER。競合を引き起こしたが、競合解決スクリプトが正常に呼び出されなかったり、upload_update スクリプトが定義されていなかったアップロード更新ローの数。

13

s.bytes

INTEGER。アップロードを保存するために Mobile Link サーバ内で使用されるメモリの容量。

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 の例

次の Mobile Link システム・プロシージャ・コールは、スクリプト・バージョン ver1 を同期するときに、uploadStatisticsTable という Java メソッドを upload_statistics テーブル・イベント用のスクリプトとして登録します。

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

次に示すのは、サンプルの Java メソッド uploadStatisticsTable です。このメソッドは、Mobile Link メッセージ・ログに統計の一部を出力します (統計を Mobile Link メッセージ・ログに出力すると、開発時には便利ですが、運用サーバのパフォーマンスが遅くなります)。

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 の例

次の Mobile Link システム・プロシージャ・コールは、スクリプト・バージョン ver1 とテーブル table1 を同期するときに、UploadTableStats という .NET メソッドを upload_statistics テーブル・イベント用のスクリプトとして登録します。

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

次に示すのは、サンプルの .NET メソッド uploadStatisticsTable です。このメソッドは、Mobile Link メッセージ・ログに統計の一部を出力します (統計を Mobile Link メッセージ・ログに出力すると、開発時には便利ですが、運用サーバのパフォーマンスが遅くなります)。

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 ); 
}