练习22.3题目:
考虑并行数据库的每个关系水平分片后存储于所有磁盘
(1)找出薪水最高的雇员。
(2)找出did值为55的部门中薪水最高的雇员。
(3)找出 budget值小于100000的所有部门中薪水最高的雇员
(4)找出 budget值小于300000所有部门中薪水最高的雇员
(5)给出 budget值小于300000所有部门的平均工资
(6)给出所有经理的工资。
(7)对于 budget小于30000的部门,如果其经理的薪水超过10000,给出该经理的工资。
(8)以雇员薪水为序打印出所有雇员的ed,如果每个处理机都有一个本地的打印机,那么每个处理机可以单独生成一个有序序列,分别打印,然后将打印好的列表(按照某种次序)连接得到完整的有序结果
Employees(eid, integer, did, integer, sal, real) Departments(did:integet,mgrid:integer, budget r integer)关系 Departments中的 mgrid是经理的ed.每个关系的记录长度为20字节,属性al和 budget的值平均分布于区域0~1000000关系 Employees的数据有10000页关Departments的数据有5000页,并且每个处理机有100个缓存页,每个页的大小为000字节。每页数据的1/O代价为t,传输一页数据的代价为t;记录数据进行传输的基本单位是页,当一页数据填满后才会真正进行传输。关系没有任何索引,本地的所有连接操作使用排序归并连接方法,假设关系初始分布时使用轮转方法,并且共有10个理机对于下面的每个查询,简要给出查询执行计划,并利用t和t给出查询代价表达式。必须计算出所有场地的总代价和“公共时间”代价(也就是说如果有若干个操作并发执行,则所用时间是这些操作的最大执行时间)。
(1)找出薪水最高的雇员。
(2)找出did值为55的部门中薪水最高的雇员。
(3)找出 budget值小于100000的所有部门中薪水最高的雇员
(4)找出 budget值小于300000所有部门中薪水最高的雇员
(5)给出 budget值小于300000所有部门的平均工资
(6)给出所有经理的工资。
(7)对于 budget小于30000的部门,如果其经理的薪水超过10000,给出该经理的工资。
(8)以雇员薪水为序打印出所有雇员的ed,如果每个处理机都有一个本地的打印机,那么每个处理机可以单独生成一个有序序列,分别打印,然后将打印好的列表(按照某种次序)连接得到完整的有序结果
考虑练习22.3给出的关系 Employees和 Departments,现在分布存储于分布式DBMS的10个不同场地。关系 Departments的记录通过属性did水平划分到10个场地,划分时采用随机分布方式将记录任意分布到这10个场地,但要保证每个场地的记录数目基本相等。关系 Employees也通过属性sal进行水平划分,sal值小于100000的记录存于场地1,sal值在100000和200000之间的存于场地2,并依次类推。此外,由于需要经常访问sal值小于100000的分片,因此将此分片复制存储于每个场地。关系Employees的其他分片没有进行复制
(1)对于下面的查询给出最忧的查询执行计划,并给出执行代价(a)对关系 Employees和 Departments进行自然连接,使用的策略是将小关系的每个分片传输到大关系分片所在的每个场地,然后执行连接操作
(b)找出薪水最高的雇员。
(c)找出薪水少于100100的薪水最高的雇员。(d)找出薪水值在400000~500000之间的薪水最高的雇员
(e)找出薪水值在450000~550000之间的薪水最高的雇员。
(f)找出位于查询提交场地薪水最高的部门经理。
(g)找出薪水最高的部门经理。
(2)考虑同样的数据分布,假设使用同步复制方式复制存储关系,对于下面的更新事务,给出需要访问哪些场地以及是如何对数据进行加锁的。
(a)薪水小于100000的雇员的薪水增加10%但最高不能超过100000也就是说增加后的薪水最高也就是100000)。
(b)所有雇员的薪水增加10%,更新后还需要满足关系 Employees的最初数据划分条件
(3)考虑同样的数据分布,假设使用异步复制方式复制存储关系,对于下面的更新事务,给出需要访问哪些场地以及是如何对数据进行加镜的。
(a)薪水小于100000的雇员的薪水增加10%但最高不能超过100000(也就是说增加后的薪水最高也就是100000)。
(b)所有雇员的薪水增加10%更新后还需要满足关系 Employee最初数据划分条件。