<?xml version="1.0" encoding="utf-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Myths on bitmap indexes</title>
	<atom:link href="http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/feed" rel="self" type="application/rss+xml" />
	<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes</link>
	<description>Weblog for the AMIS Technology corner</description>
	<lastBuildDate>Fri, 10 Feb 2012 16:47:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: John Wu</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-264656</link>
		<dc:creator>John Wu</dc:creator>
		<pubDate>Wed, 10 Oct 2007 01:45:55 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-264656</guid>
		<description>For those who are really advanturous, I have been working on something called FastBit.  It is available for free under LGPL license.  You may download the source code at http://sdm.lbl.gov/fastbit/src/.  There are quite a bit of research work behind this software.  In 2001, we found it to be about 12 times faster than the best commercially available compressed bitmap indexes, see http://crd.lbl.gov/%7Ekewu/ps/LBNL-48975.html and http://crd.lbl.gov/%7Ekewu/ps/LBNL-49627.html.  There are also extensive theoretical analysis of the method as well, see http://crd.lbl.gov/%7Ekewu/ps/LBNL-49626.html.  You can also see a small number of applications at http://sdm.lbl.gov/fastbit/applications.html.</description>
		<content:encoded><![CDATA[<p>For those who are really advanturous, I have been working on something called FastBit.  It is available for free under LGPL license.  You may download the source code at <a href="http://sdm.lbl.gov/fastbit/src/" rel="nofollow">http://sdm.lbl.gov/fastbit/src/</a>.  There are quite a bit of research work behind this software.  In 2001, we found it to be about 12 times faster than the best commercially available compressed bitmap indexes, see <a href="http://crd.lbl.gov/%7Ekewu/ps/LBNL-48975.html" rel="nofollow">http://crd.lbl.gov/%7Ekewu/ps/LBNL-48975.html</a> and <a href="http://crd.lbl.gov/%7Ekewu/ps/LBNL-49627.html" rel="nofollow">http://crd.lbl.gov/%7Ekewu/ps/LBNL-49627.html</a>.  There are also extensive theoretical analysis of the method as well, see <a href="http://crd.lbl.gov/%7Ekewu/ps/LBNL-49626.html" rel="nofollow">http://crd.lbl.gov/%7Ekewu/ps/LBNL-49626.html</a>.  You can also see a small number of applications at <a href="http://sdm.lbl.gov/fastbit/applications.html" rel="nofollow">http://sdm.lbl.gov/fastbit/applications.html</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert H. Goretsky</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-262591</link>
		<dc:creator>Robert H. Goretsky</dc:creator>
		<pubDate>Mon, 24 Sep 2007 19:53:04 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-262591</guid>
		<description>I have a data warehouse, which is bulk loaded on a nightly basis.  When doing the INSERTs into a table with multiple BITMAP indexes, performance slows to a crawl.  However, disabling and then re-creating all of the bitmap indexes would take even longer than waiting for this slow INSERT performance.  Any hints/ideas here?  Thanks from Robert H. Goretsky of Hoboken, NJ</description>
		<content:encoded><![CDATA[<p>I have a data warehouse, which is bulk loaded on a nightly basis.  When doing the INSERTs into a table with multiple BITMAP indexes, performance slows to a crawl.  However, disabling and then re-creating all of the bitmap indexes would take even longer than waiting for this slow INSERT performance.  Any hints/ideas here?  Thanks from Robert H. Goretsky of Hoboken, NJ</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Wu</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-262511</link>
		<dc:creator>John Wu</dc:creator>
		<pubDate>Sat, 22 Sep 2007 20:29:39 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-262511</guid>
		<description>There are a lot of interest ideas in the academic research publications
, does anyone have any idea where oracle is going to adopt some of them?</description>
		<content:encoded><![CDATA[<p>There are a lot of interest ideas in the academic research publications<br />
, does anyone have any idea where oracle is going to adopt some of them?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jaromir D.B. Nemec</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-178806</link>
		<dc:creator>Jaromir D.B. Nemec</dc:creator>
		<pubDate>Fri, 22 Dec 2006 11:56:01 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-178806</guid>
		<description>After I encountered a bitmap index of BLEVEL 12 (see http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:1208435961077#16907176305528) I am more care full with usage of BITMAP INDEX on dynamic data. 
This was in 8i. But things are changing in Oracle sometimes more quickly that the Myths can react…

Jaromir D.B. Nemec</description>
		<content:encoded><![CDATA[<p>After I encountered a bitmap index of BLEVEL 12 (see <a href="http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:1208435961077#16907176305528)" rel="nofollow">http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:1208435961077#16907176305528)</a> I am more care full with usage of BITMAP INDEX on dynamic data.<br />
This was in 8i. But things are changing in Oracle sometimes more quickly that the Myths can react…</p>
<p>Jaromir D.B. Nemec</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-169056</link>
		<dc:creator>Jonathan Lewis</dc:creator>
		<pubDate>Sun, 10 Dec 2006 01:34:09 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-169056</guid>
		<description>I don&#039;t think I&#039;ve ever heard any of these &quot;myths&quot; expressed in this way. However, taking them in order: 1) I have had several requests for help regarding the way in which bitmap indexes grow dramatically in size following a series of small changes - especially when commits are intermittent. Bitmap indexes BECOME large when subject to OLTP-like activity. 2) Bitmap indexes are often highly appropriate for data warehouses. Bitmap indexes are usually highly inappropriate for OLTP systems unless they are indexing read-only tables - because of the concurrency effects, and the way in which bitmap indexes can grow dramatically because during updates. 3) DML on tables with bitmap indexes is often subject to concurrency problems, and can easily run into deadlock problems because of the structure of the index entries. This can result in VERY slow processing. There are very good reasons why you should not use bitmap indexes in OLTP systems, unless the tables you index are read-only (or nearly read-only). Might I suggest that you consider taking this blog entry down, doing some more tests, and then rewriting it. Regards Jonathan Lewis </description>
		<content:encoded><![CDATA[<p>I don&#8217;t think I&#8217;ve ever heard any of these &quot;myths&quot; expressed in this way. However, taking them in order: 1) I have had several requests for help regarding the way in which bitmap indexes grow dramatically in size following a series of small changes &#8211; especially when commits are intermittent. Bitmap indexes BECOME large when subject to OLTP-like activity. 2) Bitmap indexes are often highly appropriate for data warehouses. Bitmap indexes are usually highly inappropriate for OLTP systems unless they are indexing read-only tables &#8211; because of the concurrency effects, and the way in which bitmap indexes can grow dramatically because during updates. 3) DML on tables with bitmap indexes is often subject to concurrency problems, and can easily run into deadlock problems because of the structure of the index entries. This can result in VERY slow processing. There are very good reasons why you should not use bitmap indexes in OLTP systems, unless the tables you index are read-only (or nearly read-only). Might I suggest that you consider taking this blog entry down, doing some more tests, and then rewriting it. Regards Jonathan Lewis</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Karl r.</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-167199</link>
		<dc:creator>Karl r.</dc:creator>
		<pubDate>Thu, 07 Dec 2006 12:21:03 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-167199</guid>
		<description>Due to the nature of bitmap indexes (the rowid mut be calculated) do we not run into heavy CPU Usage instead of I/O Usage having a lot of DML?

Greetings
Karl</description>
		<content:encoded><![CDATA[<p>Due to the nature of bitmap indexes (the rowid mut be calculated) do we not run into heavy CPU Usage instead of I/O Usage having a lot of DML?</p>
<p>Greetings<br />
Karl</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Sinke</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-167197</link>
		<dc:creator>Patrick Sinke</dc:creator>
		<pubDate>Thu, 07 Dec 2006 12:18:24 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-167197</guid>
		<description>Laurent: ah, that explains it. The case is a bit more specific than I thought. So when you insert in another session a value which is &quot;locked&quot; in the first session, the transaction waits for the other to complete. This of course causes massive waits which causes performance degradation. Interesting!</description>
		<content:encoded><![CDATA[<p>Laurent: ah, that explains it. The case is a bit more specific than I thought. So when you insert in another session a value which is &#8220;locked&#8221; in the first session, the transaction waits for the other to complete. This of course causes massive waits which causes performance degradation. Interesting!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Laurent Schneider</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-167187</link>
		<dc:creator>Laurent Schneider</dc:creator>
		<pubDate>Thu, 07 Dec 2006 12:02:23 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-167187</guid>
		<description>did you try my test on 10.2.0.3?

Session 1:
SQL&gt; create table t(name varchar2(20), gender varchar2(10));

Table created.

SQL&gt; create bitmap index i on t(gender);

Index created.

SQL&gt; insert into t values (&#039;Marc&#039;, &#039;male&#039;);

1 row created.

Session 2:
SQL&gt; insert into t values (&#039;Mary&#039;,&#039;female&#039;);

1 row created.

SQL&gt; insert into t values (&#039;Jack&#039;,&#039;male&#039;);

As you see, the fact that it is not convenient for OLTP is more than a myth!

Regards and thanks for starting the debate :-P</description>
		<content:encoded><![CDATA[<p>did you try my test on 10.2.0.3?</p>
<p>Session 1:<br />
SQL&gt; create table t(name varchar2(20), gender varchar2(10));</p>
<p>Table created.</p>
<p>SQL&gt; create bitmap index i on t(gender);</p>
<p>Index created.</p>
<p>SQL&gt; insert into t values (&#8216;Marc&#8217;, &#8216;male&#8217;);</p>
<p>1 row created.</p>
<p>Session 2:<br />
SQL&gt; insert into t values (&#8216;Mary&#8217;,'female&#8217;);</p>
<p>1 row created.</p>
<p>SQL&gt; insert into t values (&#8216;Jack&#8217;,'male&#8217;);</p>
<p>As you see, the fact that it is not convenient for OLTP is more than a myth!</p>
<p>Regards and thanks for starting the debate <img src='http://technology.amis.nl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Sinke</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-167157</link>
		<dc:creator>Patrick Sinke</dc:creator>
		<pubDate>Thu, 07 Dec 2006 11:20:48 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-167157</guid>
		<description>Edwin: I performed your test on Oracle 10.2.0.2.0 and in that version it&#039;s not an issue anymore, I can&#039;t reproduce the . So that proves there&#039;s still myths!
I do not claim that everything in my blog is true, or that I did cover every possible case. On the contrary! What I do want to say is: do not dismiss any &quot;new&quot; feature because it doesn&#039;t work in your particular situation or database version. Test what works best in every situation and in every new version of the database. See for yourself, test and try, and choose the best alternative.

Many examples I see here are about Oracle 8.1.7 or even 8.0.3. It is not said that those problems are fixed in newer versions, but they probably are.

I think Stewart words it very well: it are not so much myths as it are half-truths. Many of those half-truths exist and it&#039;s up to us to find out what is true and what not. Every time again. And when I read all the comments (thank you all again!) I see that there&#039;s still a lot more to find out for me on this subject. :)</description>
		<content:encoded><![CDATA[<p>Edwin: I performed your test on Oracle 10.2.0.2.0 and in that version it&#8217;s not an issue anymore, I can&#8217;t reproduce the . So that proves there&#8217;s still myths!<br />
I do not claim that everything in my blog is true, or that I did cover every possible case. On the contrary! What I do want to say is: do not dismiss any &#8220;new&#8221; feature because it doesn&#8217;t work in your particular situation or database version. Test what works best in every situation and in every new version of the database. See for yourself, test and try, and choose the best alternative.</p>
<p>Many examples I see here are about Oracle 8.1.7 or even 8.0.3. It is not said that those problems are fixed in newer versions, but they probably are.</p>
<p>I think Stewart words it very well: it are not so much myths as it are half-truths. Many of those half-truths exist and it&#8217;s up to us to find out what is true and what not. Every time again. And when I read all the comments (thank you all again!) I see that there&#8217;s still a lot more to find out for me on this subject. <img src='http://technology.amis.nl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gary</title>
		<link>http://technology.amis.nl/blog/1420/myths-on-bitmap-indexes/comment-page-1#comment-166768</link>
		<dc:creator>Gary</dc:creator>
		<pubDate>Thu, 07 Dec 2006 01:14:21 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1420#comment-166768</guid>
		<description>We had a look at using bitmap indexes in an OLTP application, and it was a very poor fit and we abandoned it.
Firstly we hit &quot;Myth 1&quot; with the size of the bitmap indexes expanding MASSIVELY when lots of single row inserts/updates/deletes (or small number of rows) were done for the indexed columns. These single/few row changes are the bread-and-butter of OLTP databases.
Secondly, &quot;Myth 2&quot;. Its not so much the nature of the data, but the nature of the data processing. Data warehouse queries expect to deal with hundreds/thousands and even millions of rows (eg the orders submitted on a given day). OLTP queries expect to deal with single/several/dozens of rows (eg the items on a specific order). Bitmap indexes are used on RELATIVELY low cardinality columns, ie ones that may identify thousands of records out of millions, not ones that identify dozens of records out of millions.
Now many &#039;OLTP&#039; databases will have some queries/reports that do deal with thousands of rows, and bitmap indexes may be appropriate there. However bitmaps aren&#039;t really appropriate for the &#039;bread-and-butter&#039; OLTP queries.
Thirdly, &quot;Myth 3&quot;. Most of the &#039;poor performance&#039; comes from locking/concurrency issues and from the IO associated with Myth 1.

Function based indexes are a totally different issue and they are definately under represented.</description>
		<content:encoded><![CDATA[<p>We had a look at using bitmap indexes in an OLTP application, and it was a very poor fit and we abandoned it.<br />
Firstly we hit &#8220;Myth 1&#8243; with the size of the bitmap indexes expanding MASSIVELY when lots of single row inserts/updates/deletes (or small number of rows) were done for the indexed columns. These single/few row changes are the bread-and-butter of OLTP databases.<br />
Secondly, &#8220;Myth 2&#8243;. Its not so much the nature of the data, but the nature of the data processing. Data warehouse queries expect to deal with hundreds/thousands and even millions of rows (eg the orders submitted on a given day). OLTP queries expect to deal with single/several/dozens of rows (eg the items on a specific order). Bitmap indexes are used on RELATIVELY low cardinality columns, ie ones that may identify thousands of records out of millions, not ones that identify dozens of records out of millions.<br />
Now many &#8216;OLTP&#8217; databases will have some queries/reports that do deal with thousands of rows, and bitmap indexes may be appropriate there. However bitmaps aren&#8217;t really appropriate for the &#8216;bread-and-butter&#8217; OLTP queries.<br />
Thirdly, &#8220;Myth 3&#8243;. Most of the &#8216;poor performance&#8217; comes from locking/concurrency issues and from the IO associated with Myth 1.</p>
<p>Function based indexes are a totally different issue and they are definately under represented.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

