<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>OpenText Analytics Database 26.2.x – Analyzing workloads</title>
    <link>/en/admin/analyzing-workloads/</link>
    <description>Recent content in Analyzing workloads on OpenText Analytics Database 26.2.x</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/en/admin/analyzing-workloads/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Admin: Getting tuning recommendations</title>
      <link>/en/admin/analyzing-workloads/getting-tuning-recommendations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/analyzing-workloads/getting-tuning-recommendations/</guid>
      <description>
        
        
        &lt;p&gt;Call the function 
&lt;code&gt;&lt;a href=&#34;../../../en/sql-reference/functions/performance-analysis-functions/workload-management-functions/analyze-workload/#&#34;&gt;ANALYZE_WORKLOAD&lt;/a&gt;&lt;/code&gt; to get tuning recommendations for queries and database objects. The function arguments specify what events to analyze and when.&lt;/p&gt;
&lt;h2 id=&#34;setting-scope-and-time-span&#34;&gt;Setting scope and time span&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ANALYZE_WORKLOAD&lt;/code&gt;&#39;s &lt;code&gt;scope&lt;/code&gt; argument determines what to analyze:

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
This argument...&lt;/th&gt; 

&lt;th &gt;
Returns Workload Analyzer recommendations for...&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;&#39;&#39;&lt;/code&gt; (empty string)&lt;/td&gt; 

&lt;td &gt;
All database objects&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
Table name&lt;/td&gt; 

&lt;td &gt;
A specific table&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
Schema name&lt;/td&gt; 

