﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Prayer-随笔分类-DB2k</title><link>http://www.cppblog.com/prayer/category/13849.html</link><description>在一般中寻求卓越</description><language>zh-cn</language><lastBuildDate>Wed, 19 May 2010 20:26:15 GMT</lastBuildDate><pubDate>Wed, 19 May 2010 20:26:15 GMT</pubDate><ttl>60</ttl><item><title>IBM DB2 内存分配与使用策略</title><link>http://www.cppblog.com/prayer/archive/2010/05/19/115854.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Wed, 19 May 2010 15:23:00 GMT</pubDate><guid>http://www.cppblog.com/prayer/archive/2010/05/19/115854.html</guid><wfw:comment>http://www.cppblog.com/prayer/comments/115854.html</wfw:comment><comments>http://www.cppblog.com/prayer/archive/2010/05/19/115854.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/prayer/comments/commentRss/115854.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/prayer/services/trackbacks/115854.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 【彭建军】IBM DB2 内存分配与使用策略 （上）出处：根据&nbsp;ChinaUnix&nbsp;的相关文章整理。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;【导读】本文将向您讲解&nbsp;DB2&nbsp;内存使用的基础，以及共享内存和私有内...&nbsp;&nbsp;<a href='http://www.cppblog.com/prayer/archive/2010/05/19/115854.html'>阅读全文</a><img src ="http://www.cppblog.com/prayer/aggbug/115854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/prayer/" target="_blank">Prayer</a> 2010-05-19 23:23 <a href="http://www.cppblog.com/prayer/archive/2010/05/19/115854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sheapthres － 排序堆阈值 配置参数 </title><link>http://www.cppblog.com/prayer/archive/2010/05/19/115852.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Wed, 19 May 2010 15:21:00 GMT</pubDate><guid>http://www.cppblog.com/prayer/archive/2010/05/19/115852.html</guid><wfw:comment>http://www.cppblog.com/prayer/comments/115852.html</wfw:comment><comments>http://www.cppblog.com/prayer/archive/2010/05/19/115852.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/prayer/comments/commentRss/115852.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/prayer/services/trackbacks/115852.html</trackback:ping><description><![CDATA[<h3 id=r0000260>sheapthres － 排序堆阈值 <span>配置参数 </span></h3>
<div><a id=idx626 name=idx626></a><a id=idx627 name=idx627></a><a id=idx628 name=idx628></a><a id=idx629 name=idx629></a></div>
<dl>
<dt class=bold>配置类型
<dd>数据库管理器
<dt class=bold>适用于
<dd>
<ul>
    <li>具有本地和远程客户机的数据库服务器
    <li>具有本地客户机的数据库服务器
    <li>具有本地和远程客户机的分区数据库服务器 </li>
</ul>
<dt class=bold>参数类型
<dd>可配置
<dt class=bold>缺省值 [范围]
<dd>
<dl>
<dt class=bold>UNIX 32 位平台
<dd>20&nbsp;000 [ 250 -- 2&nbsp;097&nbsp;152 ]
<dt class=bold>Windows 平台
<dd>10&nbsp;000 [ 250 -- 2&nbsp;097&nbsp;152 ]
<dt class=bold>64 位平台
<dd>20&nbsp;000 [ 250 -- 2&nbsp;147&nbsp;483&nbsp;647 ] </dd></dl>
<dt class=bold>计量单位
<dd>页（4 KB） </dd></dl>
<p>专用排序和共享排序使用两个不同内存资源中的内存。<strong>共享排序内存区的大小是根据 <span class=italic>sheapthres </span>的值</strong>，<strong>在第一次与数据库连接时静态地预先确定的。</strong>专用排序内存区的大小不受限制。 </p>
<p><var class=pv>sheapthres</var> 参数对于专用和共享的排序用法是不同的： </p>
<ul>
    <li>对于专用排序，此参数是在一个实例内对任何给定时间专用排序可占用的总内存量的 <span class=italic>软 </span>限制。当一个实例的总专用排序内存占用达到了此限制时，为附加入站的专用排序请求分配的内存将显著减少。
    <li>对于共享排序，此参数是在一个数据库内对任何给定时间共享排序占用的总内存量的硬限制。当达到此限制时，将不允许其它共享排序内存请求（直到总共享排序内存的占用降低至 <var class=pv>sheapthres</var> 指定的限制以下为止）。（在某些情况下，配置共享排序最大值的另一种方法是使用 <var class=pv>sheapthres_shr</var> 数据库配置参数。） </li>
