为上载操作跟踪同步统计信息。
在下表中,说明部分提供 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.warnings |
INTEGER。发生的警告的数目。 |
2 |
s.errors |
INTEGER。发生的错误的数目。 |
3 |
s.inserted_rows |
INTEGER。成功插入到统一数据库中的行数。 |
4 |
s.deleted_rows |
INTEGER。从统一数据库中成功删除的行数。 |
5 |
s.updated_rows |
INTEGER。在统一数据库中成功更新的行数。 |
6 |
s.conflicted_inserts |
INTEGER。始终为零。 |
7 |
s.conflicted_deletes |
INTEGER。始终为零。 |
8 |
s.conflicted_updates |
INTEGER。导致冲突的更新行数目。仅当对某行成功调用了解决冲突脚本时才包括该行。 |
9 |
s.ignored_inserts |
INTEGER。忽略的上载插入行总数。它们被忽略的原因是:1) 在正常模式中没有 upload_insert 脚本或在强制冲突模式中没有 upload_new_row_insert 脚本,2) MobiLink 服务器调用相应脚本时出现了错误并且 handle_error 或 handle_odbc_error 事件返回 1000。 |
10 |
s.ignored_deletes |
INTEGER。如果定义了 handle_error 或 handle_odbc_error 并返回 1000 或者对给定表没有定义 upload_delete 脚本,当调用 upload_delete 脚本时导致出错的上载删除行数。 |
11 |
s.ignored_updates |
INTEGER。导致冲突但冲突解决脚本未能成功调用或者未定义 upload_update 脚本的上载更新行数。 |
12 |
s.bytes |
INTEGER。MobiLink 服务器内用来存储上载的内存量。 |
13 |
s.deadlocks |
INTEGER。统一数据库中为同步已检测到的死锁的数目。 |
14 |
无。
upload_statistics 事件可用于为所有用户收集与上载有关的统计信息。upload_statistics 连接脚本在上载事务结束时执行提交操作之前被调用。
下面的示例将上载操作的同步统计信息插入到表 upload_summary_audit 中。
CALL ml_add_connection_script ( 'ver1', 'upload_statistics', 'INSERT INTO upload_summary_audit ( ml_user, warnings, errors, inserted_rows, deleted_rows, updated_rows, conflicted_inserts, conflicted_deletes, conflicted_updates, bytes, ignored_inserts, ignored deletes, ignored_updates, bytes, deadlocks ) VALUES ( {ml s.username}, {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} ) ' ) |
在审计表中插入统计信息之后,您将可以使用这些统计信息监控同步过程,并在条件允许时进行优化。
以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 时将名为 uploadStatisticsConnection 的 Java 方法注册为 upload_statistics 连接事件的脚本。
CALL ml_add_java_connection_script( 'ver1', 'upload_statistics', 'ExamplePackage.ExampleClass.uploadStatisticsConnection' ) |
以下是 Java 方法 uploadStatisticsConnection 示例。它将某些统计信息记录到 MobiLink 消息日志。(请注意:将统计信息记录到 MobiLink 消息日志在开发时可能会有帮助,但会降低生产服务器的性能。)
public String uploadStatisticsConnection( 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 ); } |
以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 时将名为 UploadStats 的 .NET 方法注册为 upload_statistics 连接事件的脚本。
CALL ml_add_dnet_connection_script( 'ver1', 'upload_statistics', 'TestScripts.Test.UploadStats' ) |
以下是 .NET 方法 UploadStats 示例。它将某些统计信息记录到 MobiLink 消息日志。(请注意:将统计信息记录到 MobiLink 消息日志在开发时可能会有帮助,但会降低生产服务器的性能。)
public string UploadStats ( string user, 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 ); } |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |