首页 首页 大数据 查看内容

如何进行Oracle系统设计

木马童年 2019-5-27 15:20 46 0

收到一个命题,2TB容量的数据,1000并发,7*24的系统,如果就可维护性,可扩展性和系统性能几方面考虑,该如何进行系统设计。 这是一个很大的题目,牵涉到从硬件到软件,从应用设计到数据库设计的方方面面,足够写 ...

收到一个命题,2TB容量的数据,1000并发,7*24的系统,如果就可维护性,可扩展性和系统性能几方面考虑,该如何进行系统设计。

这是一个很大的题目,牵涉到从硬件到软件,从应用设计到数据库设计的方方面面,足够写一本厚厚的书,其实,我们的梦想不就是有一个维护简单,扩展性良好,性能优秀的系统吗?

7*24意味着对于高可用性的要求严格,那么Oracle数据库在高可用性方面的选项包括哪些呢?

1. RAC

也许很多人仍然对于RAC抱有怀疑,就跟很多人对于RAC抱有迷信一样,持有RAC的性能还不如单节点这样论调的人跟持有性能不好实施RAC就能解决这样论调的人恐怕人数不相伯仲。

其实RAC在性能因素上对于应用的提升仅仅是一个方面,RAC对于高可用性的贡献才是真正无可替代的,目前我还不知道有任何其它一种技术可以当Oracle数据库的一个实例损坏的时候(比如主机的网卡出现故障或者主机根文件系统被充满导致机器没有响应等等)另外一个实例可以立刻顶上并提供服务。普通的HA做不到,Data Guard做不到,Streams也同样做不到。

RAC多节点能够提供数据库软件滚动升级,对于Oracle11g之前的数据库来说这个功能大大减少了系统down机时间,当然实际上Data Guard也可以做到这点,不过即使是Data Guard也仍然有一个Switchover的过程,这仍然需要更多一些的down机时间。

2. Data Guard

RAC的所有节点持有同样一份数据文件,那么对于RAC来说,致命的故障可能发生在盘阵的损坏或者连接盘阵的光纤交换机损坏,这种情况下有多少个节点也无济于事,因为数据文件出问题了。而Data Guard弥补的是这方面的需求,两个或者多个实例,两份或者多份存储,在一个实例一份存储坏掉的情况下,可以通过Failover或者Switchover命令来进行主备角色的互换。同时延时Apply功能在Oracle还没有大大增强Flashback的前几个版本中也同样有很大的实用价值。

3. Streams

个人认为Streams终将取代Advanced Replication,即使不提及Streams使用AQ技术而AR使用数据字典表来做延迟队列这两种技术的孰优孰劣,仅仅从最近几个版本的Oracle数据库对AR没有做任何加强这一点上也可以求得佐证。当然,物化视图的刷新由于其操作的简单性以及技术的成熟性在今后很长一段时间内应该还会继续成为多个数据库实例之间同步数据的有效手段。

4. Partition

为什么这里要提到分区?因为大多数人认为分区带来的是性能提升,但是实际上我们认为分区带来的最大好处是高可用性的提升,诚然,正确地使用分区以及分区索引会带来性能上的提升,带来扩展性的提升,但是即使这些不是我们考虑的问题,为了一个系统能够有优越的高可用性,仍然强烈建议使用分区技术来规划数据库。举一个最简单的例子,当我们要卸载历史数据的时候,分区的DDL操作比起对于整表数据的DML操作而言带来的高可用性的提升无疑是巨大的。

那么对于上面那样一个系统,我的建议数据库架构是双节点RAC + Physical Standby + Partition,也许应用只会使用到RAC中的一个节点,但是仍然需要RAC;也许这份健壮的存储永远不会坏,我们仍然需要Data Guard,至少RMAN备份不用占据产品数据库的资源;也许单表数据只有几G,即使索引全扫描也仍然可以接受,我们仍然要分区。

更加Detail的一些设计和维护准则:

1. 并发度1000,这并不代表会有1000进程同时操作同一个data block,所以对于表和索引的inittrans设计可以参考V$SEGMENT_STATISTICS视图中的ITL waits值,V$SEGMENT_STATISTICS是Oracle9i之后很有用的但是经常被大家忽略掉的性能视图。

2. Segment使用LMT且uniform size,避免system automatic size可能产生的空间碎片,这要求我们能够对于Segment的可能大小在设计阶段就又预估,大小相差悬殊的Segment分配到uniform size不同的表空间中去。

3. 对于高并发的操作在应用层面予以控制,详细的文章可以参见Piner的这篇 - 并发容易出现的问题和并发的控制。

4. 注意约束和索引之间的互相影响,对于一个业务繁忙,任何维护操作都可能是在业务繁忙期进行的系统,尽量避免约束和索引之间的相互影响。比如创建唯一性约束,我们可以先创建普通索引,再创建唯一性约束using index,这样操作的好处在于删除约束的时候不会影响索引,这里的关键思想是,约束用于控制商业逻辑,索引用于控制系统性能,逻辑和性能是要分开的,商业逻辑可能发生变化,然后性能不能因为商业逻辑的变化而受到影响。这小小的一点考虑却涵盖了可维护性,可扩展性和系统性能三个方面。

5. 如果分区表Local Index能够满足性能需求,那么首选Local Index,即使Global Index可能带来更少的Consistent Gets。因为Global Index最大的问题是分区操作时候必须rebuild index,通常这在性能和可维护性上都无法接受。

6. 使用Oracle 10g吧,从Oracle 10g到Oracle 11g,高可用性的提升有目共睹,各种online操作增强,各种阻塞的影响面减少,各种性能诊断工具的易用性,不是说9i不好,而是10g更强(这句话说的太像Oracle员工了,抱歉)。

在不久的将来,多智时代一定会彻底走入我们的生活,有兴趣入行未来前沿产业的朋友,可以收藏多智时代,及时获取人工智能、大数据、云计算和物联网的前沿资讯和基础知识,让我们一起携手,引领人工智能的未来!

可扩展性 数据库 数据库软件 控制系统
0
为您推荐
大数据技术改变城市的运作方式,智慧城市呼之欲出

大数据技术改变城市的运作方式,智慧城市呼

纽奥良虽像大多数城市一样有火灾侦测器安装计划,但直到最近还是要由市民主动申装。纽…...

大数据分析面临生死边缘,未来之路怎么走?

大数据分析面临生死边缘,未来之路怎么走?

大数据分析开始朝着营销落地,尤其像数果智能这类服务于企业的大数据分析供应商,不仅…...

什么是工业大数据,要通过3B和3C来理解?

什么是工业大数据,要通过3B和3C来理解?

核心提示:工业视角的转变如果说前三次工业革命分别从机械化、规模化、标准化、和自动…...

大数据普及为什么说肥了芯片厂商?

大数据普及为什么说肥了芯片厂商?

科技界默默无闻的存在,芯片行业年规模增长到了3520亿美元。半导体给无人驾驶汽车带来…...

大数据技术有哪些,为什么说云计算能力是大数据的根本!

大数据技术有哪些,为什么说云计算能力是大

历史规律告诉我们,任何一次大型技术革命,早期人们总是高估它的影响,会有一轮一轮的…...

个人征信牌照推迟落地,大数据 重新定义个人信用!!

个人征信牌照推迟落地,大数据 重新定义个

为金融学的基础正日益坚实。通过互联网大数据精准记录海量个人行为,进而形成分析结论…...