Each coserver within the database server is multithreaded. This multithreaded architecture allows each coserver to provide the highest degree of parallelism. The database server extends this parallelism across coservers by allowing tables to be fragmented across multiple coservers and by providing parallel execution of database operations across multiple coservers.
Within each coserver, the database operations are performed in a multithreaded fashion. Queries are broken down into component steps that can often be performed in parallel within a given coserver.
Each coserver uses a relatively small number of processes called virtual processors to support multiple client applications or large DSS queries. A virtual processor is a multithreaded process that can serve multiple clients and, where necessary, run multiple threads to work in parallel for a single query. For more information about multithreaded execution within a coserver, refer to Virtual Processors and Threads.
The database server provides for parallel execution both within coservers and between coservers. You can spread the data from a given table across multiple disks managed by multiple coservers. This feature is known as fragmentation. Spreading data across multiple disks allows coservers to perform disk I/O operations in parallel, thereby accessing multiple table fragments simultaneously.
Multiple threads associated with a query can run simultaneously on multiple coservers, and on single coservers that are running on SMP computers. This capability is referred to as the parallel database query (PDQ) feature. Together, fragmentation and PDQ allow the database server to perform parallel operations on tables.
Although a coserver can perform disk I/O only on the table fragments that it manages, each coserver accesses its own disks independently and in parallel with other coservers. Data managed by a particular coserver is accessed only by that coserver. This arrangement ensures that coservers can run with the highest degree of parallelism in a shared-nothing environment.
For instance, if your database server is configured with 4 coservers and each coserver manages 6 disks, you could fragment data from a single table across all 24 disks. If each coserver runs on a separate SMP platform with at least 6 CPUs, the database server can take advantage of the shared-nothing architecture of each coserver to access all of the table fragments simultaneously for fully parallel processing. As your table grows, you can add more computers and configure more coservers to increase the capacity of the your database server. In this way, you can process larger and larger amounts of information in roughly the same time.
For a description of fragmented tables, refer to the IBM Informix: Database Design and Implementation Guide. For information about using fragmentation and PDQ for maximum performance, see your IBM Informix: Performance Guide.
Home | [ Top of Page | Previous Page | Next Page | Contents | Index ]