信息化 频道

详解金仓数据库V6中垂直分区实现方法

  计算I/O量获得分区方法

  在满足场景的组中选择几个分区方案,包括分区的类型和列的组合。

  根据分区类型计算各分区的元组I/O量。

  注意尽可能考虑访问模式,即查询执行顺序带来的物理I/O差别。可能带来的差别有:

  1)去掉重复计算IO。例如一个涉及分区P1的查询后会接着执行一条更新该分区的语句,则更新语句的读就不会是物理读。

  2)考虑命中率问题。不同分区的页面命中率需要根据分区的访问频率进行估计。

  计算不分区方案和每个分区方案的I/O量,I/O量为查询数*元组数*该分区元组I/O量。

  比较选择I/O量最小的方案。

  验证分区带来的I/O减少

  可能会有实际情况与计算不符的情况发生,因为计算中的I/O量是逻辑I/O量而不是准确的物理I/O,实际测试每种方案,收集统计信息(每张表的读写信息、页面的命中率),根据实际值调整方案。

  4、实例:TPC-C的垂直分区选择

  TPC-C是一个典型的OLTP类型的负载。TPC-C测试中共有9张表,包括c_warehouse、c_customer、c_district、c_stock、c_order、c_order_line、c_item、c_history和c_new_order;另外,共有5种事务场景:new order、payment、order-status、delivery和stock-level,其中order-status和stock-level是纯查询事务,其它是以更新为主的事务。

  分析5种事务包含的查询,除去c_warehouse、c_distric表等小表,以及更新较多的大表,如c_order和c_order_line,我们可以知道在c_stock表和c_customer表上进行垂直划分可以带来较大效率的提升。我们可以根据实际待测试的环境,按照前面描述的原则进行垂直划分方案的设计、测试和验证。

0
相关文章