ibm-information-center/dist/eclipse/plugins/i5OS.ic.rzakj_5.4.0.1/rzakjoptimize.htm

188 lines
13 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="concept" />
<meta name="DC.Title" content="Optimize performance for commitment control" />
<meta name="abstract" content="Using commitment control requires resources that can affect system performance. Several factors affect system performance regarding commitment control." />
<meta name="description" content="Using commitment control requires resources that can affect system performance. Several factors affect system performance regarding commitment control." />
<meta name="DC.Relation" scheme="URI" content="rzakjmanagecom.htm" />
<meta name="DC.Relation" scheme="URI" content="rzakjminimizelock.htm" />
<meta name="DC.Relation" scheme="URI" content="rzakjsizetrans.htm" />
<meta name="DC.Relation" scheme="URI" content="rzakjsoftcommi.htm" />
<meta name="DC.Relation" scheme="URI" content="../rzaki/rzakikickoff.htm" />
<meta name="DC.Relation" scheme="URI" content="rzakjokleaveout.htm" />
<meta name="DC.Relation" scheme="URI" content="rzakjallowrdonly.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 2004, 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2004, 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="rzakjoptimize" />
<meta name="DC.Language" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>Optimize performance for commitment control</title>
</head>
<body id="rzakjoptimize"><a name="rzakjoptimize"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Optimize performance for commitment control</h1>
<div><p> Using commitment control requires resources that can affect system
performance. Several factors affect system performance regarding commitment
control. </p>
<div class="section"><h4 class="sectiontitle">Factor that does not affect performance</h4><dl><dt class="dlterm">Open a file</dt>
<dd>If you open a file without specifying the commit open option, no additional
system resource is used even if a commitment definition has been started.
For more information about specifying the commit open option, see the appropriate
high-level language reference manual.</dd>
</dl>
</div>
<div class="section"><h4 class="sectiontitle">Factors that degrade performance</h4><dl><dt class="dlterm">Journal</dt>
<dd>Journaling a file requires system resources. However, in most cases journaling
performs better with commitment control than without commitment control. If
you specify only after-images, commitment control changes this to both before-images
and after-images while commitment control is in effect. Typically this is
a space, not a performance, consideration.</dd>
<dt class="dlterm">Commit operation</dt>
<dd>If any changes were made to journaled resources during the transaction,
each commit of a transaction adds two entries to each journal related to those
resources. The number of entries added can increase significantly for a large
volume of small transactions. You might want to place the journal receivers
in a separate disk pool from the journals.</dd>
<dt class="dlterm">Rollback operation</dt>
<dd>Because commitment control must roll back the pending changes recorded
in the database, additional system resources are required whenever a rollback
occurs. Also, if record changes are pending, a rollback operation causes additional
entries to be added to the journal.</dd>
<dt class="dlterm">Start Commitment Control (STRCMTCTL) and End Commitment Control (ENDCMTCTL)
commands</dt>
<dd>Additional overhead is incurred by the system each time a commitment definition
is started using the STRCMTCTL command and is ended using the ENDCMTCTL command.
Avoid using the STRCMTCTL and ENDCMTCTL commands for each transaction. Use
them only when necessary. You can establish a commitment definition at the
beginning of an interactive job and use it for the duration of the job.</dd>
<dt class="dlterm">Use more than one journal for commitment control transactions</dt>
<dd>With two-phase commit, files that are opened under commitment control
can be journaled to more than one journal. However, using more than one journal
takes additional system resources to manage the commitment definition. Using
more than one journal can also make recovery more complicated.</dd>
<dt class="dlterm">Record locking</dt>
<dd>Record locking can affect other applications. The number of records locked
within a particular job increases the overall system resources used for the
job. Applications needing to access the same record must wait for the transaction
to end.</dd>
<dt class="dlterm">Request SEQONLY(*YES)</dt>
<dd> If you request the SEQONLY(*YES) option (by using the OVRDBF command
or the application program implicitly attempts to use SEQONLY(*YES)) and the
file is opened for input only under commitment control with LCKLVL(*ALL),
the option is changed to SEQONLY(*NO). This option can affect the performance
of input files because records will not be blocked.</dd>
<dt class="dlterm">Request a record-level change for a database file when save-while-active
processing is active</dt>
<dd>A request to make a record-level change under commitment control for a
database file might be delayed if the commitment definition is at a commitment
boundary and a save-while-active operation is running in a different job.
This can happen when a file is journaled to the same journal as some of the
objects on the save request.<div class="note"><span class="notetitle">Note:</span> The Status column on the Work with Active
Jobs (WRKACTJOB command) display shows CMTW (commit wait) when a job is being
held due to save-while-active checkpoint processing.</div>
</dd>
<dt class="dlterm">Commit or roll back changes when save-while-active processing is active</dt>
<dd>A commit or rollback operation might be delayed at a commitment boundary
when a save-while-active operation is running in a different job. This can
happen when an API commitment resource was previously added to the commitment
definition, unless the API resource was added using the QTNADDCR API and the <var class="varname">Allow
normal save processing</var> field has a value of <samp class="codeph">Y</samp>.<p>Because
the job is held during the commit or rollback request, and because a commit
or rollback request can be performed only for a single commitment definition
at a time, jobs with more than one commitment definition with API commitment
resources added can prevent a save-while-active operation from completing.</p>
<div class="note"><span class="notetitle">Note:</span> If
you use the new save with partial transactions feature the object can be saved
without ending a commitment definition.</div>
</dd>
<dt class="dlterm">Request an object-level change when save-while-active processing is active</dt>
<dd>A request to make an object-level change under commitment control might
be delayed if the commitment definition is at a commitment boundary and a
save-while-active operation is running in a different job. This can happen
when an object-level change is made while the save-while-active operation
is running against the library the object is in. For example, the create SQL
table operation under commitment control for table MYTBL in library MYSQLLIB
might be delayed when a save-while-active operation is running against library
MYSQLLIB.<div class="note"><span class="notetitle">Note:</span> If the wait time exceeds 60 seconds, inquiry message CPA8351
is sent to ask the user whether to continue waiting or cancel the operation.</div>
</dd>
<dt class="dlterm">Add an API resource using the QTNADDCR API</dt>
<dd>A request to add an API commitment resource using the QTNADDCR API might
be delayed if all commitment definitions for the job are at a commitment boundary
and a save-while-active operation is running in a different job.<div class="note"><span class="notetitle">Notes:</span> <ol><li>If the wait time exceeds 60 seconds, inquiry message CPA8351 is sent to
ask the user whether to continue waiting or cancel the operation.</li>
<li>This does not apply to API resources that were added using the QTNADDCR
API if the <var class="varname">Allow normal save processing</var> field has a value
of <samp class="codeph">Y</samp>.</li>
</ol>
</div>
</dd>
</dl>
</div>
<div class="section"><h4 class="sectiontitle">Factors that improve performance</h4><dl><dt class="dlterm">Use a default journal</dt>
<dd>Using a default journal can help performance if you close and reopen all
files under commitment control while the commitment definition is active.
However, using a default journal with OMTJRNE(*NONE) degrades the performance
of commit and rollback operations.</dd>
<dt class="dlterm">Select a last agent</dt>
<dd>Performance is enhanced when a last agent is selected because fewer interactions
between the system and the last agent are required during a commit operation.
However, if a communications failure occurs during a commit operation, the
commit operation will not complete until resynchronization completes, regardless
of the value of the wait for outcome option. Such a failure is rare but this
option allows the application writer to consider the negative impact of causing
the user to wait indefinitely for the resynchronization to complete when a
failure does occur. Weigh this against the performance enhancement that is
provided by last agent optimization during successful commit operations. This
consideration is generally more significant for interactive jobs than for
batch jobs.<p>The default is that a last agent is permitted to be selected
by the system but the user can modify this value using the QTNCHGCO API.</p>
</dd>
<dt class="dlterm">Not use the wait for outcome option</dt>
<dd>When remote resources are under commitment control, performance is improved
when the Wait for Outcome option is set to <samp class="codeph">N</samp> (No) and all
remote systems support presumed abort. The Wait for Outcome option is set
to N by the system for DRDA<sup>®</sup> and DDM application when the first connection is
made to a remote system. APPC applications must explicitly set the Wait for
Outcome option, or the default value of <samp class="codeph">Y</samp> will be used.</dd>
<dt class="dlterm">Select the OK to Leave Out option</dt>
<dd>Performance is improved when the OK to Leave Out option is selected.</dd>
<dt class="dlterm">Select the Vote Read Only option</dt>
<dd>Performance is improved when the Vote Read Only option is selected.</dd>
</dl>
</div>
</div>
<div>
<ul class="ullinks">
<li class="ulchildlink"><strong><a href="rzakjminimizelock.htm">Minimize locks</a></strong><br />
A typical way to minimize record locks is to release the record lock. (This technique does not work if LCKLVL(*ALL) has been specified.)</li>
<li class="ulchildlink"><strong><a href="rzakjsizetrans.htm">Manage transaction size</a></strong><br />
Another way to minimize record locks is to manage the size of the transaction.</li>
<li class="ulchildlink"><strong><a href="rzakjsoftcommi.htm">Soft commit</a></strong><br />
You can improve the performance of database transactions with soft commit. Soft commit limits the number of times that the system writes journal entries associated with a transaction to disk.</li>
</ul>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="rzakjmanagecom.htm" title="Manage a system with commitment control by using these instructions.">Manage transactions and commitment control</a></div>
</div>
<div class="relconcepts"><strong>Related concepts</strong><br />
<div><a href="../rzaki/rzakikickoff.htm">Journal management</a></div>
<div><a href="rzakjokleaveout.htm" title="Normally, the transaction manager at every location in the transaction program network participates in every commit or rollback operation. To improve performance, you can set up some or all locations in a transaction to allow the transaction manager to indicate OK to leave out.">Commitment definition for two-phase commit: Indicate OK to leave out</a></div>
<div><a href="rzakjallowrdonly.htm" title="Normally, a transaction manager participates in both phases of commit processing. To improve the performance of commit processing, you can set up some or all locations in a transaction to allow the transaction manager to vote read-only.">Commitment definition for two-phase commit: Allow vote read-only</a></div>
</div>
</div>
</body>
</html>