Reference Manual
APPENDIX A. Database Performance and Connection Properties
Adaptive Server Anywhere provides a set of statistics that can be used to monitor database performance. These are accessible from Sybase Central, and client applications can access the statistics as functions. In addition, these statistics are made available by the server to the Windows NT performance monitor.
This section describes how to access performance and related statistics from client applications, how to monitor database performance using Sybase Central, and how to monitor database performance using the Windows NT performance monitor.
Adaptive Server Anywhere provides a set of system functions that can access information on a per-connection, per-database, or engine-wide basis. The kind of information available ranges from static information such as the server name to detailed performance-related statistics concerning disk and memory usage.
The performance-related statistics are also available, along with some other statistics, for the Windows NT engine and server in the Windows NT Performance Monitor.
For more information on the Performance Monitor, see Monitoring database statistics from the Windows NT Performance Monitor.
This section illustrates how to use the functions.
A complete list of system functions and of their properties is provided in the section System functions.
The following functions are used to retrieve system information:
property Provides the value of a given property on an engine-wide basis
connection_property Provides the value of a given property for a given connection, or for the current connection by default.
db_property Provides the value of a given property for a given database, or for the current database by default.
Supply as an argument only the name of the property you wish to retrieve, the functions return the value for the current server, connection, or database.
The following statement sets a variable named server_name to the name of the current server:
SET server_name = property( 'name' )
The following query returns the user ID for the current connection:
SELECT connection_property( 'userid' )
The following query returns the filename for the root file of the current database:
SELECT db_property( 'file' )
For maximum efficiency, a client application monitoring database activity should use the property_number function to identify a named property, and then use the number to repeatedly retrieve the statistic. The following set of statements illustrates the process from Interactive SQL:
CREATE VARIABLE propnum INT ; CREATE VARIABLE propval INT ; SET propnum = property_number( 'cacheread' ); SET propval = property( propnum )
Property names obtained in this way are available for many different database statistics, from the number of transaction log page write operations and the number of checkpoints carried out to the number of reads of index leaf pages from the memory cache.
Many of these statistics are made available in graphical form from the Sybase Central database management tool.
You can monitor database statistics from Sybase Central. The Sybase Central Performance Monitor is a graphing tool that can present database statistics as a line graph or a bar graph.
Click the icon for the server you wish to monitor in the left panel.
Double-click the Statistics folder underneath the server.
Select a statistic to graph, and drag it to the Performance Monitor icon to start graphing that statistic.
The Performance Monitor uses the regular Adaptive Server Anywhere communication mechanisms to gather statistics. This means some statistics (most notably Cache Reads) are affected by Sybase Central. For example, graphing Cache Reads/sec in Sybase Central shows a steady rate, even when nothing apart from the monitoring is going on.
If you have a Windows NT client and server, the Windows NT Performance monitor is preferable since it offers more statistics, and is not intrusive: updating the statistics will not affect the measurements. The extra statistics the Windows NT performance monitor offers deal mainly with network communications—packets received, network buffers used, and so on.
The Windows NT performance monitor is an application for viewing the behavior of objects such as processors, memory, and applications. Adaptive Server Anywhere provides many statistics for the performance monitor to display.
The Windows NT performance monitor allows unintrusive monitoring of statistics: updating the statistics does not affect the measurements.
Open the Administrative Tools program group.
Double click Performance Monitor.
For information about Performance Monitor, see the Performance Monitor online Help.
With Performance Monitor running, select Add To Chart from the Edit menu, or click the Plus sign on the toolbar.
The Add To Chart dialog appears.
From the Object list, select Adaptive Server Anywhere.
The Counter list then displays a list of the statistics provided.
From the Counter list, click a statistic to be displayed.
For a description of the selected counter, click Explain.
To display the counter, click Add.
When you have selected all the counters you wish to display, click Done.
The statistics made available for Performance Monitor by Adaptive Server Anywhere are as follows:
Statistic |
Description |
---|---|
Active Requests |
Active Requests is the number of engine threads that are currently handling a request. |
Asynchronous Reads/sec |
Asynchronous Reads/sec is the rate at which pages are being read asynchronously from disk. |
Asynchronous Writes/sec |
Asynchronous Writes/sec is the rate at which pages are being written asynchronously to disk. |
Bytes Received/sec |
Bytes Received/sec is the rate at which network data (in bytes) are being received. |
Bytes Transmitted/sec |
Bytes Transmitted/sec is the rate at which bytes are being transmitted over the network. |
Cache Hits/sec |
Cache Hits/sec is the rate at which database page lookups are satisfied by finding the page in the cache. |
Cache Index Internal Reads/sec |
Cache Index Internal Reads/sec is the rate at which index internal-node pages are being read from the cache. |
Cache Index Leaf Reads/sec |
Cache Index Leaf Reads/sec is the rate at which index leaf pages are being read from the cache. |
Cache Reads/sec |
Cache Reads/sec is the rate at which database pages are being looked up in the cache. |
Cache Table Reads/sec |
Cache Table Reads/sec is the rate at which table pages are being read from the cache. |
Cache Writes/sec |
Cache Writes/sec is the rate at which pages in the cache are being modified (in pages/sec). |
Checkpoint Flushes/sec |
Checkpoint Flushes/sec is the rate at which ranges of adjacent pages are being written out during a checkpoint. |
Checkpoint Log/sec |
Checkpoint Log/sec is the rate at which the transaction log is being checkpointed. |
Checkpoint Urgency |
Checkpoint Urgency is expressed as a percentage. |
Checkpoints/sec |
Checkpoints/sec is the rate at which checkpoints are being performed. |
Commit files/sec |
Commit files/sec is the rate at which the engine is forcing a flush of the disk cache. On Windows NT and NetWare platforms, the disk cache does not need to be flushed because unbuffered (direct) I/O is used. |
Commits/sec |
Commits/sec is the rate at which Commit requests are being handled. |
Context Switch Checks/sec |
Context Switch Checks/sec is the rate at which the current engine thread is volunteering to give up the CPU to another engine thread. |
Context Switches/sec |
Context Switches/sec is the rate at which the current engine thread is being changed. |
Continue Requests/sec |
Continue Requests/sec is the rate at which "CONTINUE" requests are being issued to the engine. |
Corrupt Packets/sec |
Corrupt Packets/sec is the rate at which corrupt network packets are being received. |
Current IO |
Current IO is the current number of file I/Os issued by the engine which have not yet completed. |
Current Reads |
Current Reads is the current number of file reads issued by the engine which have not yet completed. |
Current Writes |
Current Writes is the current number of file writes issued by the engine which have not yet completed. |
Cursor |
Cursor is the number of declared cursors that are currently being maintained by the engine. |
Dirty Pages |
Dirty Pages is the number of pages in the cache which must be written out and which do not belong to temporary files. |
Disk Index Internal Reads/sec |
Disk Index Internal Reads/sec is the rate at which index internal-node pages are being read from disk. |
Disk Index Leaf Reads/sec |
Disk Index Leaf Reads/sec is the rate at which index leaf pages are being read from disk. |
Disk Reads/sec |
Disk Reads/sec is the rate at which pages are being read from file. |
Disk SyncReads/sec |
Disk SyncReads/sec is the rate at which pages are being read synchronously from disk. |
Disk SyncWrite Other/sec |
Disk SyncWrite Other/sec is the rate at which pages are being written synchronously to disk for a reason not covered by other "Disk SyncWrites _____/sec" counters. |
Disk SyncWrites Checkpoint/sec |
Disk SyncWrites Checkpoint/sec is the rate at which pages are being written synchronously to disk for a checkpoint. |
Disk SyncWrites Extend/sec |
Disk SyncWrites Extend/sec is the rate at which pages are being written synchronously to disk while extending a database file. |
Disk SyncWrites Free Current/sec |
Disk SyncWrites Free Current/sec is the rate at which pages are being written synchronously to disk to free a page that cannot remain in the in-memory free list. |
Disk SyncWrites Free Push/sec |
Disk SyncWrites Free Push/sec is the rate at which pages are being written synchronously to disk to free a page that can remain in the in-memory free list. |
Disk SyncWrites Log/sec |
Disk SyncWrites Log/sec is the rate at which pages are being written synchronously to the transaction log. |
Disk SyncWrites Rollback/sec |
Disk SyncWrites Rollback/sec is the rate at which pages are being written synchronously to the rollback log. |
Disk SyncWrites/sec |
Disk SyncWrites/sec is the rate at which pages are being written synchronously to disk. It is the sum of all the other "Disk SyncWrites _____/sec" counters. |
Disk Table Reads/sec |
Disk Table Reads/sec is the rate at which table pages are being read from disk. |
Disk Waitreads/sec |
Disk Waitreads/sec is the rate at which the engine is waiting synchronously for the completion of a read IO operation which was originally issued as an asynchronous read. Waitreads often occur due to cache misses on systems that support asynchronous IO. |
Disk Waitwrites/sec |
Disk Waitwrites/sec is the rate at which the engine is waiting synchronously for the completion of a write IO operation which was originally issued as an asynchronous write. |
Disk Writes/sec |
Disk Writes/sec is the rate at which modified pages are being written to disk. |
Dropped Packets/sec |
Dropped Packets/sec is the rate at which network packets are being dropped due to lack of buffer space. |
Extend Database/sec |
Extend Database/sec is the rate (in pages/sec) at which the database file is being extended. |
Extend Temporary File/sec |
Extend Temporary File/sec is the rate (in pages/sec) at which temporary files are being extended. |
Free Buffers |
Number of free network buffers. |
Freelist Write Current/sec |
Freelist Write Current/sec is the rate at which pages that cannot remain in the in-memory free list are being freed. |
Freelist Write Push/sec |
Freelist Write Push/sec is the rate at which pages that can remain in the in-memory free list are being freed. |
Full compares/sec |
Full compares/sec is the rate at which comparisons beyond the hash value in an index must be performed. |
IO to Recover |
IO to Recover is the estimated number of IO operations required to recover the database. |
Idle Active/sec |
Idle Active/sec is the rate at which the engine's idle thread becomes active to do idle writes, idle checkpoints, etc. |
Idle Checkpoints/sec |
Idle Checkpoints/sec is the rate at which checkpoints are completed by the engine's idle thread. An idle checkpoint occurs whenever the idle thread writes out the last dirty page in the cache. |
Idle Waits/sec |
Idle Waits/sec is the number of times per second that the server goes idle waiting for IO completion or a new request. |
Idle Writes/sec |
Idle Writes/sec is the rate at which disk writes are being issued by the engine's idle thread. |
Index Fills |
Index Fills is the number of times a new temporary merge index is created. |
Index Merges |
Index Merges is the number of times a temp index has been merged into a main index |
Index adds/sec |
Index adds/sec is the rate at which entries are being added to indexes. |
Index lookups/sec |
Index lookups/sec is the rate at which entries are being looked up in indexes. |
Lock Table Pages |
Lock Table Pages is the number of pages used to store lock information. |
Main Heap Pages |
Main Heap Pages is the number of pages used for global engine data structures. |
Map Pages |
Map Pages is the number of map pages used for accessing the lock table, frequency table, and table layout. |
Maximum IO |
Maximum IO is the maximum value that "Current IO" has reached. |
Maximum Reads |
Maximum Reads is the maximum value that "Current Reads" has reached. |
Maximum Writes |
Maximum Writes is the maximum value that "Current Writes" has reached. |
Multi-packets Received/sec |
Multi-packets Received/sec is the rate at which multi-packet deliveries are being received. |
Multi-packets Transmitted/sec |
Multi-packets Transmitted/sec is the rate at which multi-packet deliveries are being transmitted. |
Open cursors |
Open cursors is the number of open cursors that are currently being maintained by the engine. |
Packets Received/sec |
Packets Received/sec is the rate at which network packets are being received. |
Packets Transmitted/sec |
Packets Transmitted/sec is the rate at which network packets are being transmitted. |
Page Relocations/sec |
Page Relocations/sec is the rate at which relocatable heap pages are being read from the temporary file. |
Pending requests/sec |
Pending requests/sec is the rate at which the engine is detecting the arrival of new requests. |
Ping1/sec |
Ping1/sec is the rate at which ping requests which go all the way down into the engine are serviced. |
Ping2/sec |
Ping2/sec is the rate at which ping requests which are turned around at the top of the protocol stack are serviced. |
Procedure Pages |
Procedure Pages is the number of relocatable heap pages used for procedures. |
Read Hints Used/sec |
Read Hints Used/sec is the rate at which page-read operations are being satisfied immediately from cache thanks to an earlier read hint. |
Read Hints/sec |
A read hint is an asynchronous read operation for a page that the server is likely to need soon. Read Hints/sec is the rate at which such read operations are being issued. |
Recovery Urgency |
Recovery Urgency is expressed as a percentage. |
Redo Free Commits/sec |
A "Redo Free Commit" occurs when a commit of the transaction (redo) log is requested but the log has already been written (so the commit was done for "free"). |
Redo Rewrites/sec |
Redo Rewrites/sec is the rate at which pages that were previously written to the transaction log (but were not full) are being written to the transaction log again (but with more data added). |
Redo Writes/sec |
Redo Writes/sec is the rate at which pages are being written to the transaction (redo) log. |
Relocatable Heap Pages |
Relocatable Heap Pages is the number of pages used for relocatable heaps (cursors, statements, procedures, triggers, views, etc.). |
Remoteput Wait/sec |
Remoteput Wait/sec is the rate at which the communication link must wait because it does not have buffers available to send information. This statistic is collected for NetBIOS (both sessions and datagrams) and IPX protocols only. |
Requests/sec |
Requests/sec is the rate at which the engine is being entered to allow it to handle a new request or continue processing an existing request. |
Rereads Queued/sec |
A reread occurs when a read request for a page is received by the database IO subsystem while an asynchronous read IO operation has been posted to the operating system but has not completed. Rereads Queued/sec is the rate at which this condition is occurring. |
Rereceived Packets/sec |
Rereceived Packets/sec is the rate at which duplicate network packets are being received. |
Retransmitted Packets/sec |
Retransmitted Packets/sec is the rate at which network packets are being retransmitted. |
Rollback Log Pages |
Rollback Log Pages is the number of pages in the rollback log. |
Rollback/sec |
Rollback/sec is the rate at which Rollback requests are being handled. |
Adaptive Server Anywhere |
The Adaptive Server Anywhere object provides information about the database server. |
Sends Failed/sec |
Sends Failed/sec is the rate at which the underlying protocol(s) failed to send a packet. |
Statement |
Statement is the number of prepared statements that are currently being maintained by the engine. |
TotalBuffers |
TotalBuffers number of network buffers. |
Trigger Pages |
Trigger Pages is the number of relocatable heap pages used for triggers. |
Unscheduled requests |
Unscheduled requests is the number of requests that are currently queued up waiting for an available engine thread. |
View Pages |
View Pages is the number of relocatable heap pages used for views. |
Voluntary blocks/sec |
Voluntary blocks/sec is the rate at which engine threads voluntarily block on pending disk IO. |
Waitread Full Compare/sec |
Waitread Full Compare/sec is the rate at which read requests associated with a full comparison (a comparison beyond the hash value in an index) must be satisfied by a synchronous read operation. |
Waitread Optimizer/sec |
Waitread Optimizer/sec is the rate at which read requests posted by the optimizer must be satisfied by a synchronous read operation. |
Waitread Other/sec |
Waitread Other/sec is the rate at which read requests from other sources must be satisfied by a synchronous read operation. |
Waitread SysConnection/sec |
Waitread SysConnection/sec is the rate at which read requests posted from the system connection must be satisfied by a synchronous read operation. The system connection is a special connection that is used as the context before a connection is made and for operations performed outside of a client connection. |
Waitread Temporary Table/sec |
Waitread Temporary Table/sec is the rate at which read requests for a temporary table must be satisfied by a synchronous read operation. |