Improving SQL Remote performance

Each time a row in a table is inserted, deleted, or updated, a message is created for those users subscribed to the row. In addition, an update may cause the subscription expression to change, so that the statement is sent to some subscribers as a delete, some as an update, and some as an insert.

The task of determining who gets what is divided between the database server and the Message Agent (dbremote).

The database server

The database server handles publications. See The database server handles publications.

The Message Agent (dbremote)

The Message Agent (dbremote) handles subscriptions.

The Message Agent (dbremote) reads the evaluated subscription expressions or subscription column entries from the transaction log, and matches the before and after values against the subscription value for each subscriber to the publication. In this way, the Message Agent (dbremote) sends the correct operations to each subscriber.

While a large number of subscribers do not have any effect on database server performance, they can affect Message Agent (dbremote) performance. The work in matching subscription values against large numbers of subscription values, and the work in sending the messages, can be demanding.


Receiving message tasks
Improving performance when receiving messages
Sending message tasks
Improving performance when sending messages