<?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>Oracle - Concepts et Exemples &#187; global index</title>
	<atom:link href="https://blog.developpez.com/pachot/tag/global-index/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/pachot</link>
	<description>Les fonctionalités et concepts d&#039;Oracle à partir de traductions et de démos</description>
	<lastBuildDate>Sun, 03 Apr 2016 20:36:21 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>12c: &#8216;update global indexes&#8217; enfin très rapide sur drop et truncate</title>
		<link>https://blog.developpez.com/pachot/12c_global_index_maintenance/</link>
		<comments>https://blog.developpez.com/pachot/12c_global_index_maintenance/#comments</comments>
		<pubDate>Tue, 06 Aug 2013 20:48:58 +0000</pubDate>
		<dc:creator><![CDATA[pachot]]></dc:creator>
				<category><![CDATA[MicroLearning]]></category>
		<category><![CDATA[12c]]></category>
		<category><![CDATA[global index]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/pachot/?p=614</guid>
		<description><![CDATA[On partitionne les tables pour 2 raisons: Performance: aller lire un plus petit segment en full scan, ou un plus petit index local grâce au partition pruning Maintenabilité: faire des opérations de purge, archivage, reorganisation, voir chargement (avec exchange partition) &#8230; <a href="https://blog.developpez.com/pachot/12c_global_index_maintenance/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>On partitionne les tables pour 2 raisons:</p>
<ul>
<li>Performance: aller lire un plus petit segment en full scan, ou un plus petit index local grâce au partition pruning</li>
<li>Maintenabilité: faire des opérations de purge, archivage, reorganisation, voir chargement (avec exchange partition) de manière très facile</li>
</ul>
<p>Mais toutes les requêtes ne font pas de partition pruning, et on est amené créer des index globaux pour des raisons de performances. Mais alors on perd de la maintenabilité: les opérations sur les partitions vont:
<ul>
<li>soit rendre l&rsquo;index unusable, qu&rsquo;il faudra rebuilder complètement. Ce n&rsquo;est pas acceptable lorsque notre maintenance ne touchait qu&rsquo;une partition parmi beaucoup d&rsquo;autres</li>
<li>soit utiliser &lsquo;update global indexes&rsquo; pour maintenir l&rsquo;index au fur et à mesure. Mais l&rsquo;opération devient alors très longue.</li>
</ul>
<p>Et pourtant, s&rsquo;il s&rsquo;agit d&rsquo;un DROP PARTITION ou TRUNCATE PARTITION, cette maintenance d&rsquo;index consiste seulement à nettoyer les entrées d&rsquo;index qui deviennent orphelines (i.e qui adressent un rowid qui n&rsquo;existe plus).</p>
<p>Alors la 12c a optimisé cela en faisant l&rsquo;opération en 2 temps, utilisant la fonctionnalité &lsquo;Asynchronous Global Index Maintenance&rsquo; ou &lsquo;Fast Index maintenance':</p>
<ol>
<li>un ALTER TABLE &#8230; DROP/TRUNCATE PARTITION UPDATE GLOBAL INDEXES</li>
<p> ne va pas toucher aux index globaux. Il va seulement enregistrer le data_object_id du segment qu&rsquo;on vient de supprimer (un truncate ne supprime pas vraiement le segment, mais en change son data_object_id ce qui revient au même logiquement). C&rsquo;est enregistré dans la table du dictionnaire SYS.INDEX_ORPHANED_ENTRY$.</p>
<li>les requêtes qui lisent l&rsquo;index chargent ces infos pour ignorer tous les rowid qui référencent ce data_object_id</li>
<li>un job automatique (un de plus) va faire le nettoyage de manière asynchrone</li>
</ol>
<p>On peut faire ce nettoyage nous même avec</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ALTER INDEX ... COALESCE CLEANUP;</div></div>
<p>mais aussi appeler</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">exec dbms_part.cleanup_gidx;</div></div>
<p>qui va faire ce coalesce sur tous les index référencés par</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SYS.INDEX_ORPHANED_ENTRY$</div></div>
<p><ins datetime="2013-08-08T15:36:37+00:00">Différentes variations dans la <a href="http://ora-demo.pachot.net/12c_global_index_maintenance.html" title="demo" target="_blank">demo</a></ins>.<br />
Le cleanup peut charger la machine, c&rsquo;est peut-être mieux de l&rsquo;anticiper à un moment de faible charge plutôt que de le laisser tourner à 2 heures du matin comme c&rsquo;est planifié par défaut.</p>
<p>C&rsquo;est une amélioration importante: en Entreprise Edition, il n&rsquo;y a plus à hésiter pour partitionner les tables qui grossissent afin que l&rsquo;augmentation du volume de l&rsquo;historique ne pénalise pas les performances. Sans avoir peur de définir trop d&rsquo;index global. Une fois partitionné, ce sera facile de maintenir les plus anciennes partitions: purger, archiver, déplacer sur des tablespaces (move online en 12c) qui sont sur des disques moins chers. Et plus on laisse les tables grossir, plus l&rsquo;opération de partitionnement sera compliquée !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
