
Following Chapter 2 Oracle Database In-Memory Architecture (IM-2.2)
This article is the second part of the IM architecture
CPU Architecture: SIMD Vector Processing
For data that needs to be scanned in the IM column store, the database uses SIMD (Single Instruction, Multiple Data) vector processing.
The IM column store maximizes the number of column entries that can be loaded into vector registers and evaluated. Instead of evaluating each entry in the column one at a time, the database evaluates a set of column values in a single CPU instruction. SIMD vector processing allows the database to scan billions of rows per second.
For example, an application issues a query to find the total number of orders in the sales table where the promo_id value is <span>9999</span>. The sales table resides in the IM column store. The query starts by scanning only the sales.promo_id column, as shown in the figure below:
Figure 2-12 SIMD Vector Processing
The CPU computes the data as follows:
-
Load the first 8 values (the number varies based on data type and compression mode) from the promo_id column into the SIMD registers and compare them to the value 9999 in a single instruction.
-
Discard entries.
-
Load another 8 values into the SIMD registers and continue in this manner until all entries have been evaluated.
The Shandong Oracle User Group (SDOUG) is a vibrant, young non-profit organization aimed at providing a communication platform for technology enthusiasts in Jinan and surrounding areas. SDOUG organizes offline technical sharing events from time to time to promote the development of IT technology in the region and help technology enthusiasts improve themselves. Sharing technology and sharing joy, SDOUG is on the way.
