Threads
A thread is a task for a virtual processor in the same way that the virtual processor is a task for the CPU.
The virtual processor is a task that the operating system schedules for execution on the CPU; a database server thread is a task that the virtual processor schedules internally for processing. Threads are sometimes called lightweight processes because they are like processes, but they make fewer demands on the operating system.
Database server virtual processors are multithreaded because they run multiple concurrent threads.
The nature of threads is as follows.
Operating system | Action |
---|---|
UNIX™ | A thread is a task that the virtual processor schedules internally for processing. |
Windows™ | A thread is a task that the virtual processor schedules internally for processing. Because the virtual processor is implemented as a Windows thread, database server threads run within Windows threads. |
A virtual processor runs threads on behalf of SQL client applications (session threads) and also to satisfy internal requirements (internal threads). In most cases, for each connection by a client application, the database server runs one session thread. The database server runs internal threads to accomplish, among other things, database I/O, logging I/O, page cleaning, and administrative tasks. For cases in which the database server runs multiple session threads for a single client, see Parallel processing.
A user thread is a database server thread that services requests from client applications. User threads include session threads, called sqlexec threads, which are the primary threads that the database server runs to service client applications.
User threads also include a thread to service requests from the onmode utility, threads for recovery, B-tree scanner threads, and page-cleaner threads.
To display active user threads, use onstat -u. For more information about monitoring sessions and threads, see HCL OneDB™ Performance Guide.