share-nothing架构原理

share nothing架构理论在数据库的设计和优化中的实践应用。并行数据库要求尽可能的去并行执行数据库的操作,从而提高性能。在并行计算体系结构实现中有很多可选的体系结构。

架构包括:

  1. share-memory:多个cpu共享一片内存,cpu之间通过内部通讯机制(interconnected network)进行通讯;
  2. share-disk:每一个cpu都有自己的私有内存区域,通过内部通讯机制直接访问所有的磁盘系统。
  3. share-nothing:每一个cpu都有私有的内存和磁盘空间,而且2个cpu之间不能访问相同磁盘空间,cpu之间通讯通过网络连接

Shared memory 体系结构的cpu之间通过主存进行通讯,具有很高的效率;但当更多的cpu被添加到主机上时,内存竞争contetion就成为瓶颈,cpu越多,瓶颈越 厉害。Shared disk也存在同样问题,因为磁盘系统由 Interconnection Network 连接在一起。

  Shared memory和shared disk的基本问题是interference:当添加更多的cpu,系统反而减慢,因为增加了对内存访问(memroy access)和网络带宽(network bandwidth)的竞争。这样shared nothing体系得到了广泛的推广。

Shared nothing体系是数据库稳定增长,当随着事务数量不断增加,增加额外的cpu和主存就可以保证每个事务处理时间不变。

总的来说,shared nothing降低了竞争资源的等待时间,从而提高了性能。反过来,如果一个数据库应用系统要获得良好的可扩展的性能,它从设计和优化上就要考虑 shared nothing体系结构。Share nothing means few contention.它在oracle数据库设计和优化上有很多相同之处。

Share nothing 对数据库应用主要体现在多用户并行访问系统时候,优化数据库操作的response time上。如果数据库操作能够顺利获得所需要的资源,不发生等待事件,自然可以减少response time. 同时也体现在操作尽量少占用资源上,避免浪费时间在无用功上。

如Sequence的实现方式。如果使用OracleSequence ,oracle可以缓存sequence,这样最小的降低多个Session获得唯一序列的竞争。如果设计为实体化表存储sequence value方式,每次获得sequence value都需要锁住纪录,这样产生了严重资源竞争,导致hot block.同时增加了Response time.

存储过 程的使用,也体现着share nothing原理。将多个sql 封装在存储过程中,避免了不必要的SQL*Net message from/to client, SQL*Net data from/to client 等等待事件。这体现了设计良好的应用使用最少的资源完成工作。

如在优化sql/表结构设计上,share nothing意味着降低查询的执行成本—— I/O和cpu usage.这主要体现在降低consistent gets上。在物理设计上,share nothing体现在避免磁盘热点块,协调进程对磁盘的竞争,平衡磁盘利用率上。

Oracle自身设计上很多都体现了Share Nothing特性;在设计可扩展的数据库应用的时候也要注意到这点。


参考链接:https://www.jianshu.com/p/403df7516bdc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早退的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值