`
jinghuainfo
  • 浏览: 1525171 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

创建高性能表

 
阅读更多
<p>创建高性能表</p>
<p>在我们为应用设计数据库的时候,首先要确认我们的数据库是用于OLTP,还是用于DSS,还是用OLTP和DSS的混合。<br>
这样就确定了大方向</p>
<p><br><span style="color: #008000;">OLTP(on-line transaction processing):是为处理大量并发小事务设计的<br>
DSS(decision support systems):是为大数据量的复杂查询而设计的</span>
</p>
<p><span style="color: #008000;">对于OLTP系统,为了满足大量的并发事务,我们要数据存储创建高性能表和索引</span>
</p>
<p><br>
1. 我们要把表/索引创建在ASSM的表空间里,因为oracle在ASSM的表空间里用bitmap替代了freelist来管理segment space,<br>
所以这样表/索引可以提高更高的DML并发性能</p>
<p><br>
2. 合理设置表/索引的存储参数PCTFREE,PCTUSED,在ASSM中已经废除PCTUSED的概念</p>
<p><br>
3. 为了数据的一致性,数据块有一定数目的事务条目来进行行锁(即ITL),在object层是用initrans和maxtrans两个参数<br>
控制的,通常默认值就足够了(表的initrans=1,索引的initrans=2).如果知道表/索引上有大并发量的update,并且每<br>
个block上有很多行,那适当设置高一点的initrans是有益的,在创建表/索引时,指定其值对对象所有的block有其作用。<br>
如果是create之后调整initrans,那只对以后新分配的block起作用,要让其对所有的block都起作用,就要重组对象<br><br>
oracle系统的内部表的initrans大部分为1,还有一些是2,4的。其中表SRS$,OBJECT_USAGE的initrans分别是16,30;而oracle<br>
内部索引大部分都是2和4的。我们可以参考oracle的设计特点来设计我们自己的表/索引的initrans</p>
<p>可以用如下sql查询oracle内部表/索引的initrans</p>
<p> select tab.table_name,<br>
ind.index_name,<br>
tab.ini_trans "表的initrans",<br>
ind.ini_trans "索引的initrans"<br>
from dba_indexes ind, dba_tables tab<br>
where ind.table_name = tab.table_name<br>
group by tab.table_name, ind.index_name, tab.ini_trans, ind.ini_trans;</p>
<p><br>
4. 如果表很小而且使用比较频繁,可以把表/索cache在内存<br>
参考:<a href="http://blog.csdn.net/wyzxg/archive/2010/03/16/5384762.aspx">http://blog.csdn.net/wyzxg/archive/2010/03/16/5384762.aspx</a>
</p>
<p><br>
5. 底层io的合理规划</p>
<p><span style="color: #339966;">6(补充). 我们在设计表的时候,特别是业务特别复杂时,可能需要一些大字段(如,blob/clob),这些类型是几乎不能被缓存的,如果可以的 话,可以用多个varchar类型字段替换,这样就可以提高缓存可能性</span>
</p>
<p><span style="color: #008000;">对DSS系统,最大的特点就是数据量非常庞大。存储的数据很少会改变,主要用于复杂的查询;为了提高性能,可以采用如下方式</span>
</p>
<p>1. partition table(auto/manual),根据查询特点创建全局索引,局部索引,位图索引等<br>
2. 采用并行dml,利用资源换取时间</p>
<p><br>
如果是DSS和OLTP混合的系统,那就要综合考虑。因为硬件总的资源是有限的,要尽量避免两种系统的相互影响,再中间找一个平衡点。例如可以采用对OLTP的相关表分级统计汇总,dss系统尽量不要用OLTP的表</p>
<p>表/索引的设计一定要在设计阶段就要做好,它就好像高楼的地基。一定要打好基础,因为如果上线后,在想调整,那就很困难,代价也非常高。</p>
<p>---end----</p>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics