This paper was originally
presented at SUGI 18. Since that time, client/server applications
have become more common. The paper is being updated and presented
again because there is a growing audience interested in tuning their
client/server applications.
This paper will give
you some ideas to help you develop SAS applications that make the
most efficient use of concurrent access to SAS files. Because this
audience consists of people with different amounts of experience developing
applications that use concurrent access to data, the first part of
the paper will focus on overviewing the general model for accessing
data in SAS. The later parts of the paper will draw on the general
data model to describe how to tune a client/server application.
Since introducing
SAS/SHARE software in 1987, SAS
has compared two contrasting images to show the additional capability
that
SAS/SHARE software
brings to SAS. One image shows a user's SAS session accessing files
directly; the other image shows a user's SAS session connected to
a server's session and the server's session accessing the files directly.
The essential difference is that the data in a file that is accessed
through a server travels through two SAS sessions whenever it is accessed.
Of course, a server controls concurrent access to the data that is
read and written through it, so its overhead has an important purpose.
But it is important to remember that data accessed through a server
requires more computing resources than data accessed directly.
One or more servers
can execute at the same time on a single computer or in a network
of computers. You can use different servers for different applications,
or you can use a few servers to distribute the load of many applications.
When you use more than
one server, each server performs only part of the work load. This
allows each server to respond to requests more quickly. On the other
hand, every process on a computer requires a certain amount of overhead
simply to exist, and servers are no different from other processes
in this regard. You must balance the performance improvement that
using multiple servers gives your users against the increased load
on your system as more servers execute. The later parts of this paper
will discuss measuring how much work a server is doing; you can use
that information to determine when to add or delete servers.