WEB开发网
开发学院数据库DB2 在 DB2 Database Partitioning Feature 环境中选择... 阅读

在 DB2 Database Partitioning Feature 环境中选择分区键

 2010-09-09 00:00:00 来源:WEB开发网   
核心提示: 如果没有主键,就会使用非长型字段的首列,在 DB2 Database Partitioning Feature 环境中选择分区键(3),为何选择正确的分区键如此重要选择正确的分区键之所以如此关键,有两方面的原因:它改善了使用哈希分区的那些查询的性能它平衡了所有分区的存储需求数据平衡数据平衡指的是

如果没有主键,就会使用非长型字段的首列。

为何选择正确的分区键如此重要

选择正确的分区键之所以如此关键,有两方面的原因:

它改善了使用哈希分区的那些查询的性能

它平衡了所有分区的存储需求

数据平衡

数据平衡指的是存储在各个数据库分区的记录的相对数量。理想情况下,一个哈希分区表内的每个数据库分区都应具有相同数量的记录。如果各数据库分区存储的记录数不均,就会导致不均衡的存储需求和性能问题。之所以会出现性能问题是因为查询均独立在每个数据库分区完成,但是查询的结果则要由协调代理进行整合,而该代理必须等所有数据库分区均返回结果集后才开始整合。换言之,整体的性能受制于最慢的数据库分区的性能。

表数据倾斜 指的是特定的一些数据库分区上的某个表内的记录数与这个表所跨的所有数据库分区的平均记录数之间的差额。所以,对于本例,如果某个表在数据库分区 1 上的表数据倾斜是 60%, 那么这意味着此数据库分区包含的该表的行要比平均的数据库分区多出 60%。

从最佳实践的角度来看,各个数据库分区上的表数据倾斜应该不多于 10%。为了实现此目标,分区键应该在具有较高基数(换言之,即包含大量不同值)的列上选择。

如果表的统计信息是最新的,那么就可以通过如下语句快速检查现有表内列的基数:

清单 1. 检查现有表内列的基数

SELECT colname, colcard FROM syscat.columns 
WHERE tabname='CUSTOMER' AND tabschema = 'BCULINUX' ORDER BY colno 
 
 
COLNAME                                 COLCARD 
------------------------------------------------------------------------ --------------- 
C_CUSTOMER_SK                                   100272 
C_CUSTOMER_ID                                   25068 
C_CURRENT_CDEMO_SK                                 25068 
C_CURRENT_HDEMO_SK                                 6912 
C_CURRENT_ADDR_SK                                 19456 
C_FIRST_SHIPTO_DATE_SK                               3651 
C_FIRST_SALES_DATE_SK                                3584 
... [remainder of the output omitted from this example] 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:DB Database Partitioning

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接