&lt;td &gt;
All objects in the specified schema&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;The optional &lt;code&gt;since-time&lt;/code&gt; argument specifies to return values from all in -scope events starting from &lt;code&gt;since-time&lt;/code&gt; and continuing to the current system status. If you omit &lt;code&gt;since_time&lt;/code&gt;, &lt;code&gt;ANALYZE_WORKLOAD&lt;/code&gt; returns recommendations for events since the last recorded time that you called the function. You must explicitly cast the &lt;code&gt;since-time&lt;/code&gt; string value to either &lt;code&gt;TIMESTAMP&lt;/code&gt; or &lt;code&gt;TIMESTAMPTZ&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The following examples show four ways to express the &lt;code&gt;since-time&lt;/code&gt; argument with different formats. All queries return the same result for workloads on table &lt;code&gt;t1&lt;/code&gt; since October 4, 2012:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT ANALYZE_WORKLOAD(&amp;#39;t1&amp;#39;, TIMESTAMP &amp;#39;2012-10-04 11:18:15&amp;#39;);
=&amp;gt; SELECT ANALYZE_WORKLOAD(&amp;#39;t1&amp;#39;, &amp;#39;2012-10-04 11:18:15&amp;#39;::TIMESTAMPTZ);
=&amp;gt; SELECT ANALYZE_WORKLOAD(&amp;#39;t1&amp;#39;, &amp;#39;October 4, 2012&amp;#39;::TIMESTAMP);
=&amp;gt; SELECT ANALYZE_WORKLOAD(&amp;#39;t1&amp;#39;, &amp;#39;10-04-12&amp;#39;::TIMESTAMPTZ);
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;saving-function-results&#34;&gt;Saving function results&lt;/h2&gt;
&lt;p&gt;Instead of analyzing events since a specific time, you can save results from &lt;code&gt;ANALYZE_WORKLOAD&lt;/code&gt;, by setting the function&#39;s second argument to &lt;code&gt;true&lt;/code&gt;. The default is &lt;code&gt;false&lt;/code&gt;, and no results are saved. After saving function results, subsequent calls to &lt;code&gt;ANALYZE_WORKLOAD&lt;/code&gt; analyze only events since you last saved returned data, and ignore all previous events.&lt;/p&gt;
&lt;p&gt;For example, the following statement returns recommendations for all database objects in all schemas and records this analysis invocation.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT ANALYZE_WORKLOAD(&amp;#39;&amp;#39;, true);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The next invocation of &lt;code&gt;ANALYZE_WORKLOAD&lt;/code&gt; analyzes events from this point forward.&lt;/p&gt;


&lt;h2 id=&#34;observation-count-and-time&#34;&gt;Observation count and time&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;observation_count&lt;/code&gt; column returns an integer that represents the total number of events Workload Analyzerobserved for this tuning recommendation. In each case above, Workload Analyzer is making its first recommendation. Null results in &lt;code&gt;observation_time&lt;/code&gt; only mean that the recommendations are from the current system status instead of from a prior event.&lt;/p&gt;
&lt;h2 id=&#34;tuning-targets&#34;&gt;Tuning targets&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;tuning_parameter&lt;/code&gt; column returns the object on which Workload Analyzer recommends that you apply the tuning action. The parameter of &lt;code&gt;release&lt;/code&gt; in the example above notifies the DBA to set a password for user release.&lt;/p&gt;
&lt;h2 id=&#34;tuning-recommendations-and-costs&#34;&gt;Tuning recommendations and costs&lt;/h2&gt;
&lt;p&gt;Workload Analyzer&#39;s output returns a brief description of tasks you should consider in the &lt;code&gt;tuning_description&lt;/code&gt; column, along with a SQL command you can run, where appropriate, in the &lt;code&gt;tuning_command column&lt;/code&gt;. In records 1 and 2 above, Workload Analyzer recommends that you run the &lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/db-designer/&#34; title=&#34;A tool that analyzes a logical schema definition, sample queries, and sample data, and creates a physical schema () in the form of a SQL script that you deploy automatically or manually.&#34;&gt;Database Designer&lt;/a&gt; on two tables, and in record 3 recommends setting a user&#39;s password. Record 3 also provides the &lt;code&gt;ALTER USER&lt;/code&gt; command to run because the tuning action is a SQL command.&lt;/p&gt;
&lt;p&gt;Output in the &lt;code&gt;tuning_cost&lt;/code&gt; column indicates the cost of running the recommended tuning command:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;LOW&lt;/code&gt;: Running the tuning command has minimal impact on resources. You can perform the tuning operation at any time, like changing the user&#39;s password in Record 3 above.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;MEDIUM&lt;/code&gt;: Running the tuning command has moderate impact on resources.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;HIGH&lt;/code&gt;: Running the tuning command has maximum impact on resources. Depending on the size of your database or table, consider running high-cost operations during off-peak load times.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;p&gt;The following statement tells Workload Analyzer to analyze all events for the &lt;code&gt;locations&lt;/code&gt; table:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT ANALYZE_WORKLOAD(&amp;#39;locations&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Workload Analyzer returns with a recommendation that you run the Database Designer on the table, an operation that, depending on the size of &lt;code&gt;locations&lt;/code&gt;, might incur a high cost:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;-[ RECORD 1 ]----------+------------------------------------------------
observation_count      | 1
first_observation_time |
last_observation_time  |
tuning_parameter       | public.locations
tuning_description     | run database designer on table public.locations
tuning_command         |
tuning_cost            | HIGH
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The following statement analyzes workloads on all tables in the VMart example database since one week before today:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT ANALYZE_WORKLOAD(&amp;#39;&amp;#39;, NOW() - INTERVAL &amp;#39;1 week&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Workload Analyzer returns with the following results:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;-[ RECORD 1 ]----------+------------------------------------------------------
observation_count      | 4
first_observation_time | 2012-02-17 13:57:17.799003-04
last_observation_time  | 2011-04-22 12:05:26.856456-04
tuning_parameter       | store.store_orders_fact.date_ordered
tuning_description     | analyze statistics on table column store.store_orders_fact.date_ordered
tuning_command         | select analyze_statistics(&amp;#39;store.store_orders_fact.date_ordered&amp;#39;);
tuning_cost            | MEDIUM
-[ RECORD 2 ]---------+------------------------------------------------------
...
-[ RECORD 14 ]---------+-----------------------------------------------------
observation_count      | 2
first_observation_time | 2012-02-19 17:52:03.022644-04
last_observation_time  | 2012-02-19 17:52:03.02301-04
tuning_parameter       | SELECT x FROM t WHERE x &amp;gt; (SELECT SUM(DISTINCT x) FROM
                       | t GROUP BY y) OR x &amp;lt; 9;
tuning_description     | consider incremental design on query
tuning_command         |
tuning_cost            | HIGH
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Workload Analyzer finds two issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In record 1, the &lt;code&gt;date_ordered&lt;/code&gt; column in the &lt;code&gt;store.store_orders_fact table&lt;/code&gt; likely has stale statistics, so Workload Analyzer suggests running 
&lt;code&gt;&lt;a href=&#34;../../../en/sql-reference/functions/performance-analysis-functions/statistics-management-functions/analyze-statistics/#&#34;&gt;ANALYZE_STATISTICS&lt;/a&gt;&lt;/code&gt; on that column. The function output also returns the query to run. For example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT ANALYZE_STATISTICS(&amp;#39;store.store_orders_fact.date_ordered&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In record 14, Workload Analyzer identifies an under-performing query in the &lt;code&gt;tuning_parameter&lt;/code&gt; column. It recommends to use the Database Designer to run an incremental design. Workload Analyzer rates the potential cost as &lt;code&gt;HIGH&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;system-table-recommendations&#34;&gt;System table recommendations&lt;/h2&gt;
&lt;p&gt;You can also get tuning recommendations by querying system table 
&lt;code&gt;&lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/tuning-recommendations/#&#34;&gt;TUNING_RECOMMENDATIONS&lt;/a&gt;&lt;/code&gt;, which returns tuning recommendation results from the last &lt;code&gt;ANALYZE_WORKLOAD&lt;/code&gt; call.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT * FROM tuning_recommendations;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;System information that Workload Analyzer uses for its recommendations is held in &lt;a href=&#34;../../../en/sql-reference/system-tables/&#34;&gt;SQL system tables&lt;/a&gt;, so querying the &lt;code&gt;TUNING_RECOMMENDATIONS&lt;/code&gt; system table does not run Workload Analyzer.&lt;/p&gt;
&lt;h2 id=&#34;see-also&#34;&gt;See also&lt;/h2&gt;
&lt;a href=&#34;../../../en/admin/collecting-db-statistics/#&#34;&gt;Collecting database statistics&lt;/a&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Workload analyzer recommendations</title>
      <link>/en/admin/analyzing-workloads/workload-analyzer-recommendations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/analyzing-workloads/workload-analyzer-recommendations/</guid>
      <description>
        
        
        &lt;p&gt;Workload Analyzer monitors database activity and logs recommendations as needed in system table &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/tuning-recommendations/#&#34;&gt;TUNING_RECOMMENDATIONS&lt;/a&gt;. When you run Workload Analyzer, the utility returns the following information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Description of the object that requires tuning&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Recommended action&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SQL command to implement the recommendation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;common-issues-and-recommendations&#34;&gt;Common issues and recommendations&lt;/h2&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Issue&lt;/th&gt; 

&lt;th &gt;
Recommendation&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
No custom resource pools, user queries are typically handled by the GENERAL resource pool.&lt;/td&gt; 

&lt;td &gt;
&lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-resource-pool/&#34;&gt;Create custom resource pools&lt;/a&gt; to handle queries from specific users.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


A projection is identified as rarely or never used to execute queries:&lt;/td&gt; 

&lt;td &gt;


Remove the projection with &lt;a href=&#34;../../../en/sql-reference/statements/drop-statements/drop-projection/#&#34;&gt;DROP PROJECTION&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


User with admin privileges has empty password.&lt;/td&gt; 

&lt;td &gt;


Set the password for user with &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-user/&#34;&gt;ALTER USER...IDENTIFIED BY&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Table has too many partitions.&lt;/td&gt; 

&lt;td &gt;


Alter the table&#39;s partition expression with &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-table/#PartitionBy&#34;&gt;ALTER TABLE&lt;/a&gt;. Also consider &lt;a href=&#34;../../../en/admin/partitioning-tables/defining-partitions/partition-grouping/&#34;&gt;grouping partitions&lt;/a&gt; and &lt;a href=&#34;../../../en/admin/partitioning-tables/hierarchical-partitioning/&#34;&gt;hierarchical partitioning&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Partitioned table data is not fully reorganized after repartitioning.&lt;/td&gt; 

&lt;td  rowspan=&#34;2&#34; &gt;


Reorganize data in the partitioned table with &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-table/#REORGANIZE&#34;&gt;ALTER TABLE...REORGANIZE&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Table has multiple partition keys within the same ROS container.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


&lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/tuple-mover-tm/&#34; title=&#34;The Tuple Mover manages ROS data storage.&#34;&gt;Tuple Mover&lt;/a&gt;&#39;s &lt;a href=&#34;../../../en/sql-reference/config-parameters/tuple-mover-parameters/&#34;&gt;MoveOutInterval&lt;/a&gt; parameter setting is greater than the default value.&lt;/td&gt; 

&lt;td &gt;


Decrease the parameter setting, or reset the parameter to its default setting.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Average CPU usage exceeds 95% for 20 minutes.&lt;/td&gt; 

&lt;td &gt;


Check system processes, or change resource pool settings of parameters PLANNEDCONCURRENCY and/or MAXCONCURRENCY. For details, see &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-resource-pool/#&#34;&gt;ALTER RESOURCE POOL&lt;/a&gt; and &lt;a href=&#34;../../../en/admin/managing-db/managing-workloads/resource-pool-architecture/built-resource-pools-config/#&#34;&gt;Built-in resource pools configuration&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Excessive swap activity; average memory usage exceeds 99% for 10 minutes.&lt;/td&gt; 

&lt;td &gt;


Check system processes&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


A table does not have any Database Designer-designed projections.&lt;/td&gt; 

&lt;td &gt;


Run database designer on the table. For details, see &lt;a href=&#34;../../../en/admin/configuring-db/creating-db-design/general-design-settings/#Incremen&#34;&gt;Incremental Design&lt;/a&gt; .&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Table statistics are stale.&lt;/td&gt; 

&lt;td &gt;


Run &lt;a href=&#34;../../../en/sql-reference/functions/performance-analysis-functions/statistics-management-functions/analyze-statistics/#&#34;&gt;ANALYZE_STATISTICS&lt;/a&gt; on table columns. See also &lt;a href=&#34;../../../en/admin/collecting-db-statistics/#&#34;&gt;Collecting database statistics&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Data distribution in segmented projection is skewed.&lt;/td&gt; 

&lt;td &gt;


Resegment projection on high-cardinality columns. For details, see &lt;a href=&#34;../../../en/admin/configuring-db/creating-db-design/creating-custom-designs/planning-your-design/designing-segmentation/#&#34;&gt;Designing for segmentation&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Attempts to execute a query generated a GROUP BY spill event.&lt;/td&gt; 

&lt;td &gt;


Consider running an &lt;a href=&#34;../../../en/admin/configuring-db/creating-db-design/general-design-settings/#Incremen&#34;&gt;incremental design&lt;/a&gt; on the query.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Internal configuration parameter is not the same across nodes.&lt;/td&gt; 

&lt;td &gt;


Reset configuration parameter with &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-db/&#34;&gt;ALTER DATABASE...SET&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


&lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/last-good-epoch-lge/&#34; title=&#34;A term used in manual recovery, LGE (Last Good Epoch) refers to the most recent epoch that can be recovered.&#34;&gt;LGE&lt;/a&gt; threshold setting is lower than the default setting.&lt;/td&gt; 

&lt;td  rowspan=&#34;4&#34; &gt;


Workload Analyzer does not trigger a tuning recommendation for this scenario unless you altered settings and/or services under the guidance of technical support.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Tuple Mover is disabled.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Too many &lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/ros-read-optimized-store/&#34; title=&#34;Read Optimized Store (ROS) is a highly optimized, read-oriented, disk storage structure, organized by projection.&#34;&gt;ROS&lt;/a&gt; containers since the last &lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/mergeout/&#34; title=&#34;&#34;&gt;mergeout&lt;/a&gt; operation; configuration parameters are set lower than the default.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Too many ROS containers since the last &lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/mergeout/&#34; title=&#34;&#34;&gt;mergeout&lt;/a&gt; operation; the TM Mergeout service is disabled.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;


      </description>
    </item>
    
  </channel>
</rss>
