<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>
分享到:
相关推荐
基于Linux平台创建高性能的WebMail系统.pdf
《高性能html5》为读者讲解了如何用html5 从一开始...通过学习《高性能html5》,读者能够掌握如何创建自己的高性能网站。《高性能html5》适合于想创建自己网站的初学者,同样也适用于资深网站开发者用于优化已有网站。
创建高性能SQL数据库索引 (1).pdf
nanocomponent 创建高性能的HTML元素
创建高性能AJAX网站的技巧和经验,好资料,希望你喜欢!
第1章 mysql 架构与历史 1 第2章 mysql 基准测试 35 第3章 服务器性能剖析 67 第4章 schema 与数据类型优化 111 第5章 创建高性能的索引 141 第6章 查询性能优化 195 第7章 mysql 高级特性 259 第8章 优化服务器设置...
使用MATLAB和任意波形发生器创建高性能激励测试系统.pdf
通过学习《高性能HTML5》,读者能够掌握如何创建自己的高性能网站。《高性能HTML5》适合于想创建自己网站的初学者,同样也适用于资深网站开发者用于优化已有网站。 Jay Bryant:横跨两个不同的领域:写作和编程。在...
Ratpack 一个简单,干练,工具包,用于创建高性能的Web应用程序。
第5章创建高性能的索引141 5.1索引基础141 5.1.1索引的类型142 5.2索引的优点152 5.3高性能的索引策略153 5.3.1独立的列153 5.3.2前缀索引和索引选择性153 5.3.3多列索引157 5.3.4选择合适的索引列顺序159 ...
第5章 创建高性能的索引 第6章 查询性能优化 第7章 MySQL 高级特性 第8章 优化服务器设置 第9章 操作系统和硬件优化 第10章 复制 第11章 可扩展的MySQL 第12章 高可用性 第13章 云端的MySQL 第14章 应用层...
第五章创建高性能索引;第六章查询性能优化;第七章mysql高级特性;第八章优化服务器设置;第九章操作系统和硬件优化;第十章复制;第十一章可扩展的mysql;第十二章高可用性;第十三章云端的mysql;第十四章应用层...
第5章 创建高性能的索引 141 第6章 查询性能优化 195 第7章 mysql 高级特性 259 第8章 优化服务器设置 325 第9章 操作系统和硬件优化 377 第10章 复制 433 第11章 可扩展的mysql 501 第12章 高可用性 543 第13章 ...
代码对应原书的章节有:创建高性能计算集群、使用作业调度系统、编写面向服务的高性能计算应用、编写基于MPI的应用、管理高性能计算服务器集群、开发适用于高性能计算集群的VBA和Excel工作簿应用。
作为一款高性能平台,Brocade USD-X可连接和扩展与大型机...该多协议网关和拓展平台通过采用最新高速接口,不管从哪个地点皆可相互连接整个企业内所有主机到存储以及存储到存储的系统,最终创建一个高容量高性能网络。
本书是《高性能网站建设指南》姊妹篇。作者Steve Souders是前Google Web性能布道者和前Yahoo!首席性能工程师。在本书中Souders与8位专家分享了提升网站性能的实践和实用建议,主要包括:理解Ajax性能,编写高效的,...
PHP商品秒杀系统 高并发高性能的极致挑战 完整视频+源码 深入基础技能 Linux / Nginx / Mysql / Redis 基础平台工具,搭配PHP原生代码 不在局限框架选择 掌握系统设计与方法 从需求分析、数据结构创建 到基础功能...
7. 解决轮播图片过多的性能问题,循环重用ImageView 8. 添加xib创建方法 9. 巧用代理UIScrollViewDelegate,scrollViewDidScroll:定位当前正确的页数,找出最中间的哪个图片控件 10. 用SLBannerViewDelegate实现监听...
用途: 创建高性能的网络应用和服务 对资源的描述: 该资源提供了一个Node.js的完整开发手册,包括创建RESTful API、实现身份验证和授权、以及使用各种数据库的教程。它还探讨了如何通过异步编程和中间件来提高应用...
创建数据库表分区 创建垂直分表 创建水平分表 数据库对象的部署 混合放置的缺点 在我们创建数据库的时候,一般来说用户数据库默认路径和系统数据库是放在一起的,这种部署方式有严重问题:假如有一个第三波书店...