Databases Reference
In-Depth Information
Here are two major reasons a database driver can degrade the performance
of your database application:
•
The architecture of the driver is not optimal.
•
The driver is not tunable. It does not have runtime performance tuning
options that allow you to configure the driver for optimal performance. The
type of options that we are talking about are ones that you can adjust to
match your application and environment. For example, if your application
retrieves large objects, look for a driver option that allows you to configure
how much active memory the driver uses to cache a large object.
The standards-based API specifications define the required functionality that a
database driver must implement to be compliant. All drivers are not created
equal; some drivers on the market are implemented with only the required func-
tionality, and some are implemented with much, much more. You may be sur-
prised at how many tasks database drivers perform. The following list provides a
brief description of the tasks. Remember that not all drivers implement all this
functionality:
•
Translate a standards-based API (such as ODBC or JDBC) into a low-level
set of database API requests (such as to a proprietary database wire protocol)
•
Provide thread safety to the application when making database API requests
•
Provide a full state machine regarding environment context for making
database connections and statements for executing SQL queries
•
Handle all data conversion from a proprietary database format of data into
native language data types
•
Buffer database query results from the network into the application's buffers
•
Manage the TCP/IP connection from the client to the database server
•
Provide load balancing to various database servers
•
Provide failover to backup database servers if fatal errors occur
•
Map errors from database-specific codes into standard errors
•
Provide data translation from client code pages to and from database-spe-
cific code pages
•
Take cross-database SQL and translate it to database-specific SQL