Database server configuration of the multiprogramming level

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 network 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 network database server's multiprogramming level
-gnh MaxMultiprogrammingLevel Sets the maximum number of tasks that the network database server can execute concurrently
-gnl MinMultiProgrammingLevel Sets the minimum number of tasks that the network database server can execute concurrently
 Tuning the multiprogramming level
 See also

Effects of different multiprogramming level settings
Manual adjustment of the multiprogramming level