Collection Contents 上一页 下一页 PDF

SQL Remote 用户指南

SQL Remote 设计的基本原理

哪个用户获得什么内容?


每次插入、删除或更新表中的行时,必须向那些已预订该行的预订者发送消息。此外,更新可能引起预订表达式更改,所以更新语句将分别作为删除语句、更新语句和插入语句发送给某些相应的预订者。

有关什么语句被发送给哪些预订者的详细信息,请参见如何复制语句。有关预订的详细信息,请参见下面两章。

本节描述 SQL Remote 如何将正确的操作发送给正确的接收者。

数据库服务器和消息代理分担了确定谁得到什么的任务。引擎处理那些和发布有关的方面,消息代理处理和预订有关的方面。

Adaptive Server Anywhere 操作 

Adaptive Server Anywhere 为每次对表(属于发布的表)的更新计算预订表达式。它向日志中添加更新前后表达式的值。

不输入预订者列表 
Adaptive Server Enterprise 不计算预订者列表,也不向日志中输入。它计算和输入预订表达式(发布的一个属性)。对预订者的所有处理都交给消息代理进行。

对于属于多个发布的表,对于每个发布在更新的前后都计算预订表达式。

向日志中添加信息可能在下列情况下影响性能:

Adaptive Server Enterprise 操作 

在用于 Adaptive Server Enterprise 的 SQL Remote 发布中,预订表达式必须是一个列。预订列包含单个的值或由逗号分隔的值的列表。

不输入预订者列表 
Adaptive Server Enterprise 不向日志中输入预订者列表。它输入列值。对预订者的所有处理都交给消息代理进行。

当使用 sp_add_remote_table(它调用 sp_setreplicate)标记用于复制的表时,Adaptive Server Enterprise 在事务日志中为删除操作放置一个删除行的完整的前映像,为插入操作放置一个插入行的完整的后映像,为更新操作同时放置更新行的这两种映像。这意味着预订列复制前后的值都可获得。

消息代理操作 

消息代理从事务日志中读取已计算的预订表达式或预订列条目,并为该发布的每个预订者查找与预订值匹配的前/后映像的值。用这种方式,消息代理可向每个预订者发送正确的操作。

虽然大量的预订者对服务器性能没有任何影响,但它们可影响消息代理的性能。查找与大量预订值匹配的预订值的工作以及发送消息的工作都可能要求很高。


Collection Contents 上一页 下一页 PDF