share-Nothing原理
Share nothing理论在数据库设计和优化中的实践应用
首先介绍share nothing概念。最早接触它是在 DataBaseManagentSystem一书的并行数据库章节中。
并行数据库要求尽可能的去并行执行数据库操作,从而提高性能。在并行计算体系结构实现中有很多可选的体系结构。包括:
share-memory:多个cpu共享同一片内存,cpu之间通过内部通讯机制(interconnection network)进行通讯;
share-disk : 每一个cpu使用自己的私有内存区域,通过内部通讯机制直接访问所有磁盘系统。
Share-nothing: 每一个cpu都有私有内存区域和私有磁盘空间,而且2个cpu不能访问相同磁盘空间,cpu之间的通讯通过网络连接。3种体系结构如下图:
Share disk share nothing share memory
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的实现方式。如果使用Oracle Sequence ,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特性;在设计可扩展的数据库应用的时候也要注意到这点。
参考:
http://oracle.chinaitlab.com/optimize/39626.html
share-Nothing原理的更多相关文章
- 混部之殇-论云原生资源隔离技术之CPU隔离(一)
作者 蒋彪,腾讯云高级工程师,10+年专注于操作系统相关技术,Linux内核资深发烧友.目前负责腾讯云原生OS的研发,以及OS/虚拟化的性能优化工作. 导语 混部,通常指在离线混部(也有离在线混部之说 ...
- 网站统计中的数据收集原理及实现(share)
转载自:http://blog.codinglabs.org/articles/how-web-analytics-data-collection-system-work.html 网站数据统计分析工 ...
- I/O重定向的原理和实现
在Unix系统中,每个进程都有STDIN.STDOUT和STDERR这3种标准I/O,它们是程序最通用的输入输出方式.几乎所有语言都有相应的标准I/O函数,比如,C语言可以通过scanf从终端输入字符 ...
- PDO防sql注入原理分析
使用pdo的预处理方式可以避免sql注入. 在php手册中'PDO--预处理语句与存储过程'下的说明: 很多更成熟的数据库都支持预处理语句的概念.什么是预处理语句?可以把它看作是想要运行的 SQL 的 ...
- pt-online-schema-change原理解析
都说pt-toolkit工具集中的pt-online-schema-change可以在线不锁表修改表结构,那么这个工具具体是什么原理呢,请见下面娓娓道来: 1.pt-online-schema-cha ...
- 场景9 深入RAC运行原理
场景9 深入RAC运行原理 OPS(Oracle Parallel Server)通过磁盘的节点判定数据是否最新 —> Data Guard —> RAC(Real Ap ...
- Apache多站点实现原理和配置
Apache多站点实现原理 很多人常常看到一台服务器上跑多个站点,不同的域名访问不同的站点,就会有个疑惑:访问的时候并没有在地址栏中加入端口号,多个域名都是解析到这个服务器的IP地址,服务器怎么能够正 ...
- linux下DHCP服务原理总结
DHCP(全称Dynamic host configuration protocol):动态主机配置协议DHCP工作在OSI的应用层,可以帮助计算机从指定的DHCP服务器获取配置信息的协议.(主要包括 ...
- Tomcat服务器原理详解
[目录]本文主要讲解Tomcat启动和部署webapp时的原理和过程,以及其使用的配置文件的详解.主要有三大部分: 第一部分.Tomcat的简介和启动过程 第二部分.Tomcat部署webapp 第三 ...
随机推荐
- 回形矩阵--python
def bsm(n): a = [[0]*n for x in range(n)] p = 0 q = n-1 t = 1 while p < q: for i in range(p,q): a ...
- 嵌入式框架Zorb Framework搭建六:定时器的实现
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- 《Go语言实战》书摘
书籍简介 名称:Go语言实战 作者: 威廉·肯尼迪 (William Kennedy) / 布赖恩·克特森 (Brian Ketelsen) / 埃里克·圣马丁 (Erik St.Martin) 内容 ...
- 42-EF Core Migration
1-常用命令 1-由于2.1版本有点不一样,不会自动创建ApplicationUser类,发现合并没效果.暂时略 增加一个字段 E:\coding\netcore\IdentitySample> ...
- 数据库 MySQL part1
数据库介绍 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数学模型组织.描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种 ...
- P2340 奶牛会展(状压dp)
P2340 奶牛会展 题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览.由 ...
- Android log 里面快速搜索错误堆栈 ( 关键字)
有时候,别人给你的log 文件,是一个文件夹,里面放了很多文件.但是可能你需要的log 只有几行.这时候不可能手工搜索的. 那怎么办呢?使用FileLocationPro.下载地址: https:// ...
- python接口自动化: CAS系统验证,自动完成登录并获取token,遇到302请求重定向设置(requests模块 allow_redirects=False)即可
import requestsimport re import requests import re class Crm_token(object): try: username=int(input( ...
- Python 3基础教程32-正则
本文介绍Python的正则,通过本文介绍和一个练习,对正则有一个基本了解就可以. # 正则表达式 ''' 正则表达式是有一些特殊字符组成,能够帮你找到一些符合一定规则的字符串 先来了解几个符号所代表的 ...
- C++ XML文件解析
使用tinyxml2库,git地址https://github.com/leethomason/tinyxml2 只需要使用tinyxml2.h tinyxml2.cpp即可,同时需要using na ...