The database server's multiprogramming level is the maximum number of tasks that can be active at a time. When a client-side request arrives at the database server, the task created for that request is assigned to a worker, if one is available. A request with a worker assigned to it is called an active request. If all available workers are busy, then the request is placed in a special queue called the unscheduled request queue and the request is classified as an Unscheduled Request. Similarly, an active task is one that is currently being serviced by a worker. An active task may be executing an access plan operator, or performing some other function, but may also be blocked, waiting for a resource (such as an I/O operation, or a lock on a row). An unscheduled task is one that is ready to execute, but is waiting for an available worker. The number of active tasks that can execute simultaneously depends on the number of server threads and the number of logical processors in use on the computer.
SQL Anywhere lets DBAs choose between allowing the database server to dynamically tune the multiprogramming level based on server throughput (the default) or configuring the multiprogramming level manually. You can configure the multiprogramming level settings when you start a database server by specifying database server options (-gna, -gnl, and -gnh), or after the database server is running by using the MinMultiprogrammingLevel, MaxMultiprogrammingLevel, and CurrentMultiprogrammingLevel properties with the sa_server_option system procedure.
The following table summarizes the command line and server options that control the database server's multiprogramming level:
Database server option (starting database servers) | sa_server_option value (running database servers) | Description |
---|---|---|
-gn | CurrentMultiProgrammingLevel | Sets the multiprogramming level of the database server. |
-gna | AutoMultiProgrammingLevel | Turns on and off dynamic tuning of the database server's multiprogramming level |
-gnh | MaxMultiprogrammingLevel | Sets the maximum number of tasks that the database server can execute concurrently |
-gnl | MinMultiProgrammingLevel | Sets the minimum number of tasks that the database server can execute concurrently |
Understanding the effects of different multiprogramming level settings
Adjust the multiprogramming level manually
Discuss this page in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |