加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 在这种环境下行使分区是个好主意吗?

发布时间:2021-03-06 05:15:13 所属栏目:站长百科 来源:网络整理
导读:上下文:Oracle 10数据库. 在一个相等大的表(几百万笔记录)中,我们最近开始看到一些机能题目.该表有一些非凡的举动/前提. 它首要写一次然后再也不会改变 在第一天阁下,记录从0..N分类(让我们称之为列类).记录也许会在第一天内从头分类屡次 新的条目添加了0级

上下文:Oracle 10数据库.

在一个相等大的表(几百万笔记录)中,我们最近开始看到一些机能题目.该表有一些非凡的举动/前提.

>它首要写一次然后再也不会改变
>在第一天阁下,记录从0..N分类(让我们称之为列类).记录也许会在第一天内从头分类屡次
>新的条目添加了0级,意思是“尚未归类”
>每小时阁下,一个进程对新的reocrds举办分类,并为他们提供1..N的新类
>全部读者都只对第1课感乐趣
>全部高出一天的记录险些不会改变他们的班级,>几天后,1会被整理干净

此刻,因为大大都会见是对类1举办的,因此该列凡是与其他前提一路涉及查询(class = 1).我们在类列上有一个索引,然后在某些其他列上有索引.

对付我的题目:我们此刻正在思量按类对该表举办分区.据我所知,这将使索引/处理赏罚数据更快,由于class = 1已经与别的数据分隔,因此对它的会见隐含更高效.它是否正确?

假如您赞成这是一个好主意,我会进一步阅读该主题!

感谢
干杯

更新2010.11.30

很是感激您的投入.我不知道它是一个特另外选项:)感激指出(在我投入太多时刻之前).但除了容许证题目之外,在我看来,分区在这种环境下不必然是一个好的办理方案.

办理要领

什么操纵正在经验迟钝,您是否可以或许确定这些操纵为何迟钝?

假如按类举办分区,则会减慢更新行的类的进程.因为这会逼迫一行从一个分区移动到另一个分区,因此您将更新为从第一个分区删除并插入第二个分区.假如你的每小时历程很慢并且速率慢,由于找到全部新记录必要时刻,这里的机能衡量也许长短常公道的.假如你的每小时历程很慢,由于计较新类应该是什么而且更新全部行必要时刻,另一方面,这种衡量也许是一个很是糟糕的设法.

因为分区是企业版容许证之上的特殊本钱选项,因此我提议您确保不能行使某些基于成果的索引来以相对较低的本钱得到您所针对的大部门机能改造.譬喻,假如您有两个基于函数的索引

CREATE INDEX idx_new_entries
    ON your_table( (CASE WHEN class = 0 THEN primary_key ELSE null END) );

CREATE INDEX idx_class1_entries
    ON your_table( (CASE WHEN class = 1 THEN primary_key ELSE null END) );

以及几个概念

CREATE VIEW vw_new_entries
AS
SELECT (CASE WHEN class = 0 THEN primary_key ELSE null END) primary_key,<<list of columns>>
  FROM your_table
 WHERE class = 0

CREATE VIEW vw_class1_entries
AS
SELECT (CASE WHEN class = 1 THEN primary_key ELSE null END) primary_key,<<list of columns>>
  FROM your_table
 WHERE class = 1

然后,针对在PRIMARY_KEY上过滤的新视图的任何查询都将行使基于函数的索引,而这些索引又只会索引基本表中的响应行.这可以让您进步查找机能,而无需告急于分区.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读