You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2014/10/29 18:24:15 UTC

svn commit: r1635209 - in /phoenix/site: publish/tuning.html source/src/site/markdown/tuning.md

Author: jamestaylor
Date: Wed Oct 29 17:24:15 2014
New Revision: 1635209

URL: http://svn.apache.org/r1635209
Log:
Update formatting in tuning page

Modified:
    phoenix/site/publish/tuning.html
    phoenix/site/source/src/site/markdown/tuning.md

Modified: phoenix/site/publish/tuning.html
URL: http://svn.apache.org/viewvc/phoenix/site/publish/tuning.html?rev=1635209&r1=1635208&r2=1635209&view=diff
==============================================================================
--- phoenix/site/publish/tuning.html (original)
+++ phoenix/site/publish/tuning.html Wed Oct 29 17:24:15 2014
@@ -0,0 +1,567 @@
+
+<!DOCTYPE html>
+<!--
+ Generated by Apache Maven Doxia at 2014-10-29
+ Rendered using Reflow Maven Skin 1.1.0 (http://andriusvelykis.github.io/reflow-maven-skin)
+-->
+<html  xml:lang="en" lang="en">
+
+	<head>
+		<meta charset="UTF-8" />
+		<title>Configuration and Tuning | Apache Phoenix</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+		<meta name="description" content="" />
+		<meta http-equiv="content-language" content="en" />
+
+		<link href="http://netdna.bootstrapcdn.com/bootswatch/2.3.2/united/bootstrap.min.css" rel="stylesheet" />
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-responsive.min.css" rel="stylesheet" />
+		<link href="./css/bootswatch.css" rel="stylesheet" />
+		<link href="./css/reflow-skin.css" rel="stylesheet" />
+
+		<link href="http://yandex.st/highlightjs/7.5/styles/default.min.css" rel="stylesheet" />
+		
+		<link href="./css/lightbox.css" rel="stylesheet" />
+		
+		<link href="./css/site.css" rel="stylesheet" />
+		<link href="./css/print.css" rel="stylesheet" media="print" />
+		
+		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
+		<!--[if lt IE 9]>
+			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+		<![endif]-->
+
+
+
+	</head>
+
+	<body class="page-tuning project-phoenix-site" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
+
+		<div class="navbar navbar-fixed-top">
+			<div class="navbar-inner">
+				<div class="container">
+					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
+						<span class="icon-bar"></span>
+						<span class="icon-bar"></span>
+						<span class="icon-bar"></span>
+					</a>
+					<a class="brand" href="index.html"><div class="xtoplogo"></div></a>
+					<div class="nav-collapse collapse" id="top-nav-collapse">
+						<ul class="nav pull-right">
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">About <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="index.html" title="Overview">Overview</a></li>
+									<li ><a href="recent.html" title="New Features">New Features</a></li>
+									<li ><a href="roadmap.html" title="Roadmap">Roadmap</a></li>
+									<li ><a href="performance.html" title="Performance">Performance</a></li>
+									<li ><a href="team.html" title="Team">Team</a></li>
+									<li ><a href="contributing.html" title="Contributing">Contributing</a></li>
+									<li ><a href="resources.html" title="Resources">Resources</a></li>
+									<li ><a href="mailing_list.html" title="Mailing Lists">Mailing Lists</a></li>
+									<li ><a href="source.html" title="Source Repository">Source Repository</a></li>
+									<li ><a href="issues.html" title="Issue Tracking">Issue Tracking</a></li>
+									<li ><a href="download.html" title="Download">Download</a></li>
+									<li class="divider"/>
+									<li ><a href="http://www.apache.org/licenses/" title="License" class="externalLink">License</a></li>
+									<li ><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship" class="externalLink">Sponsorship</a></li>
+									<li ><a href="http://www.apache.org/foundation/thanks.html" title="Thanks" class="externalLink">Thanks</a></li>
+									<li ><a href="http://www.apache.org/security/" title="Security" class="externalLink">Security</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Using <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="faq.html" title="F.A.Q.">F.A.Q.</a></li>
+									<li ><a href="Phoenix-in-15-minutes-or-less.html" title="Quick Start">Quick Start</a></li>
+									<li ><a href="building.html" title="Building">Building</a></li>
+									<li class="active"><a href="" title="Tuning">Tuning</a></li>
+									<li ><a href="upgrade_from_2_2.html" title="Upgrade from 2.2">Upgrade from 2.2</a></li>
+									<li class="divider"/>
+									<li ><a href="secondary_indexing.html" title="Secondary Indexes">Secondary Indexes</a></li>
+									<li ><a href="joins.html" title="Joins">Joins</a></li>
+									<li ><a href="views.html" title="Views">Views</a></li>
+									<li ><a href="multi-tenancy.html" title="Multi tenancy">Multi tenancy</a></li>
+									<li ><a href="sequences.html" title="Sequences">Sequences</a></li>
+									<li ><a href="array_type.html" title="ARRAY type">ARRAY type</a></li>
+									<li ><a href="salted.html" title="Salted Tables">Salted Tables</a></li>
+									<li ><a href="paged.html" title="Paged Queries">Paged Queries</a></li>
+									<li ><a href="dynamic_columns.html" title="Dynamic Columns">Dynamic Columns</a></li>
+									<li ><a href="skip_scan.html" title="Skip Scan">Skip Scan</a></li>
+									<li ><a href="bulk_dataload.html" title="Bulk Loading">Bulk Loading</a></li>
+									<li ><a href="tracing.html" title="Tracing">Tracing</a></li>
+									<li ><a href="update_statistics.html" title="Statistics Collection">Statistics Collection</a></li>
+									<li class="divider"/>
+									<li ><a href="phoenix_on_emr.html" title="Amazon EMR Support">Amazon EMR Support</a></li>
+									<li ><a href="flume.html" title="Apache Flume Plugin">Apache Flume Plugin</a></li>
+									<li ><a href="pig_integration.html" title="Apache Pig Integration">Apache Pig Integration</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Reference <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="language/index.html" title="Grammar">Grammar</a></li>
+									<li ><a href="language/functions.html" title="Functions">Functions</a></li>
+									<li ><a href="language/datatypes.html" title="Datatypes">Datatypes</a></li>
+								</ul>
+							</li>
+						</ul>
+					</div><!--/.nav-collapse -->
+				</div>
+			</div>
+		</div>
+		
+	<div class="container">
+	
+	<!-- Masthead
+	================================================== -->
+
+	<header>
+	</header>
+
+	<div class="main-body">
+	<div class="row">
+		<div class="span12">
+			<div class="body-content">
+<div class="page-header">
+ <h1>Configuration and Tuning</h1>
+</div> 
+<p>Phoenix provides many different knobs and dials to configure and tune the system to run more optimally on your cluster. The configuration is done through a series of Phoenix-specific properties specified for the most part in your client-side <tt>hbase-site.xml</tt> file. In addition to these properties, there are of course all the <a class="externalLink" href="http://hbase.apache.org/book/config.files.html" target="_blank">HBase configuration</a> properties with the most important ones documented <a class="externalLink" href="http://hbase.apache.org/book/important_configurations.html" target="_blank">here</a>. This blog will focus on the Phoenix-specific properties and touch on some important considerations to maximize Phoenix and HBase performance.<br /> <br /> The table below outlines the full set of Phoenix-specific configuration properties and their defaults. Of these, we’ll talk in depth about some of the most important ones below.<br /> <br /> </p> 
+<table class="bodyTable table table-striped table-hover" border="1"> 
+ <tbody> 
+  <tr class="a"> 
+   <td><b>Property</b></td> 
+   <td><b>Description</b></td> 
+   <td><b>Default </b></td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.query.timeoutMs</small></td> 
+   <td style="text-align: left;">Number of milliseconds after which a query will timeout on the client. Default is 10 min.</td> 
+   <td>600000 </td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.query.keepAliveMs</small></td> 
+   <td style="text-align: left;">When the number of threads is greater than the core in the client side thread pool executor, this is the maximum time in milliseconds that excess idle threads will wait for a new tasks before terminating. Default is 60 sec.</td> 
+   <td>60000</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.query.threadPoolSize</small></td> 
+   <td style="text-align: left;">Number of threads in client side thread pool executor. As the number of machines/cores in the cluster grows, this value should be increased.</td> 
+   <td>128</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.query.queueSize</small></td> 
+   <td>Max queue depth of the bounded round robin backing the client side thread pool executor, beyond which an attempt to queue additional work is rejected by throwing an exception. If zero, a SynchronousQueue is used instead of the bounded round robin queue.</td> 
+   <td>500</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.stats.guidepost.width</small></td> 
+   <td> A server-side parameter that specifies the number of bytes between guideposts. A smaller amount increases parallelization, but also increases the number of chunks which must be merged on the client side. The default value is 100 MB. </td> 
+   <td>104857600</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.stats.guidepost.per.region</small></td> 
+   <td> A server-side parameter that specifies the number of guideposts per region. If set to a value greater than zero, then the guidepost width is determiend by the <tt>MAX_FILE_SIZE of table / phoenix.stats.guidepost.per.region</tt>. Otherwise, if not set then the <tt>phoenix.stats.guidepost.width</tt> parameter is used. No default value. </td> 
+   <td>None</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.stats.updateFrequency</small></td> 
+   <td> A server-side paramater that determines the frequency in milliseconds for which statistics will be refreshed from the statistics table and subsequently used by the client. The default value is 15 min. </td> 
+   <td>900000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.stats.minUpdateFrequency</small></td> 
+   <td> A client-side parameter that determines the minimum amount of time in milliseconds that must pass before statistics may again be manually collected through another <tt>UPDATE STATISTICS</tt> call. The default value is <tt>phoenix.stats.updateFrequency / 2</tt>. </td> 
+   <td>450000</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.stats.useCurrentTime</small></td> 
+   <td> An advanced server-side parameter that if true causes the current time on the server-side to be used as the timestamp of rows in the statistics table when background tasks such as compactions or splits occur. If false, then the max timestamp found while traversing the table over which statistics are being collected is used as the timestamp. Unless your client is controlling the timestamps while reading and writing data, this parameter should be left alone. The default value is true. </td> 
+   <td>true</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.query.spoolThresholdBytes</small></td> 
+   <td style="text-align: left;">Threshold size in bytes after which results from parallelly executed query results are spooled to disk. Default is 20 mb.</td> 
+   <td>20971520</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.query.maxSpoolToDiskBytes</small></td> 
+   <td style="text-align: left;">Threshold size in bytes up to which results from parallelly executed query results are spooled to disk above which the query will fail. Default is 1 gb.</td> 
+   <td>1024000000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.query.maxGlobalMemoryPercentage</small></td> 
+   <td style="text-align: left;">Percentage of total heap memory (i.e. Runtime.getRuntime().maxMemory()) that all threads may use. Only course grain memory usage is tracked, mainly accounting for memory usage in the intermediate map built during group by aggregation. When this limit is reached the clients block attempting to get more memory, essentially throttling memory usage. Defaults to 15%</td> 
+   <td>15</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.query.maxGlobalMemorySize</small></td> 
+   <td style="text-align: left;">Max size in bytes of total tracked memory usage. By default not specified, however, if present, the lower of this parameter and the phoenix.query.maxGlobalMemoryPercentage will be used </td> 
+   <td>&nbsp;</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.query.maxGlobalMemoryWaitMs</small></td> 
+   <td style="text-align: left;">Maximum amount of time that a client will block while waiting for more memory to become available. After this amount of time, an <tt>InsufficientMemoryException</tt> is thrown. Default is 10 sec.</td> 
+   <td>10000</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.query.maxTenantMemoryPercentage</small></td> 
+   <td style="text-align: left;">Maximum percentage of <tt>phoenix.query.maxGlobalMemoryPercentage</tt> that any one tenant is allowed to consume. After this percentage, an <tt>InsufficientMemoryException</tt> is thrown. Default is 100%</td> 
+   <td>100</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.query.dateFormat</small></td> 
+   <td style="text-align: left;">Default pattern to use for conversion of a date to/from a string, whether through the <tt>TO_CHAR(&lt;date&gt;)</tt> or <tt>TO_DATE(&lt;date-string&gt;)</tt> functions, or through <tt>resultSet.getString(&lt;date-column&gt;)</tt>. Default is yyyy-MM-dd HH:mm:ss</td> 
+   <td>yyyy-MM-dd HH:mm:ss</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.query.numberFormat</small></td> 
+   <td style="text-align: left;">Default pattern to use for conversion of a decimal number to/from a string, whether through the <tt>TO_CHAR(&lt;decimal-number&gt;)</tt> or <tt>TO_NUMBER(&lt;decimal-string&gt;)</tt> functions, or through <tt>resultSet.getString(&lt;decimal-column&gt;)</tt>. Default is #,##0.###</td> 
+   <td>#,##0.###</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.mutate.maxSize</small></td> 
+   <td style="text-align: left;">The maximum number of rows that may be batched on the client before a commit or rollback must be called.</td> 
+   <td>500000</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.mutate.batchSize</small></td> 
+   <td style="text-align: left;">The number of rows that are batched together and automatically committed during the execution of an <tt>UPSERT SELECT</tt> or <tt>DELETE</tt> statement. This property may be overridden at connection time by specifying the <tt>UpsertBatchSize</tt> property value. Note that the connection property value does not affect the batch size used by the coprocessor when these statements are executed completely on the server side.</td> 
+   <td>1000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.query.maxServerCacheBytes</small></td> 
+   <td style="text-align: left;">Maximum size (in bytes) of a single sub-query result (usually the filtered result of a table) before compression and conversion to a hash map. Attempting to hash an intermediate sub-query result of a size bigger than this setting will result in a MaxServerCacheSizeExceededException. Default 100MB.</td> 
+   <td>104857600</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.coprocessor.maxServerCacheTimeToLiveMs</small></td> 
+   <td style="text-align: left;">Maximum living time (in milliseconds) of server caches. A cache entry expires after this amount of time has passed since last access. Consider adjusting this parameter when a server-side IOException(“Could not find hash cache for joinId”) happens. Getting warnings like “Earlier hash cache(s) might have expired on servers” might also be a sign that this number should be increased.</td> 
+   <td>30000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.query.useIndexes</small></td> 
+   <td style="text-align: left;">Determines whether or not indexes are considered by the optimizer to satisfy a query. Default is true </td> 
+   <td>true</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.index.mutableBatchSizeThreshold</small></td> 
+   <td style="text-align: left;">Number of mutations in a batch beyond which index metadata will be sent as a separate RPC to each region server as opposed to included inline with each mutation. Defaults to 5. </td> 
+   <td>5</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.schema.dropMetaData</small></td> 
+   <td style="text-align: left;">Determines whether or not an HBase table is dropped when the Phoenix table is dropped. Default is true </td> 
+   <td>true</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.groupby.spillable</small></td> 
+   <td style="text-align: left;">Determines whether or not a GROUP BY over a large number of distinct values is allowed to spill to disk on the region server. If false, an InsufficientMemoryException will be thrown instead. Default is true </td> 
+   <td>true</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.groupby.spillFiles</small></td> 
+   <td style="text-align: left;">Number of memory mapped spill files to be used when spilling GROUP BY distinct values to disk. Default is 2 </td> 
+   <td>2</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.groupby.maxCacheSize</small></td> 
+   <td style="text-align: left;">Size in bytes of pages cached during GROUP BY spilling. Default is 100Mb </td> 
+   <td>102400000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.groupby.estimatedDistinctValues</small></td> 
+   <td style="text-align: left;">Number of estimated distinct values when a GROUP BY is performed. Used to perform initial sizing with growth of 1.5x each time reallocation is required. Default is 1000 </td> 
+   <td>1000</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.distinct.value.compress.threshold</small></td> 
+   <td style="text-align: left;">Size in bytes beyond which aggregate operations which require tracking distinct value counts (such as COUNT DISTINCT) will use Snappy compression. Default is 1Mb </td> 
+   <td>1024000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.index.maxDataFileSizePerc</small></td> 
+   <td style="text-align: left;">Percentage used to determine the MAX_FILESIZE for the shared index table for views relative to the data table MAX_FILESIZE. The percentage should be estimated based on the anticipated average size of an view index row versus the data row. Default is 50%. </td> 
+   <td>50</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.coprocessor.maxMetaDataCacheTimeToLiveMs</small></td> 
+   <td style="text-align: left;">Time in milliseconds after which the server-side metadata cache for a tenant will expire if not accessed. Default is 30mins </td> 
+   <td>180000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.coprocessor.maxMetaDataCacheSize</small></td> 
+   <td style="text-align: left;">Max size in bytes of total server-side metadata cache after which evictions will begin to occur based on least recent access time. Default is 20Mb </td> 
+   <td>20480000</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.client.maxMetaDataCacheSize</small></td> 
+   <td style="text-align: left;">Max size in bytes of total client-side metadata cache after which evictions will begin to occur based on least recent access time. Default is 10Mb </td> 
+   <td>10240000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.sequence.cacheSize</small></td> 
+   <td style="text-align: left;">Number of sequence values to reserve from the server and cache on the client when the next sequence value is allocated. Only used if not defined by the sequence itself. Default is 100 </td> 
+   <td>100</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.clock.skew.interval</small></td> 
+   <td style="text-align: left;">Delay interval(in milliseconds) when opening SYSTEM.CATALOG to compensate possible time clock skew when SYSTEM.CATALOG moves among region servers. </td> 
+   <td>2000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.index.failure.handling.rebuild</small></td> 
+   <td style="text-align: left;">Boolean flag which turns on/off auto-rebuild a failed index from when some updates are failed to be updated into the index. </td> 
+   <td>true</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.index.failure.handling.rebuild.interval</small></td> 
+   <td style="text-align: left;">Time interval(in milliseconds) for index rebuild backend Job to check if there is an index to be rebuilt </td> 
+   <td>10000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small>phoenix.index.failure.handling.rebuild.overlap.time</small></td> 
+   <td style="text-align: left;">Index rebuild job builds an index from when it failed - the time interval(in milliseconds) in order to create a time overlap to prevent missing updates when there exists time clock skew. </td> 
+   <td>300000</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small>phoenix.query.rowKeyOrderSaltedTable</small></td> 
+   <td style="text-align: left;">Whether or not a non aggregate query returns rows in row key order for salted tables. If this option is turned on, split points may not be specified at table create time, but instead the default splits on each salt bucket must be used. Default is true</td> 
+   <td>true</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small> 
+     <s>
+       phoenix.query.targetConcurrency 
+     </s></small><br />Obsolete as of 3.2/4.2</td> 
+   <td style="text-align: left;">Target concurrent threads to use for a query. It serves as a soft limit on the number of scans into which a query may be split. The value should not exceed the hard limit imposed by<tt> phoenix.query.maxConcurrency</tt>.</td> 
+   <td>32</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small> 
+     <s>
+       phoenix.query.maxConcurrency 
+     </s></small><br />Obsolete as of 3.2/4.2</td> 
+   <td style="text-align: left;">Maximum concurrent threads to use for a query. It servers as a hard limit on the number of scans into which a query may be split. A soft limit is imposed by <tt>phoenix.query.targetConcurrency</tt>.</td> 
+   <td>64</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small> 
+     <s>
+       phoenix.query.maxStatsAge 
+     </s></small><br />Obsolete as of 3.2/4.2</td> 
+   <td>The maximum age of stats in milliseconds after which they will no longer be used (i.e. the stats were not able to be updated in this amount of time and thus are considered too old). Default is 1 day.</td> 
+   <td>1</td> 
+  </tr> 
+  <tr class="b"> 
+   <td><small> 
+     <s>
+       phoenix.query.statsUpdateFrequency 
+     </s></small><br />Obsolete as of 3.2/4.2</td> 
+   <td style="text-align: left;">The frequency in milliseconds at which the stats for each table will be updated. Default is 15 min.</td> 
+   <td>900000</td> 
+  </tr> 
+  <tr class="a"> 
+   <td><small> 
+     <s>
+       phoenix.query.maxIntraRegionParallelization 
+     </s></small><br />Obsolete as of 3.2/4.2</td> 
+   <td style="text-align: left;">The maximum number of threads that will be spawned to process data within a single region during query execution</td> 
+   <td>64</td> 
+  </tr> 
+ </tbody> 
+</table> 
+<br /> 
+<div class="section"> 
+ <div class="section"> 
+  <div class="section"> 
+   <h4 id="Parallelization"> Parallelization</h4> 
+   <p>Phoenix breaks up queries into multiple scans and runs them in parallel through coprocessors to improve performance.&nbsp;Hari Kumar, from Ericsson Labs, did a good job of explaining the performance benefits of parallelization and coprocessors <a class="externalLink" href="http://labs.ericsson.com/blog/hbase-performance-tuners" target="_blank">here</a>.</p> 
+   <p>As of 3.2/4.2, parallelization in Phoenix is driven by the guideposts as determined by the configuration parameters for <a class="externalLink" href="http://phoenix.apache.org/update_statistics.html">statistics collection</a>. Each chunk of data between guideposts will be run in parallel in a separate scan to improve query performance. The chunk size is determined by the server-side <tt>phoenix.stats.guidepost.width</tt> or <tt>phoenix.stats.guidepost.per.region</tt> configuration parameters. Note that at a minimum, separate scans will be run for each table region. Beyond the statistics collection configuration parameters, the client-side <tt>phoenix.query.threadPoolSize</tt> and <tt>phoenix.query.queueSize</tt> parameters and the server-side <tt>hbase.regionserver.handler.count</tt> parameter have an impact on performance.</p> 
+  </div> 
+ </div> 
+</div>
+			</div>
+		</div>
+	</div>
+	</div>
+
+	</div><!-- /container -->
+	
+	<!-- Footer
+	================================================== -->
+	<footer class="well">
+		<div class="container">
+			<div class="row">
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">About</li>
+						<li >
+							<a href="index.html" title="Overview">Overview</a>
+						</li>
+						<li >
+							<a href="recent.html" title="New Features">New Features</a>
+						</li>
+						<li >
+							<a href="roadmap.html" title="Roadmap">Roadmap</a>
+						</li>
+						<li >
+							<a href="performance.html" title="Performance">Performance</a>
+						</li>
+						<li >
+							<a href="team.html" title="Team">Team</a>
+						</li>
+						<li >
+							<a href="contributing.html" title="Contributing">Contributing</a>
+						</li>
+						<li >
+							<a href="resources.html" title="Resources">Resources</a>
+						</li>
+						<li >
+							<a href="mailing_list.html" title="Mailing Lists">Mailing Lists</a>
+						</li>
+						<li >
+							<a href="source.html" title="Source Repository">Source Repository</a>
+						</li>
+						<li >
+							<a href="issues.html" title="Issue Tracking">Issue Tracking</a>
+						</li>
+						<li >
+							<a href="download.html" title="Download">Download</a>
+						</li>
+						<li >
+							<a href="http:divider" title=""></a>
+						</li>
+						<li >
+							<a href="http://www.apache.org/licenses/" title="License" class="externalLink">License</a>
+						</li>
+						<li >
+							<a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship" class="externalLink">Sponsorship</a>
+						</li>
+						<li >
+							<a href="http://www.apache.org/foundation/thanks.html" title="Thanks" class="externalLink">Thanks</a>
+						</li>
+						<li >
+							<a href="http://www.apache.org/security/" title="Security" class="externalLink">Security</a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Using</li>
+						<li >
+							<a href="faq.html" title="F.A.Q.">F.A.Q.</a>
+						</li>
+						<li >
+							<a href="Phoenix-in-15-minutes-or-less.html" title="Quick Start">Quick Start</a>
+						</li>
+						<li >
+							<a href="building.html" title="Building">Building</a>
+						</li>
+						<li class="active">
+							<a href="#" title="Tuning">Tuning</a>
+						</li>
+						<li >
+							<a href="upgrade_from_2_2.html" title="Upgrade from 2.2">Upgrade from 2.2</a>
+						</li>
+						<li >
+							<a href="http:divider" title=""></a>
+						</li>
+						<li >
+							<a href="secondary_indexing.html" title="Secondary Indexes">Secondary Indexes</a>
+						</li>
+						<li >
+							<a href="joins.html" title="Joins">Joins</a>
+						</li>
+						<li >
+							<a href="views.html" title="Views">Views</a>
+						</li>
+						<li >
+							<a href="multi-tenancy.html" title="Multi tenancy">Multi tenancy</a>
+						</li>
+						<li >
+							<a href="sequences.html" title="Sequences">Sequences</a>
+						</li>
+						<li >
+							<a href="array_type.html" title="ARRAY type">ARRAY type</a>
+						</li>
+						<li >
+							<a href="salted.html" title="Salted Tables">Salted Tables</a>
+						</li>
+						<li >
+							<a href="paged.html" title="Paged Queries">Paged Queries</a>
+						</li>
+						<li >
+							<a href="dynamic_columns.html" title="Dynamic Columns">Dynamic Columns</a>
+						</li>
+						<li >
+							<a href="skip_scan.html" title="Skip Scan">Skip Scan</a>
+						</li>
+						<li >
+							<a href="bulk_dataload.html" title="Bulk Loading">Bulk Loading</a>
+						</li>
+						<li >
+							<a href="tracing.html" title="Tracing">Tracing</a>
+						</li>
+						<li >
+							<a href="update_statistics.html" title="Statistics Collection">Statistics Collection</a>
+						</li>
+						<li >
+							<a href="http:divider" title=""></a>
+						</li>
+						<li >
+							<a href="phoenix_on_emr.html" title="Amazon EMR Support">Amazon EMR Support</a>
+						</li>
+						<li >
+							<a href="flume.html" title="Apache Flume Plugin">Apache Flume Plugin</a>
+						</li>
+						<li >
+							<a href="pig_integration.html" title="Apache Pig Integration">Apache Pig Integration</a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Reference</li>
+						<li >
+							<a href="language/index.html" title="Grammar">Grammar</a>
+						</li>
+						<li >
+							<a href="language/functions.html" title="Functions">Functions</a>
+						</li>
+						<li >
+							<a href="language/datatypes.html" title="Datatypes">Datatypes</a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-description">
+					<form action="https://www.google.com/search" method="get"><input value="phoenix.apache.org" name="sitesearch" type="hidden"><input placeholder="Search the site&hellip;" required="required" style="width:170px;" size="18" name="q" id="query" type="search"></form>
+				</div>
+			</div>
+		</div>
+	</footer>
+		
+	<div class="container subfooter">
+		<div class="row">
+			<div class="span12">
+				<p class="pull-right"><a href="#">Back to top</a></p>
+				<p class="copyright">Copyright &copy;2014 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.</p>
+			</div>
+		</div>
+	</div>
+
+	<!-- Le javascript
+	================================================== -->
+	<!-- Placed at the end of the document so the pages load faster -->
+	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+	
+	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
+	<script src="./js/lightbox.js"></script>
+	<script src="./js/jquery.smooth-scroll.min.js"></script>
+	<!-- back button support for smooth scroll -->
+	<script src="./js/jquery.ba-bbq.min.js"></script>
+	<script src="http://yandex.st/highlightjs/7.5/highlight.min.js"></script>
+
+	<script src="./js/reflow-skin.js"></script>
+	
+	</body>
+</html>

Modified: phoenix/site/source/src/site/markdown/tuning.md
URL: http://svn.apache.org/viewvc/phoenix/site/source/src/site/markdown/tuning.md?rev=1635209&r1=1635208&r2=1635209&view=diff
==============================================================================
--- phoenix/site/source/src/site/markdown/tuning.md (original)
+++ phoenix/site/source/src/site/markdown/tuning.md Wed Oct 29 17:24:15 2014
@@ -34,7 +34,7 @@ A server-side parameter that specifies t
 <tr><td><small>phoenix.stats.guidepost.per.region</small></td><td>
 A server-side parameter that specifies the number of guideposts per region.
       If set to a value greater than zero, then the guidepost width is determiend by
-      the <code>MAX_FILE_SIZE of table / phoenix.stats.guidepost.per.region<code>.
+      the <code>MAX_FILE_SIZE of table / phoenix.stats.guidepost.per.region</code>.
 Otherwise, if not set then the <code>phoenix.stats.guidepost.width</code> parameter
 is used. No default value.
 </td><td>None</td></tr>