<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>停止空想 &#187; index</title>
	<atom:link href="http://neal.bangpie.net/tag/index/feed/" rel="self" type="application/rss+xml" />
	<link>http://neal.bangpie.net</link>
	<description>老张的空中之家</description>
	<lastBuildDate>Fri, 06 Nov 2009 15:35:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>online/非online create rebuild index的区别。</title>
		<link>http://neal.bangpie.net/2007/07/online%e9%9d%9eonline-create-rebuild-index%e7%9a%84%e5%8c%ba%e5%88%ab%e3%80%82/</link>
		<comments>http://neal.bangpie.net/2007/07/online%e9%9d%9eonline-create-rebuild-index%e7%9a%84%e5%8c%ba%e5%88%ab%e3%80%82/#comments</comments>
		<pubDate>Sun, 29 Jul 2007 07:49:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[index]]></category>

		<guid isPermaLink="false">http://neal.bangpie.net/?p=324</guid>
		<description><![CDATA[alter index XX  rebulid  online  或者create index  XXX on  tableXX (ID) online 与不加online的相比，加了online的不阻塞DML。在大的系统中，如果不加online， index 是加不上去的， 并且会造成整个系统的问题。 原因如下： piner介绍说： 他们加的锁的级别不一样，online是一个级别为2的RS锁，不阻塞级别为3的RX锁，也就是 dml时候加在表上的TM锁。 但是，阻塞大部分的DDL加在表上的X类型的TM锁 如果普通的create index，如果没有online，加的则是级别为4的S类型TM锁。这个会阻塞DML语句加在表上面的类型为RX的TM锁。所以，这个时候表锁都加不上，更不用行锁了，阻塞在表上面。 简单一句话：加 online时 ：DDL锁 是有的，但是没有DML锁。不加 online ,DDL锁和DML锁都有]]></description>
		<wfw:commentRss>http://neal.bangpie.net/2007/07/online%e9%9d%9eonline-create-rebuild-index%e7%9a%84%e5%8c%ba%e5%88%ab%e3%80%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Block Selectivity and Row Selectivity</title>
		<link>http://neal.bangpie.net/2006/06/block-selectivity-and-row-selectivity/</link>
		<comments>http://neal.bangpie.net/2006/06/block-selectivity-and-row-selectivity/#comments</comments>
		<pubDate>Mon, 05 Jun 2006 14:06:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[index]]></category>

		<guid isPermaLink="false">http://neal.bangpie.net/?p=166</guid>
		<description><![CDATA[部分来自 Cary Millsap   Row selectivity 就是说select的行占该表中所有行的百分比 Block selectivity 就是说select的行所拥有的块占整个表块的百分比   我写过篇文章——Select多少百分比的数据才可以使用index？（blog上面有） 这个百分比指的是row selectivity。但是block selectivity也非常的重要。因为如果row selectivity非常小，比如100万行的表，select *　from tab where x=’a’ ，只有1万行， 但是该表每个块上面都有这个行，也就是说block selectivity非常大 ，这样在select的时候就需要将全部的块都select一遍，但是根据row selectivity，就肯定使用index， 这样反而严重的影响了效率。 其实也就是说数据的物理分布相当的重要，这是我们在建立索引的时候不得不考虑的问题。   另外还有一点原来的那篇文章也没有提到，那就是数据的逻辑分布。比如上面的例子，该表有100万行的数据，x列上面有10个distinct值，比如1~10，2~10都是较少的出现，但是x=1出现了90多万行，也就是说这个表在这一列上严重的skew了。一般的对该表进行分析或者使用对该表空间进行分析的命令： exec dbms_stats.gather_table_stats (‘user’,’tab’) ; 这时并没有对indexed columns进行数据逻辑分布的柱状图分析，可以通过user_tab_col_statistics的num_buckes列来验证，这时该列为1，也就是说没有柱状图。这个时候在select * from x=1的时候，还是使用了该列上的index，效率低下。但是 exec dbms_stats.gather_table_stats (‘user’,’tab’, method_opt=&#62;’for indexed columns size 75); 这样显性的收集柱状图信息的命令就可以达到让上面的select 选择全表扫描这一执行计划的目的。   应该说数据的逻辑分布还是可以归到row selectivity 的范畴里面。如果x=1的行多了，全表扫描，如果少了则使用index，但是row selectivity毕竟解决不了下面这样的问题。     EC_PO_ID   Block            Block [...]]]></description>
		<wfw:commentRss>http://neal.bangpie.net/2006/06/block-selectivity-and-row-selectivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

