首页 理论教育分布式数据库信息统计

分布式数据库信息统计

【摘要】:中间关系的大小决定了数据传输量,数据传输量大小对系统性能的影响很大。值得一提的是,这种估算依据的是统计信息,而非真实数据。,Rn是其数据片,定义如下。假设一个数据库用于描述企业的供销系统,涉及几个关系,如“供应”和“部门”。表7.6关系Supply的概貌表7.7关系Dept的概貌表7.6和表7.7中的第一行表示该关系的记录个数(基)。

执行策略性能的主要影响因素是执行中生成的中间关系的大小。执行一个查询,当子操作放在不同的节点上实施时,生成的中间关系必须在网络上传输。中间关系的大小决定了数据传输量,数据传输量大小对系统性能的影响很大。因此,如何估算中间关系的大小就变成基本问题。值得一提的是,这种估算依据的是统计信息,而非真实数据。

为了便于讨论,下面引入一些参数和符号。

●关系的基(记作Card):指的是一个关系的记录个数。

●关系的长度(记作Size):指的是一个关系的属性长度之和(即表格的宽度)。

●属性的不同值个数(记作Val):令A为一个属性,则A的不同值记作Val(A)。

令关系R的关系模式定义在属性集A上,且A={A1,A2,…,An},其中,R1,R2,…,Rn是其数据片,定义如下。

●属性Ai的长度(以字节计)记作Size(Ai);Ai的不同值的个数或数据片Rj在Ai上的投影的计数记作Val(Ai[Rj])=Card(∏Ai(Rj))。

●如果属性Ai的域是一个可以排序的值集(如整数或实数),则可以用最大值和最小值表示,记作min(Ai)和max(Ai)。

●每个属性Ai的域,其基(cardinality)记作Card(dom[Ai]),表示其在定义域dom[Ai]中唯一值(即删除重复值后)的数目。

●每个数据片Rj元组数记作Card(Rj)。

假设一个数据库用于描述企业的供销系统,涉及几个关系,如“供应”(Supply)和“部门”(Dept)。

关系Supply和关系Dept的概貌分别如表7.6与表7.7所示。

表7.6 关系Supply的概貌

表7.7 关系Dept的概貌

表7.6和表7.7中的第一行表示该关系的记录个数(基)。例如,Card(Supply)=50000表示关系Supply的基是50000,换言之,这个关系有50000个记录。第一列的Size表示该行指示每个属性的长度(这里用字节计),Val表示该行指示每个属性不同值的个数。不同值指的是该属性可取的各不相同的值的个数。例如,属性“sex”的不同值数是2,因为其可取的值是“male”(男)和“female”(女)。

对每对关系的二元运算结果中间关系可以使用它们的统计数据进行估算,称为选择系数,例如,每对关系的连接可以用连接选择系数表示,记作ρ,其值是0和1间的实数,是两个连接关系匹配程度的量度,例如,连接选择系数0.5是一个很大的连接关系值,而0.001是一个关联很弱的连接关系值。

由于关系的每个记录的长度是固定的,所以,关系R的大小可以表示为:

Size(R)=Card(R)*Size(R)

这里,Size(R)是关系R的一个元组的长度,其数据片Ri的元组的个数记作Card(Ri),它的每个属性A的长度(即字节数)记作Size(A)。对每个Ri中的每个属性A,把出现在Ri中的不同值的个数记作Val(A[Ri])。

下面讨论各种运算结果的大小估算公式。

1.选择运算(selection)

选择运算是对一个原始关系按谓词表达式(例如,性别=male)来进行选择。因此,对于选择运算而言,我们先讨论它的选择系数问题。将选择运算的选择系数(选择率)记作ρ,若值是均匀分布的,则可把ρ估计为1/Val(A([R])),即选择系数是选择属性的不同值个数的倒数。例如,人的性别的不同值个数是2(取值为男(male)或女(female)),选择运算的谓词为性别=male,则ρ=0.5。

估算参数如下(令原始关系为R,运算后的关系为S)。

(1)基数:Card(S)=ρ×Card(R)。

(2)长度:Size(S)=Size(R)。

(3)不同值。

若选择属性(记作A):当选择谓词是A=〈值〉,则不同值(个数)为1;当选择谓词是A≠〈值〉,则不同值为Val(A([R]))-1。