</ul>
<p>使用排序堆的操作的示例包括：排序、散列连接、动态位图（用于索引 AND 运算和星型连接）和表位于内存中的操作。 </p>
<p>显式定义阈值可防止数据库管理器对大量排序使用过量内存。 </p>
<p>当从非分区数据库移至分区数据库环境时，不应增大此参数的值。一旦在单个数据库分区环境中调整了数据库和数据库管理器配置参数，在大多数情况下，相同的值在分区数据库环境将同样合适。 </p>
<p>作为数据库管理器配置参数的&#8220;排序堆阈值&#8221;参数应用于整个 DB2 实例。将该参数设置为不同节点或分区上的不同值的唯一方法是创建多个 DB2 实例。这将需要通过不同数据库分区组管理不同的 DB2 数据库。这样安排将无法发挥分区数据库环境的许多优点。 </p>
<p><span class=bold>建议： </span><strong>理想情况下，应将此参数设置为您在数据库管理器实例中拥有的最大 <span class=italic>sortheap </span>参数的一个合理倍数。此参数 <span class=bold>至少 </span>应是该实例中为任何数据库定义的最大 <span class=italic>sortheap </span>的两倍。</strong> </p>
<p>如果您正执行专用排序并且您的系统不受内存约束，则可使用下列步骤来计算此参数的理想值： </p>
<ol type=1>
    <li>计算每个数据库的典型排序堆的使用：
    <pre class=xmp>（对该数据库运行的并发代理程序的典型数目）
    * （sortheap，为该数据库定义的） </pre>
    <li>对以上结果求和，该值提供可在实例中所有数据库的典型环境中使用的总排序堆。 </li>
</ol>
<p>应使用基准程序技术来调整此参数以找到在排序性能和内存使用之间的相应平衡。 </p>
<p>可以使用数据库系统监视器并借助后阈值排序（ <span class=italic>post_threshold_sorts </span>）监视元素来跟踪排序活动。<br><br><br></p>
<h3 id=r0000259>sortheap － 排序堆大小 <span>配置参数 </span></h3>
<div><a id=idx622 name=idx622></a><a id=idx623 name=idx623></a><a id=idx624 name=idx624></a><a id=idx625 name=idx625></a></div>
<dl>
<dt class=bold>配置类型
<dd>数据库
<dt class=bold>参数类型
<dd>可联机配置
<dt class=bold>传播类
<dd>语句边界
<dt class=bold>缺省值 [范围]
<dd>
<dl>
<dt class=bold>32 位平台
<dd>256 [ 16 - 524&nbsp;288 ] <span id=changed>2 </span><span id=changed>2 </span>
<dt class=bold>64 位平台 <span id=changed>2 </span>
<dd>256 [ 16 - 4&nbsp;194&nbsp;303 ] <span id=changed>2 </span></dd></dl>
<dt class=bold>计量单位
<dd>页（4 KB）
<dt class=bold>分配时
<dd>需要执行排序时
<dt class=bold>释放时
<dd>当排序完成时 </dd></dl>
<p>此参数定义要用于专用排序的专用内存页的最大数目或要用于共享排序的共享内存页的最大数目。如果排序为专用排序，则此参数将影响代理程序专用内存。如果排序为共享排序，则此参数将影响数据库共享内存。每个排序都有一个独立的排序堆，该排序堆是由数据库管理器按照需要分配的。此排序堆是将数据排序的区域。如果由优化器定向，则将使用优化器提供的信息分配一个比此参数指定的排序堆小的排序堆。 </p>
<p><span class=bold>建议： </span>当使用排序堆时，应该考虑下列事项： </p>
<ul>
    <li>适当的索引可使排序堆的使用减至最小程度。
    <li>散列连接缓冲区和动态位图（用于索引 AND 计算和星型连接）使用排序堆内存。在使用这些技术时，增大此参数的大小。
    <li>当需要进行频繁的大型排序时，增大此参数的大小。
    <li>当增大此参数的值时，应该检查是否还需要调整数据库管理器配置文件中的 <span class=italic>sheapthres </span>参数。
    <li>排序堆大小由优化器在确定存取路径时使用。在更改此参数后，应考虑重新绑定应用程序（使用 REBIND 命令）。 </li>
