下面是一些建议,可以帮助您从 MobiLink 获得最佳性能。
测试 在部署前,使用您计划用于生产的硬件和网络执行卷测试。使用此时间来实验以下性能提示。
避免争用 避免同步脚本中的争用。避免争用的另一个方法是应该最大化并发。
例如,假定 begin_download 脚本在表中添加一列,用以计算下载总数。如果多个用户同时执行同步,则此脚本可以高效地使他们的下载序列化。在 begin_synchronization 或 end_synchronization 脚本中使用相同的计数器将更加有效,因为这两个脚本将在提交以前被调用。
有关争用的详细信息,请参见争用。
有关同步的事务结构的信息,请参见同步过程中的事务。
使用工作线程的最佳数目 使用 MobiLink –w 选项将 MobiLink 工作线程数设置成提供最佳吞吐量的最小数目。您需要通过实验来确定适合您的情况的最佳数目。
较大数目的工作线程可以通过允许同时发生更多的同步,提高吞吐量。
保持少量的工作线程可以减小统一数据库中出现争用的可能性,减少到统一数据库的连接数,并减少优化高速缓存所需的内存。
例如,在快速客户端的测试中,发现大约 5 个工作线程可以提供最佳吞吐量。对速度较慢的客户端而言,需要更多的工作线程来优化下载吞吐量,而最优的上载吞吐量可以通过使用 -wu 选项限制同时上载的工作线程的数目而获得。在对速度极慢的客户端的测试中,使用数百个工作线程时可以获得上载和下载的最优吞吐量,但只允许 5 个工作线程同时用于上载。请注意,这些数目来自特定测试集。每一部署都具有不同的特征,并且您必须进行测试以确定 -w 和 -wu 的最佳值。
有关工作线程的详细信息,请参见工作线程数。
为 ASA 客户端启用客户端下载缓冲区
对于 Adaptive Server Anywhere 客户端,下载缓冲区使得 MobiLink 工作线程不必等待客户端应用下载就传送下载。缺省情况下启用下载缓冲区。但是,如果启用下载确认,则不能使用下载缓冲区(见下一段)。
有关设置下载缓冲区大小的详细信息,请参见 DownloadBufferSize (dbs) 扩展选项。
不要为 ASA 客户端启用下载确认 缺省情况下不启用下载确认。这将释放 MobiLink 工作线程(否则工作线程会等待来自客户端的成功下载确认),这还释放工作线程正使用的连接。这使得 MobiLink 同步服务器还能够对下载进行缓冲。
UltraLite 客户端不对下载进行缓冲,因此不确认下载的好处就不那么明显。
有关下载确认的详细信息,请参见 SendDownloadACK (sa) 扩展选项。
设置上载高速缓存大小 若要避免上载高速缓存溢出到磁盘的情况发生,请将上载高速缓存大小设置为大于最大上载流与工作线程数的乘积的大小。使用 dbmlsrv9 –u 选项设置上载高速缓存的大小。
有关详细信息,请参见 -u 选项。
设置下载高速缓存大小 若要避免下载缓冲区溢出到磁盘的情况发生,请将下载高速缓存大小设置为大于最大下载与工作线程数的乘积的大小。使用 dbmlsrv9 -d 选项设置下载高速缓存的大小。
有关设置分配给下载缓冲区的内存的详细信息,请参见 -d 选项。
设置 BLOB 高速缓存大小 如果行中具有 LONG VARCHAR 或 LONG BINARY 类型的数据,则通过将 BLOB 高速缓存大小设置为大于一行中最大 BLOB 数据与工作线程数的乘积的两倍,可以避免令 BLOB 高速缓存访问磁盘。使用 dbmlsrv9 -bc 选项设置 BLOB 高速缓存大小。
有关详细信息,请参见 -bc 选项。
设置数据库连接的最大数目
将 MobiLink 数据库连接的最大数目设置为同步脚本版本的常规数目与 MobiLink 工作线程数的乘积加 1。这将减少需要 MobiLink 关闭和创建数据库连接的次数。使用 dbmlsrv9 -cn 选项设置连接的最大数目。
有关详细信息,请参见 MobiLink 数据库连接和 -cn 选项。
具有足够的物理内存 确保运行 MobiLink 的计算机具有足够的物理内存以满足上载、下载和 BLOB 高速缓存以及自己的其它内存需求。
使用足够的处理能力 赋予 MobiLink 足够强的处理能力,以便 MobiLink 服务器处理不成为瓶颈。在对 Adaptive Server Anywhere 统一数据库进行的测试中,当 MobiLink 和 Adaptive Server Anywhere 都处于较重负载并在同一计算机上运行时,MobiLink 要求的处理量仅是 Adaptive Server Anywhere 的三分之一至一半。
使用详细程度最小的记录模式 使用与您的业务需求一致的详细程度最小的记录模式。缺省情况下,详细记录模式处于关闭状态而且 MobiLink 不将日志写入磁盘。您可以使用 -v 选项控制记录的详细程度,并使用 -o 或 -ot 选项将记录写入文件。
作为对详细日志文件的替代方法,您可以使用 MobiLink 监控器监控同步。监控器不一定要和 MobiLink 同步服务器位于同一计算机上,监控器连接对 MobiLink 服务器的性能影响甚微。有关详细信息,请参见 MobiLink 监控器。
Java 或 .NET 与 SQL 同步逻辑 目前尚未发现使用 Java 或 .NET 同步逻辑与 SQL 同步逻辑相比存在明显的吞吐量的差别。但 Java 和 .NET 同步逻辑对每个同步都会产生一些额外开销,需要占用更多内存。
另外,SQL 同步逻辑在运行统一数据库的计算机上执行,而 Java 或 .NET 同步逻辑在运行 MobiLink 服务器的计算机上执行。因此,如果统一数据库的负载很重,则可能非常适合使用 Java 或 .NET 同步逻辑。
优先级同步 如果您所具有的某些表需要比其它表更频繁地进行同步,则为它们单独创建发布和预订。您可以比其它发布更频繁地同步此优先级发布,并且在非高峰时间同步其它发布。
只下载所需行 务必只下载所需行。编写在每一同步过程中下载所有行的同步脚本相对容易,但是,下载不需要的行会影响同步性能。
优化脚本执行 统一数据库中脚本的性能是一个很重要的因素。在表中创建索引可以使上载游标脚本和下载游标脚本更有效地定位需要的行。但是,索引过多可能会减慢上载速度。
对于源于 ASA 客户端的较大的上载,事先估计行数 通过向 dbmlsync 提供估计的将上载的行数,可以显著提高上载大量行的速度。使用 dbmlsync -urc 选项执行此操作。
有关详细信息,请参见 -urc 选项。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。