 




<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: iSeries performance question</title>
	<atom:link href="http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/feed/" rel="self" type="application/rss+xml" />
	<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/</link>
	<description></description>
	<lastBuildDate>Tue, 21 May 2013 22:12:11 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: bogeybetsy</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/#comment-66225</link>
		<dc:creator>bogeybetsy</dc:creator>
		<pubDate>Wed, 29 Jul 2009 18:02:29 +0000</pubDate>
		<guid isPermaLink="false">#comment-66225</guid>
		<description><![CDATA[What if you use SQLRPGLE and do a

Select count(*) into   &lt;b&gt;:@count&lt;/b&gt;
.
.
.

?

Regards,

Allan]]></description>
		<content:encoded><![CDATA[<p>What if you use SQLRPGLE and do a</p>
<p>Select count(*) into   <b>:@count</b><br />
.<br />
.<br />
.</p>
<p>?</p>
<p>Regards,</p>
<p>Allan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: phacops</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/#comment-47042</link>
		<dc:creator>phacops</dc:creator>
		<pubDate>Mon, 27 Jun 2005 12:32:59 +0000</pubDate>
		<guid isPermaLink="false">#comment-47042</guid>
		<description><![CDATA[Dushan, have you considered an index with MAINTENANCE(*DLY).  It is a compile option for a DDS created file; you would need to do a CHGLF for an SQL index. A *DLY index is not maintained until it is actually used, so it should have no affect on the current app, because none of the programs will be using the LF/index.  Unless I missed something it is not the space but the affect on performance that you are concerned about.  I don&#039;t know how many records are added to the large PF between runs of your new application; if there were a lot it might take some time to make the index current, and if there were too many changes the system will do a rebuild index which is what you are trying to avoid.  If nothing else has worked yet I think I would try creating a DDS file, substringing fldz in the definition and using fldx, fldy, and new field as the key.  At this point I&#039;m not sure what next, but possibly doing all the counting in your program.]]></description>
		<content:encoded><![CDATA[<p>Dushan, have you considered an index with MAINTENANCE(*DLY).  It is a compile option for a DDS created file; you would need to do a CHGLF for an SQL index. A *DLY index is not maintained until it is actually used, so it should have no affect on the current app, because none of the programs will be using the LF/index.  Unless I missed something it is not the space but the affect on performance that you are concerned about.  I don&#8217;t know how many records are added to the large PF between runs of your new application; if there were a lot it might take some time to make the index current, and if there were too many changes the system will do a rebuild index which is what you are trying to avoid.  If nothing else has worked yet I think I would try creating a DDS file, substringing fldz in the definition and using fldx, fldy, and new field as the key.  At this point I&#8217;m not sure what next, but possibly doing all the counting in your program.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: fanbot</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/#comment-47043</link>
		<dc:creator>fanbot</dc:creator>
		<pubDate>Fri, 24 Jun 2005 07:55:23 +0000</pubDate>
		<guid isPermaLink="false">#comment-47043</guid>
		<description><![CDATA[As previously stated the OVRDBF is part of the solution.

OVRDBF using the nbrrcs to be retrieved = 32k/record length stating sequential processing. Then with an RPG program read your file sequentially (no keys)and do your evaluation &amp; comparison in the RPG.
OVRDBF FILE(FFFF) NBRRCDS(6000) SEQONLY(*YES)

]]></description>
		<content:encoded><![CDATA[<p>As previously stated the OVRDBF is part of the solution.</p>
<p>OVRDBF using the nbrrcs to be retrieved = 32k/record length stating sequential processing. Then with an RPG program read your file sequentially (no keys)and do your evaluation &amp; comparison in the RPG.<br />
OVRDBF FILE(FFFF) NBRRCDS(6000) SEQONLY(*YES)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: puterbob</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/#comment-47044</link>
		<dc:creator>puterbob</dc:creator>
		<pubDate>Wed, 22 Jun 2005 18:21:04 +0000</pubDate>
		<guid isPermaLink="false">#comment-47044</guid>
		<description><![CDATA[You want to do an index scan vs at table scan.  When you do a select or native I/O any time you can use an existing index or access path that will save your CPU.  Are there any existing logic views (access paths) you can use?  The expensive thing is building the access path.  Many times a look into the existing access paths may shed some light on how you may accomplish this.  You might have an index (view or access path) that used field4, field3, field1 &amp; field2.  Use what you have to create a summary then process the summary work file.]]></description>
		<content:encoded><![CDATA[<p>You want to do an index scan vs at table scan.  When you do a select or native I/O any time you can use an existing index or access path that will save your CPU.  Are there any existing logic views (access paths) you can use?  The expensive thing is building the access path.  Many times a look into the existing access paths may shed some light on how you may accomplish this.  You might have an index (view or access path) that used field4, field3, field1 &amp; field2.  Use what you have to create a summary then process the summary work file.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: as400programmer</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/#comment-47045</link>
		<dc:creator>as400programmer</dc:creator>
		<pubDate>Wed, 22 Jun 2005 08:31:18 +0000</pubDate>
		<guid isPermaLink="false">#comment-47045</guid>
		<description><![CDATA[This could possibly speed things up a little.
I have not used it since the system38 days.

Remember it is only for sequential/random  processing as stated below.

You would have experiment a little as 
too few records or two many records in the 
buffer could slow you down 

               Records retrieved at once (NBRRCDS) - Help                
                                                                         
Specifies the number of records read from auxiliary storage as a unit    
and written to main storage as a unit.  The amount of data actually read 
is equal to the number of records times the physical record length, not  
the logical record length.  Valid values range from 1 through 32767.     
This parameter is valid for sequential or random processing and is       
specified only when the data records are physically located in auxiliary 
storage in the sequence in which they are processed.  This parameter     
overrides the number of records value specified in the program, or in    
other previously issued OVRDBF commands.                                 
                                                                         
                                                                         
                                                                         ]]></description>
		<content:encoded><![CDATA[<p>This could possibly speed things up a little.<br />
I have not used it since the system38 days.</p>
<p>Remember it is only for sequential/random  processing as stated below.</p>
<p>You would have experiment a little as<br />
too few records or two many records in the<br />
buffer could slow you down </p>
<p>               Records retrieved at once (NBRRCDS) &#8211; Help                </p>
<p>Specifies the number of records read from auxiliary storage as a unit<br />
and written to main storage as a unit.  The amount of data actually read<br />
is equal to the number of records times the physical record length, not<br />
the logical record length.  Valid values range from 1 through 32767.<br />
This parameter is valid for sequential or random processing and is<br />
specified only when the data records are physically located in auxiliary<br />
storage in the sequence in which they are processed.  This parameter<br />
overrides the number of records value specified in the program, or in<br />
other previously issued OVRDBF commands.                                 </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: welcome</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/#comment-47046</link>
		<dc:creator>welcome</dc:creator>
		<pubDate>Wed, 22 Jun 2005 06:16:29 +0000</pubDate>
		<guid isPermaLink="false">#comment-47046</guid>
		<description><![CDATA[You have not mentioned which database you are using.

In case you use Oracle8i or higher, then there exists the
possibility to build a FUNCTION BASED index,
like this:

CREATE INDEX ON largePF 
( fldx, fldy, substr( fldz,120,10 ) )
/

I don&#039;t think that the overhead imposed on maintaning such
an index could seriously impact the performance, but anyway
it could be a matter of decision, considering the case of
your specific system.

It could happen that sorts performed from a programming
language, maybe RPG among them, could be faster than those
peformed through SQL, but they require much more coding.
It depends of course on the memory allocation that the
database uses for sort operations, which is defined at
database instance startup.


 
]]></description>
		<content:encoded><![CDATA[<p>You have not mentioned which database you are using.</p>
<p>In case you use Oracle8i or higher, then there exists the<br />
possibility to build a FUNCTION BASED index,<br />
like this:</p>
<p>CREATE INDEX ON largePF<br />
( fldx, fldy, substr( fldz,120,10 ) )<br />
/</p>
<p>I don&#8217;t think that the overhead imposed on maintaning such<br />
an index could seriously impact the performance, but anyway<br />
it could be a matter of decision, considering the case of<br />
your specific system.</p>
<p>It could happen that sorts performed from a programming<br />
language, maybe RPG among them, could be faster than those<br />
peformed through SQL, but they require much more coding.<br />
It depends of course on the memory allocation that the<br />
database uses for sort operations, which is defined at<br />
database instance startup.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tomliotta</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/#comment-47047</link>
		<dc:creator>tomliotta</dc:creator>
		<pubDate>Tue, 21 Jun 2005 15:03:29 +0000</pubDate>
		<guid isPermaLink="false">#comment-47047</guid>
		<description><![CDATA[This suggestion:

CREATE INDEX LARGEPF99 ON LARGEPF (fldx, fldy)

... is probably the best that can be done. And it probably won&#039;t matter whether you use SQL or native I/O in RPG. Either way, the substr( fldz,120,10 ) is where the big drain will always be. By creating the INDEX over the two fields, you provide SQL with a chance to use the index to speed up the GROUP BY.

However, unless this is a permanent INDEX, there will be no benefit anyway. The time it takes to create the index will be the same time whether it&#039;s done by CREATE INDEX or by SQL creating a temporary index to perform the GROUP BY.

I don&#039;t see that anything can help much except not trying to perform grouping operations on a substring, especially one that is embedded rather than being the left-most characters. By SQL or program, every row must be read and tested every time. A permanent index over the non-substring fields simply avoids spending the indexing time during the sub-select.]]></description>
		<content:encoded><![CDATA[<p>This suggestion:</p>
<p>CREATE INDEX LARGEPF99 ON LARGEPF (fldx, fldy)</p>
<p>&#8230; is probably the best that can be done. And it probably won&#8217;t matter whether you use SQL or native I/O in RPG. Either way, the substr( fldz,120,10 ) is where the big drain will always be. By creating the INDEX over the two fields, you provide SQL with a chance to use the index to speed up the GROUP BY.</p>
<p>However, unless this is a permanent INDEX, there will be no benefit anyway. The time it takes to create the index will be the same time whether it&#8217;s done by CREATE INDEX or by SQL creating a temporary index to perform the GROUP BY.</p>
<p>I don&#8217;t see that anything can help much except not trying to perform grouping operations on a substring, especially one that is embedded rather than being the left-most characters. By SQL or program, every row must be read and tested every time. A permanent index over the non-substring fields simply avoids spending the indexing time during the sub-select.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dushan</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/#comment-47048</link>
		<dc:creator>dushan</dc:creator>
		<pubDate>Tue, 21 Jun 2005 11:34:10 +0000</pubDate>
		<guid isPermaLink="false">#comment-47048</guid>
		<description><![CDATA[Many thanks for replying as400programmer and app1dak.

I did try creating an index (should have mentioned this earlier). It also took ages to create and unfortunately I can&#039;t afford to maintain a permenant index. The PF is part of a base application with its own set of LFs. I&#039;m developing an application outside of the base which uses some of its files. As a result, I can&#039;t have permenant indexes/LFs as it would affect performance of the base application. That&#039;s why I&#039;ll need to create this index everytime this new app is executed and of course it takes far too long. I apologize, I should have mentioned all this earlier. 

That&#039;s why I was wondering if reading these large files using RPG would be more efficient.
]]></description>
		<content:encoded><![CDATA[<p>Many thanks for replying as400programmer and app1dak.</p>
<p>I did try creating an index (should have mentioned this earlier). It also took ages to create and unfortunately I can&#8217;t afford to maintain a permenant index. The PF is part of a base application with its own set of LFs. I&#8217;m developing an application outside of the base which uses some of its files. As a result, I can&#8217;t have permenant indexes/LFs as it would affect performance of the base application. That&#8217;s why I&#8217;ll need to create this index everytime this new app is executed and of course it takes far too long. I apologize, I should have mentioned all this earlier. </p>
<p>That&#8217;s why I was wondering if reading these large files using RPG would be more efficient.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: app1dak</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/iseries-performance-question/#comment-47049</link>
		<dc:creator>app1dak</dc:creator>
		<pubDate>Tue, 21 Jun 2005 08:56:51 +0000</pubDate>
		<guid isPermaLink="false">#comment-47049</guid>
		<description><![CDATA[An SQL view will normally perform optimization and save access path information (such as what is the optimal index to use for accessing the data), but a view is not an access path itself.  There is no sorted or ordered data stored with a view, only the view&#039;s SQL along with any cached access path info.  On the other hand an SQL index stores an ordered or sorted subset of table columns that allows for fast searching on that particular subset of table columns.  A view is normally used to provide data to some user group in a format other than how it is stored in the db tables, since many times the db is fully normalized and the data is not stored how the users logically think and process it.  Try creating an index instead:

CREATE INDEX LARGEPF99 ON LARGEPF (fldx, fldy)

    or

CREATE INDEX LARGEPF99 ON LARGEPF (fldx, fldy, fldz)

I don&#039;t believe including fldz in the index will help since you are doing a substring from the middle of the column.  Adding that column may or may not help. You will have to do some timings.  If fldz was included, it would allow index only access, but may require more disk reads depending on the cardinality of the data in those columns.]]></description>
		<content:encoded><![CDATA[<p>An SQL view will normally perform optimization and save access path information (such as what is the optimal index to use for accessing the data), but a view is not an access path itself.  There is no sorted or ordered data stored with a view, only the view&#8217;s SQL along with any cached access path info.  On the other hand an SQL index stores an ordered or sorted subset of table columns that allows for fast searching on that particular subset of table columns.  A view is normally used to provide data to some user group in a format other than how it is stored in the db tables, since many times the db is fully normalized and the data is not stored how the users logically think and process it.  Try creating an index instead:</p>
<p>CREATE INDEX LARGEPF99 ON LARGEPF (fldx, fldy)</p>
<p>    or</p>
<p>CREATE INDEX LARGEPF99 ON LARGEPF (fldx, fldy, fldz)</p>
<p>I don&#8217;t believe including fldz in the index will help since you are doing a substring from the middle of the column.  Adding that column may or may not help. You will have to do some timings.  If fldz was included, it would allow index only access, but may require more disk reads depending on the cardinality of the data in those columns.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 6/9 queries in 0.013 seconds using memcached
Object Caching 380/383 objects using memcached

Served from: itknowledgeexchange.techtarget.com @ 2013-05-21 23:00:06 -->