Datasheet
Book VII
Chapter 1
Tuning the
Database
589
Separating User Interactions from Transactions
Because computer instructions operate in the nanosecond realm and
humans operate in the second or even minute realm, one thing that can
really slow a database transaction is any interaction with a human. If that
transaction happens to hold a lock on a critical resource, the application
with which the user is interacting isn’t the only one to suffer a delay. Every
other application that needs that resource is brought to a screeching halt for
an interval of time that could be billions of times longer than necessary.
The obvious solution is to separate user interactions from transactions.
Never hold a lock on anything while waiting for a human to do something.
Minimizing Traffic between Application and Server
If you have a lot of applications running on a lot of client machines, all
depending on data that resides on a server, overall performance is limited
by the server’s capacity to send and receive messages. The fewer messages
that need to travel between client and server, the better. The smaller the
messages that need to travel between client and server, the better.
One approach to this problem is to use stored procedures — precompiled
application modules that run on the server rather than on the client. Their
primary purpose is to filter result sets rather than send a big chunk of the
database, so that only the needed data is transmitted to the client. This
method can reduce traffic between the server and client machines dramatically.
Precompiling Frequently Used Queries
If you execute the same query repeatedly — say, daily or even hourly — you
can save time by compiling it in advance. At runtime, executing the query is
the only thing that needs to be done. The compilation is done only once and
never needs to be repeated. The time saving due to this forethought adds up
and becomes significant over the course of weeks and months.
Precompiling Frequently Used Queries
40_9780470929964-bk07ch01.indd 58940_9780470929964-bk07ch01.indd 589 2/24/11 3:45 PM2/24/11 3:45 PM