</ul>
<p><br>&nbsp;Which of the following settings would allow 20 sorts with a maximum of 10MB each to run currently on a 64-bit instance? <br>A. Set the DB SHEAPTHERS to 50000 and DB SORTHEAP to 2500 <br>B. Set the DBM <a name=baidusnap0></a><strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">SHEAPTHERES</strong> to 50000 and DB SORTHEAP to 2500<br>&nbsp;C. Set the DBM SHEAPTHERS to 50000 and DBM SORTHEAP to 2500 <br>D. Set the DBM SHEAPTHERS_SHR to 50000 and DBM SHEAPTHRES to 2500 </p>
<img src ="http://www.cppblog.com/prayer/aggbug/115852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/prayer/" target="_blank">Prayer</a> 2010-05-19 23:21 <a href="http://www.cppblog.com/prayer/archive/2010/05/19/115852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用DB2配置向导配置参数</title><link>http://www.cppblog.com/prayer/archive/2010/05/19/115851.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Wed, 19 May 2010 15:02:00 GMT</pubDate><guid>http://www.cppblog.com/prayer/archive/2010/05/19/115851.html</guid><wfw:comment>http://www.cppblog.com/prayer/comments/115851.html</wfw:comment><comments>http://www.cppblog.com/prayer/archive/2010/05/19/115851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/prayer/comments/commentRss/115851.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/prayer/services/trackbacks/115851.html</trackback:ping><description><![CDATA[<p>　　DB2版本8提供了一个自动配置参数的工具-配置向导。你可以在控制中心中启动图形界面的配置向导，或者使用autoconfigure命令来配置你的数据库。配置向导可以配置数据库管理器、数据库配置参数和缓冲池大小。注意，你必须连接到数据库才能使用数据库配置向导，而且在分区数据库的情况下，数据库配置向导只配置你连接的一个分区。在分区数据库环境下，你可以使用db2_all 命令来配置所有数据库分区的参数。</p>
<p>　　如果你使用图形界面的配置向导，你需要回答一系列问题，这些问题相当于AUTOCONFIGURE命令中的参数(如表1所示)。首先让我们看一AUTOCONFIGURE的命令格式:</p>
<p>　　&gt;&gt;-AUTOCONFIGURE--+---------------------------------------+-----&gt;<br>　　| .----------------------------. |<br>　　| V | |<br>　　'-USING----input-keyword--param-value-+-'<br>　　&gt;--APPLY--+-DB ONLY----+---------------------------------------&gt;&lt;<br>　　+-DB AND DBM-+<br>　　'-NONE-------'</p>
<p>　　表 1显示了选项关键字和取值范围。</p>
<p>　　表 1 关键字和取值范围</p>
<p>　　关键字</p>
<p>　　<br>&nbsp;取值范围&nbsp; 默认值 解释 <br>mem_percent&nbsp; 1-100&nbsp; 80&nbsp; 设定DB2使用内存的多少。如果还有其他应用程序使用，请选择小于100的数值</p>
<p>　　<br>&nbsp;<br>workload_type&nbsp; simple, mixed,</p>
<p>　　<br>&nbsp;complex mixed&nbsp; 指定工作负荷类型，simple（简单）类型主要指IO访问比较集中，对于大多数OLTP系统，选择simple类型。Complex类型主要是对CPU占用较多的复杂查询系统，如OLAP系统。如果你的系统介于两者之间，选择mixed类型。 <br>num_stmts</p>
<p>　　<br>&nbsp;1-1 000 000&nbsp; 10&nbsp; 系统中每一个事务包含的SQL语句数 <br>tpm&nbsp; 1-200 000&nbsp; 60&nbsp; 每分钟进行的交易数。</p>
<p>　　<br>&nbsp;<br>admin_priority</p>
<p>　　<br>&nbsp;performance, recovery, both both&nbsp; 选择你的管理策略，可以是更好的性能，或者是更快的数据库恢复时间。 <br>is_populated</p>
<p>　　<br>&nbsp;yes, no&nbsp; yes&nbsp; 数据库已经存在数据 <br>num_local_apps</p>
<p>　　<br>&nbsp;0-5 000&nbsp; 0&nbsp; 本地连接数 <br>num_remote_apps&nbsp; 0-5 000&nbsp; 10</p>
<p>　　<br>&nbsp;远程连接数 <br>isolation&nbsp; RR, RS, CS, UR&nbsp; RR</p>
<p>　　<br>&nbsp;应用程序的隔离级别 <br>bp_resizeable</p>
<p>　　<br>&nbsp;yes, no yes&nbsp; 缓冲池是否可调整大小 </p>
<p><br>　　APPLY DB ONLY</p>
<p>　　在当前数据库管理器的配置参数下，显示推荐的数据库和缓冲池的参数，并应用与数据库和缓冲池。</p>
<p>　　APPLY DB AND DBM</p>
<p>　　显示并应用推荐的数据库管理器参数、数据库参数和缓冲池参数。</p>
<p>　　APPLY NONE</p>
<p>　　仅仅显示推荐值，但不更改配置参数。</p>
<p>　　使用该命令配置数据库，关键要选择合适的参数(参见表1选择你的参数选项)。下面我们通过一个例子来说明如何使用AUTOCONFIGURE命令配置数据库。假设我们在一个分区的数据库环境中，只有一个数据库实例db2inst1和数据仓库TESTDW，并且已经装载了数据。 我们使用下面的命令对该数据库调整参数:</p>
<p>　　db2_all &#8220;db2 connect to testdw; db2 autoconfigure using mem_percent 80 workload_type complex num_stmts 10 tpm 20 admin_priority both num_local_apps 5 num_remote_apps 50 isolation cs apply db and dbm; db2 connect reset;&#8221;</p>
<p>　　你也可以创建一个脚本autoconfigure.db2，存放在DB2 实例的共享目录下，假设为/home/db2inst1, 内容如下:</p>
<p>　　connect to testdw;</p>
<p>　　autoconfigure using mem_percent 80 workload_type complex num_stmts 10 tpm 20 admin_priority both num_local_apps 5 num_remote_apps 50 isolation cs apply db and dbm;</p>
<p>　　connect reset;</p>
<p>　　然后使用db2_all命令在所有的数据库分区上执行这条命令，我们假设改脚本的存放目录为/home/db2inst1/autoconfigure.db2:</p>
<p>　　db2_all &#8220;&#8221;db2 -tvf /home/db2inst1/autoconfigure.db2 &gt;&gt;autoconfigure##.log&#8221;</p>
<p>　　执行完毕后，你可以通过autoconfigure*.log来察看该命令在每一个数据库分区上的执行情况。然后重新启动DB2实例，让这些参数生效。运行一些基准测试的查询语句，测试DB2 配置向导的配置结果。</p>
<p>　　你也可以使用配置向导图形界面来配置你的数据库。你可以通过在控制中心中选中你的数据库，然后点右键，选择&#8220;配置向导&#8221;来启动配置向导。如果你需要使用图形界面配置分区数据库，记得要将结果保存为任务，并将配置结果导出到一个脚本文件中，如/home/db2inst1/autoconfigure.db2。这样你就可以使用db2_all命令来执行该脚本配置所有的数据库分区了:</p>
<p>　　db2_all &#8220;&#8221;db2 -tvf /home/db2inst1/autoconfigure.db2 &gt;&gt;autoconfigure##.log&#8221;</p>
<p>　　如果你对DB2非常熟悉，你可以对DB2自动配置产生的配置文件做适当的修改。总之，DB2配置向导是一个非常简单易用的工具，能够大大减少DBA的工作量。</p>
<p><br>原文来自：雨枫技术教程网 <a href="http://www.fengfly.com/">http://www.fengfly.com</a><br>原文网址：<a href="http://www.fengfly.com/plus/view-30426-1.html">http://www.fengfly.com/plus/view-30426-1.html</a></p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/prayer/aggbug/115851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/prayer/" target="_blank">Prayer</a> 2010-05-19 23:02 <a href="http://www.cppblog.com/prayer/archive/2010/05/19/115851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>