暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在负载表11g上创建分区

askTom 2017-02-28
197

问题描述

嗨,康纳/克里斯,

请看看下面的表格结构
这是加载表,没有与任何列相关的唯一性,因此我们不能为此选择主键。

tb_card_details
---------------

card_id  start_date  end_date  address  email   created_on card_type sent_flag
-------  ----------  --------  -------  -----   ---------- --------- ---------
1000001  26/02/2017  26/03/2017  UK   dummy@abc.com 26/02/2017 Retail  1 or 0
..                        
等等
1000001  23/02/2017  26/04/2017  US   asdex@abc.com 27/02/2017 Corp  1 or 0
..
100k记录
1000002  26/03/2017  26/05/2017  UK   12344@abc.com 28/02/2017 Retail      1 or 0
..
upto 150k records
1000003  23/04/2017  26/04/2017  US   15456@abc.com 10/03/2017 Corp        1 or 0
..
等等
复制


可以使用WHERE columns-created_on,card_type & sent_flag提取此表中的数据。
我想到使用范围分区使用 (created_on作为分区键) 对这个表进行分区。

对于每个created_on,当前有100k条记录,并且将来可能会增长。

您能否建议任何更好的方法/建议,例如分区技术,考虑基于created_on,card_type和sent_flag的WHERE条件的本地索引。



--------- 附加信息 ------------------
tb_card_details
---------------

卡片id开始日期结束日期地址区域创建卡片类型标记序列编号
-
1000001 26/02/2017 26/03/2017英国亚太地区26/02/2017零售1或0 2017022600000001
..
等等
1000001 26/02/2017 26/03/2017英国亚太地区26/02/2017零售1或0 2017022699999999
..
100k记录
1000001 26/02/2017 26/03/2017英国EMEA 27/02/2017零售1或0 2017022700000001
..
1000001 26/02/2017 26/03/2017英国EMEA 27/02/2017零售1或0 2017022799999999


每当任何select命中此表时,该表将仅具有列created_on,card_type,sent_flag。
从执行后的结果中,created_on =?卡片类型 =?和sent_flag =?(例如300k行),
Java将多线程的结果集通过获取行让说100行每个线程 (使用sequence_number)..

专家解答

当然,我们将在created_on上进行分区。就更细粒度的分区而言,很大程度上取决于card_type和/或sent_flag的分布/num distinct值。

您可能会在 (例如) 这些列上的散列或列表子分区方案中看到好处,因为一旦您能够检索数十万行,索引往往最终弊大于利。

分区很少会损害大规模扫描-但要记住的一件事是,一旦你进入大量的分区,你可以最终得到较大的优化时间,所以你应该考虑粒度权衡。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论