147 lines
8.9 KiB
HTML
147 lines
8.9 KiB
HTML
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<!DOCTYPE html
|
|||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|||
|
<html lang="en-us" xml:lang="en-us">
|
|||
|
<head>
|
|||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|||
|
<meta name="security" content="public" />
|
|||
|
<meta name="Robots" content="index,follow" />
|
|||
|
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
|
|||
|
<meta name="DC.Type" content="reference" />
|
|||
|
<meta name="DC.Title" content="Bitmap probe" />
|
|||
|
<meta name="abstract" content="A bitmap probe operation is used to test row numbers generated by a separate operation against the selected rows of a temporary bitmap. The row numbers can be generated by any operation that constructs a row number for a table. That row number is then used to probe into a temporary bitmap to determine if that row number matches the selection used to generate the temporary bitmap." />
|
|||
|
<meta name="description" content="A bitmap probe operation is used to test row numbers generated by a separate operation against the selected rows of a temporary bitmap. The row numbers can be generated by any operation that constructs a row number for a table. That row number is then used to probe into a temporary bitmap to determine if that row number matches the selection used to generate the temporary bitmap." />
|
|||
|
<meta name="DC.subject" content="definitions, bitmap probe access method, temporary bitmap, probe access method, bitmap probe, access method, access method" />
|
|||
|
<meta name="keywords" content="definitions, bitmap probe access method, temporary bitmap, probe access method, bitmap probe, access method, access method" />
|
|||
|
<meta name="DC.Relation" scheme="URI" content="rzajqtempbit.htm" />
|
|||
|
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
|
|||
|
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 1998, 2006" />
|
|||
|
<meta name="DC.Format" content="XHTML" />
|
|||
|
<meta name="DC.Identifier" content="rzajqbitprobe" />
|
|||
|
<meta name="DC.Language" content="en-us" />
|
|||
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
|||
|
<!-- US Government Users Restricted Rights -->
|
|||
|
<!-- Use, duplication or disclosure restricted by -->
|
|||
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
|||
|
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
|
|||
|
<link rel="stylesheet" type="text/css" href="./ic.css" />
|
|||
|
<title>Bitmap probe</title>
|
|||
|
</head>
|
|||
|
<body id="rzajqbitprobe"><a name="rzajqbitprobe"><!-- --></a>
|
|||
|
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
|
|||
|
<h1 class="topictitle1">Bitmap probe</h1>
|
|||
|
<div><p>A bitmap probe operation is used to test row numbers generated
|
|||
|
by a separate operation against the selected rows of a temporary bitmap. The
|
|||
|
row numbers can be generated by any operation that constructs a row number
|
|||
|
for a table. That row number is then used to probe into a temporary bitmap
|
|||
|
to determine if that row number matches the selection used to generate the
|
|||
|
temporary bitmap.</p>
|
|||
|
<div class="section"><p>The use of a bitmap probe operation allows the optimizer to generate
|
|||
|
a plan that can take advantage of any sequencing provided by an index, but
|
|||
|
still use the bitmap to perform additional selection before any Table Probe
|
|||
|
operations.</p>
|
|||
|
</div>
|
|||
|
<div class="section"><p>A bitmap probe is identical to a row number list probe operation.
|
|||
|
The only difference between the two operations is that a row number list probe
|
|||
|
is performed over a list of row addresses while the bitmap probe is performed
|
|||
|
over a bitmap that represents the row addresses.</p>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="border" border="1" rules="all"><caption>Table 1. Bitmap probe attributes</caption><thead align="left"><tr><th valign="top" width="30.96446700507614%" id="d0e43">Data access method</th>
|
|||
|
<th valign="top" width="69.03553299492386%" id="d0e45">Bitmap probe attributes</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody><tr><td valign="top" width="30.96446700507614%" headers="d0e43 "><strong>Description</strong></td>
|
|||
|
<td valign="top" width="69.03553299492386%" headers="d0e45 ">The temporary bitmap is quickly probed based upon the
|
|||
|
row number generated by a separate operation.</td>
|
|||
|
</tr>
|
|||
|
<tr><td valign="top" width="30.96446700507614%" headers="d0e43 "><strong>Advantages</strong></td>
|
|||
|
<td valign="top" width="69.03553299492386%" headers="d0e45 "><ul><li>The temporary bitmap only contains a reference to a rows' address, no
|
|||
|
data, so the temporary can be efficiently probed within memory</li>
|
|||
|
<li>The row numbers represented within the bitmap are sorted to provide efficient
|
|||
|
lookup processing to test the underlying table</li>
|
|||
|
<li>Selection is performed as the bitmap is generated to subset the number
|
|||
|
of selected rows in the temporary object</li>
|
|||
|
</ul>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr><td valign="top" width="30.96446700507614%" headers="d0e43 "><strong>Considerations</strong></td>
|
|||
|
<td valign="top" width="69.03553299492386%" headers="d0e45 ">Since the bitmap only contains the addresses of the
|
|||
|
selected rows in the table, a separate Table Probe operation must be performed
|
|||
|
in order to fetch the table rows </td>
|
|||
|
</tr>
|
|||
|
<tr><td valign="top" width="30.96446700507614%" headers="d0e43 "><strong>Likely to be used</strong></td>
|
|||
|
<td valign="top" width="69.03553299492386%" headers="d0e45 "><ul><li>When the use of temporary results is allowed by the query environmental
|
|||
|
parameter (ALWCPYDTA) </li>
|
|||
|
<li>When the cost of creating and probing the bitmap is justified by reducing
|
|||
|
the number of Table Probe operations that must be performed</li>
|
|||
|
<li>When multiple indexes over the same table need to be combined in order
|
|||
|
to minimize the number of selected rows</li>
|
|||
|
</ul>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr><td valign="top" width="30.96446700507614%" headers="d0e43 "><strong>Example SQL statement</strong></td>
|
|||
|
<td valign="top" width="69.03553299492386%" headers="d0e45 "><pre>CREATE INDEX X1 ON Employee (WorkDept)
|
|||
|
CREATE ENCODED VECTOR INDEX EVI2 ON
|
|||
|
Employee (Salary)
|
|||
|
CREATE ENCODED VECTOR INDEX EVI3 ON
|
|||
|
Employee (Job)
|
|||
|
|
|||
|
SELECT * FROM Employee
|
|||
|
WHERE WorkDept = 'E01' AND Job = 'CLERK'
|
|||
|
AND Salary = 5000
|
|||
|
ORDER BY WorkDept</pre>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr><td valign="top" width="30.96446700507614%" headers="d0e43 "><strong>Messages indicating use</strong></td>
|
|||
|
<td valign="top" width="69.03553299492386%" headers="d0e45 ">There are multiple ways in which a bitmap probe can
|
|||
|
be indicated through the messages. The messages in this example illustrate
|
|||
|
how the Classic Query Engine will indicate a bitmap probe was used. <ul><li>Optimizer Debug: <pre>CPI4328 -- Access path of file X1 was used by query.
|
|||
|
CPI4338 -– 2 Access path(s) used for bitmap
|
|||
|
processing of file EMPLOYEE. </pre>
|
|||
|
</li>
|
|||
|
<li>PRTSQLINF: <pre>SQL4008 -- Index X1 used for table 1.
|
|||
|
SQL4011 -- Index scan-key row positioning
|
|||
|
used on table 1.
|
|||
|
SQL4032 -- Index EVI2 used for bitmap
|
|||
|
processing of table 1.
|
|||
|
SQL4032 -- Index EVI3 used for bitmap
|
|||
|
processing of table 1. </pre>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr><td valign="top" width="30.96446700507614%" headers="d0e43 "><strong>SMP parallel enabled</strong></td>
|
|||
|
<td valign="top" width="69.03553299492386%" headers="d0e45 ">Yes</td>
|
|||
|
</tr>
|
|||
|
<tr><td valign="top" width="30.96446700507614%" headers="d0e43 "><strong>Also referred to as</strong></td>
|
|||
|
<td valign="top" width="69.03553299492386%" headers="d0e45 ">Bitmap Probe, Preload <p>Row Number Bitmap Probe</p>
|
|||
|
<p>Row
|
|||
|
Number Bitmap Probe, Preload</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr><td valign="top" width="30.96446700507614%" headers="d0e43 "><strong>Visual Explain icon</strong></td>
|
|||
|
<td valign="top" width="69.03553299492386%" headers="d0e45 "><br /><img src="rzajq528.gif" alt="Bitmap probe icon" /><br /></td>
|
|||
|
</tr>
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</div>
|
|||
|
<div class="section"><p>Using the example above, the optimizer created a temporary bitmap
|
|||
|
for each of the encoded vector indexes. Additionally, an index probe operation
|
|||
|
was performed against the radix index X1 to satisfy the ordering requirement.
|
|||
|
Since the ORDER BY clause requires that the resulting rows be sequenced by
|
|||
|
the WorkDept column, the temporary bitmap can no longer be scanned to process
|
|||
|
the selected rows. However, the temporary bitmap can be probed using a row
|
|||
|
address extracted from the index X1 used to satisfy the ordering. By probing
|
|||
|
the temporary bitmap with the row address extracted from index probe operation,
|
|||
|
the sequencing of the keys in the index X1 are preserved and the row can still
|
|||
|
be tested against the selected rows within the bitmap.</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div>
|
|||
|
<div class="familylinks">
|
|||
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="rzajqtempbit.htm" title="The temporary bitmap is a temporary object that allows the optimizer to sequence rows based upon their row address (their row number). The bitmap can be either scanned or probed by the optimizer to satisfy different operations of the query.">Temporary bitmap</a></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</body>
|
|||
|
</html>
|