张表的每个数据块上表的各个列的最大值和最小值。默认情况下整数、日期和时间类型的列会生成 Zone Maps 统计信息。表 TradeTable 使用了 3 个数据块来存放数据。Zone Maps 收集了其中两列 Data 和 Cust_ID 的在每个数据块上的最大值和最小值。当语句“select * from TradeTable where data=02”执行的时候数据库系统首先检查 Zone Maps,根据 Zone Maps 的指示,只有第二个数据块中的数据有满足条件的记录,所以第一个和第三个数据块的数据不会被读入。
Zone Maps 也是自动维护的并不需要用户来进行干预。Zone Maps 会在以下的条件下自动进行更新:
· 运行 GENERATE STATISTICS 命令收集统计信息时
· 用 nzload 进行数据装载时
· 插入和更新数据时
· 运行 GROOM TABLE 重新整理数据块时
工作负载管理
现今的数据仓库大多是多用户同运行混合任务类型的系统。工作负载管理是这样的系统上不可取少的一项功能。Netezza 提供了一套简单又灵活的工作负载管理方案,包括以下一些策略:
· 资源保障分配(GRA):通过定义资源组,给每个资源组分配可使用资源的范围来控制不同用户对系统资源的使用比例。
· 分优先级的执行查询(PQE):可以给每个查询赋予低中高的优先级,当系统资源紧张的时候高优先级的查询会优先执行。PQE 和 GRA 可以结合起来使用,即在相同的资源组里面的查询也可以通过指定不同的优先级来进行区分。
· 短查询优先(SQB):保证短查询不受大数据量查询的影响,即使在系统资源很紧张的时候短查询也能很快的返回结果而不必等到大数据量查 询结束。这个是通过系统预留出一定数量的资源来实现的。Netezza 会根据生成的执行计划来判断一个查询是否是短查询,默认情况下认为一个查询如果少于 2 秒就是一个短查询。
高可用性
Netezza 一体机的各个部件都存在冗余的备份,不存在单点失败的情况。其高可用性主要体现在以下三个层次。
· SMP 主机:一体机包含两台 SMP 主机,这两天主机是主备关系,其上面运行的 Linux HA 软件可以保证在主机出现宕机的情况下,所有的服务都可以转移到备机上。两台主机之间并没有采用共享磁盘的方式来保持共享的关键数据,而是采用了 DRBD 来同步需要共享的关键数据。
· S-Blades:每个刀片服务器底座包含了 6 个 S-Blades。当其中有的一台 S-Blades 出现问题的时候,Netezza 会自动的把失败的的 S-Blades 所管理的磁盘分配给同一个底座上其他的 S-Blades 进行管理。对于只读的查询用户是感觉不到这种切换的存在。
· 磁盘:每块磁盘上都保存有一个数据片的数据,同时也保存着另外一个数据片数据的镜像备份。例如磁盘 1 上有数据片 1 上的数据以及数据片 2 上数据的镜像,磁盘 2 上有数据片 2 的数据以及数据片 1 的镜像。当磁盘 1 失败的时候,S-Blades 会自动的去访问磁盘 2 上的镜像数据,系统仍能维持正常的运行。此外磁盘存储柜里的还有一些空闲磁盘他们不属于任何的数据片,当有磁盘失败空闲的磁盘会重新的生成数据,例如磁盘 1 失败,那么空闲磁盘 X 会从磁盘 2 复制数据片 1 的镜像和数据片 2 的数据重新生成失败的磁盘 1,这个过程需要一些时间,在这个过程中 S-Blades 还是通过磁盘 2 来访问数据片 1 的数据。一旦这个过程完成 S-Blades 会通过新生成的磁盘来访问数据片 1 的数据。整个过程对于用户来说也都是透明的
结束语
一体机技术是今后数据仓库发展的趋势,各大厂商也都加大了在这个方向的投入。通过本文,您应该对 Netezza 一体机技术有所了解,理解了它为什么外表看起来了如此简单却又有着非凡的性能表现。希望您能有机会亲自体验一下它给你带来的惊喜。
作者 jaminwm