其他属性(即非选择属性)的不同值如何估算是一个问题,我们可以选用文献上介绍的一种估算算法

非选择属性分布的数学估算公式:考虑一个属性B,假定其值是均匀分布的,且B独立于选择准则,那么,Val(B[S])确定等价于如下统计学问题:

给出n=Card(R)个彩球,它们均匀地分布着m=Val(B[R])种不同的颜色,如果从中取r个球(r=Card(Ri)(r≤n)),则其中有多少种不同的颜色?假设结果记作C=Val(B[Ri])。

所以,现在我们遇到的问题就是在r个彩球里不同颜色的种类有多少?

解析:我们把C看作是n、m和r的函数,则

注意:这里有一个假设,即属性值的均匀分布,颜色分布独立于选择准则。当值的均匀分布和独立性假设不成立时,应用上述公式计算C值是错误的。

2.投影运算(projection)

(1)基数:投影运算影响操作数的基数,因为有可能从结果中删除重复元组。

●如果投影只涉及单个属性A,则令Card(S)=Val(A[R])。

●如果乘积ΠA∈Attr(S)Val(A[R])小于Card(R),Attr(S)是投影结果中的属性,则

Card(S)=ΠA∈Attr(S)Val(Ai[R])

●如果投影包含R的一个关键字,则令Card(S)=Card(R)。

(2)长度:投影结果的长度被缩短成投影范式中属性长度之和。(www.chuimin.cn)

(3)不同值:投影属性的不同值和操作数关系中的不同值相同。

3.分组运算(group-by)

令S为分组后的结果,则:

(1)基数:Card(S)≤∏Ai∈G Val(Ai[R])。

(2)长度:对所有出现在G中的属性A,Size(R.A)=Size(S.A),S的长度由G和AF中的属性的长度求和给出。

(3)不同值:对出现在G中的所有属性A,Val(A[S])=Val(A[R])。

4.并运算(union)

(1)基数:Card(T)≤Card(R)+Card(S)。

按照设计POREL时的经验和体会,估算可选用最大值和最小值的算术平均值。这里,并运算的最小值是Card(T)=max(Card(R),Card(S)),最大值是Card(T)=Card(R)+Card(S)。因此:

Card(T)≈1/2(max(Card(R),Card(S))+(Card(R)+Card(S)))

(2)长度:Size(T)=Size(R)=Size(S)。

这是因为参与并运算的两个关系R与S具有相同的属性模式。

(3)不同值:Val(A[T])≤Val(A[R])+Val(A[S])。

5.差运算(difference)

(1)基数:max(0,Card(R)-Card(S))≤Card(T)≤Card(R)。

一般可以考虑取其算术平均值,即

Card(T)≈1/2(max(0,Card(R)-Card(S))+Card(R))

(2)长度:Size(T)=Size(R)=Size(S)。

(3)不同值:Val(A[T])≤Val(A[R])。

6.连接运算(join)

T=R∞A=BS

(1)基数:Card(T)≤Card(R)×Card(S)。

●若Val(A[R])=Val(B[S]),则

Card(T)=(Card(R)×Card(S))/Val(A[R])

●若A或B是键,则

Card(T)=Card(S)(若A是关系R的键)

(2)长度:Size(T)=Size(R)+Size(S)。

(3)不同值:

●若A是连接属性,则Va1(A[T])≤min(Val(A[R]),Val(B[S]))。

●若A不是连接属性,则Val(A[T])≤Val(A[R]+Val(B[S]))。

7.半连接(semi-join)

T=R∝A=BS

(1)基数:ρ=Val(A[S])/Val(dom(A)),Card(T)=ρ×Card(R)。

(2)长度:Size(T)=Size(R)。

(3)不同值。

我们先来看非连接属性的不同值问题。

这个问题可以归结为,假设n=Card(R),m=Val(A[R])和r=Card(T),那么C是什么呢?也就是使用估算公式可以估算运算后非连接属性的不同值。

连接属性的不同值,则考虑如下:令A是出现在半连接范式中的唯一属性,则

Val(A[T])=ρ×Val(A[R])

8.笛卡儿积

R和S的笛卡儿积的基比较简单:Card(R×S)=Card(R)*Card(S)。