24 exdata架构探讨--优化主题系列

来源:互联网 发布:手机网络gsm cdma lte 编辑:程序博客网 时间:2024/06/05 09:03

为什么Oracle做数据库海量数据Oracle为什么有缺陷??

Oracle是不是sharedisk架构??rac系统是不是sharedisk架构多个实例用的是共享存储

意思就是说存储的I/O吞吐量始终上不去

因为Oracle一个进程一次I/O只能读1MB的数据

为什么数据仓库要开并行??

8个并行那么就是一次读8MB并行不是说你想开多少就多少

一个进程要耗费2GBPGA内存你开8个并行就是16GB

假如96GB内存一个进程最大耗费2GBPGA

开并行是不是耗费CPU一般来说一个进程就耗费一个CPU或者说1CPU2个进程

48CPU的机器48*2=96个并行一个系统最大只能开大概20个并行

也就是说Oracle一次只能读20-30MB的数据是不是相对海量数据上TB的容量速度太慢??

你开并行是不是并发若了??你不能同一时刻多个用户去用并行吧??

30MB1I/O的时间不是说1秒的时间

一次I/O的时间怎么算??就是磁盘寻道寻址时间不到1S可能就及时毫秒到几百毫秒

也就是说一秒钟可以进行读多少的数据??50毫秒1秒钟就是20I/O

30个进程才能这么牛逼的30CPU才能这么牛逼

Oracle购买是按照CPU收费的有些客户为了节省成本CPU很少OLAP系统CPU那去死吧

1分钟15GB左右Oracle没问题的如果开并行要上TB的数据要多久??

1024GB/15=??是不是100多分钟??

海量数据的话还是挺慢的因为Oracle吞吐量不行

有一些数据库是多节点的sharenothing

比如现在有4个节点的其他数据库每个节点有自己独立的存储

独立存储的好处是什么??是不是4个节点都可以同时进行I/O??

这种架构对网络要求很严格一般这种网络就是万兆带宽的或者infiniband

比如我有一个表AB C D四个节点每个节点存储一个表的部分数据

我扫描的时候每个节点都扫描即四个节点同时干活

这样是不是没有I/O瓶颈了??这样要进行双份冗余的MPP架构和greenplum就是这个GBaseDB2也是

所以说DB2OLAP的优势但没有OLTP的优势

DB2为什么在银行广泛使用??因为当时中国建设系统时只有IBM能提供主机、数据库、存储

银行不会轻易换数据库的锁升级select都会产生锁的

行锁很可能内存不够了升级为表锁

Oracle的行锁存储在BLOCK里面DB2的行锁是存储在内存里面的

OracleUNDO这就是Oracle为什么读没有锁的原因UNDOOracle的专利UNDO坏处是单块读

我举个例子我有50个并发哦是不是要构造50个块出来??

UNDO在构造CR块时很耗费SGA优点大于缺点

SGAbuffercache缺点是在并发的情况下buffercache扛不住CR块越多latch竞争及越明显

但总体表现绝对优于DB2所以要尽可能的减少嘛

 

XD怎么解决I/O问题的呢??

大家首先看OracleXD也是rac也是sharedisk架构

XDsmartscan有压缩

selectid from test;

但是EXADATA就不这样玩了直接给你把ID这个列查询出来

smartscan 类似列数据库行列混合存储的

OLAP大表180额列XD扫描3个列有了这个技术是不是I/O减少了N多??

Oracle的硬件配置其实很烂的EXADATA其实久是Linux

海量数据要实现I/O大量扫描是不是要高级压缩??

以前在Oracle上面要存储1TB的数据EXADATA里面可能就变成了1TB/10=100GB

是不是I/O扫描就减少了??不是数据库解压的是直接在存储上解压

存储有CPUOracle又用了FLASHCACHE缓存其实就是SSD

给你搞几个TB的缓存要乘以10就是几十TB的缓存进一步减去了I/O

比如1TB的表只需要扫描3个列这个表有100个列30GB是不是??

smartscan就干这事情30GB是不是可以压缩一下??变成3GB

是不是还可以放到flashcache里面相当于从内存里读3GB速度飞快

压缩解压是存储节点自己玩的但速度很快现在CPU不是瓶颈的I/O才是

那个直接从缓存里读读多少个块Oracle最原始的原理没关系了

这就是为什么EXADATA能干趴下所有数据库的真正原因

ASM磁盘坏了同样用的类似于RAID10

EXADATA上的SQL一样跑死人的


原创粉丝点击