首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >几乎垂直分区和oracle数据库表是可能的吗?

几乎垂直分区和oracle数据库表是可能的吗?
EN

Database Administration用户
提问于 2012-04-04 01:19:12
回答 4查看 1.5K关注 0票数 3

正如问题所问的那样,是否可以通过使用虚拟分区透明地对表进行垂直划分?我可以想象,如果可能的话,列只会存储在单独的表空间或其他类似的地方。

在我的特定环境中,我们有一个应用服务器,它每15分钟左右批量地写入大量数据。有比我们的报告应用程序需要的更多的数据。主事实表大约有50列。我们用了其中的10种。

是否有任何场景(即使不存在虚拟垂直分区),这样的方案可以提高性能?我可以想象,将数据分割到多个表空间(因此也可能是多个磁盘)将提高查找时间。

EN

回答 4

Database Administration用户

回答已采纳

发布于 2012-04-04 08:58:15

我可以想象,将数据分割到多个表空间(因此也可能是多个磁盘)将提高查找时间。

这个问题背后的整个前提都是错误的。您不需要在表空间之间拆分数据以将i/o扩展到更多磁盘,您需要增加RAID10或(更好的) ASM数组中的磁盘数量。您将获得更少的性能增益,更低的空间效率和更多的维护尝试手动调优i/o,如您所建议的。

ASM优于RAID10,主要是因为它理解写入它的数据--例如,它可以在数据块和日志之间改变条带大小。

票数 4
EN

Database Administration用户

发布于 2012-04-04 07:38:49

您可以将表分成两列,将您报告的10列(以及主键)放在一个表(和一个单独的表空间)中&另一个表中的另40列。然后,您可以显示一个将这两个视图连接在一起作为主表的视图。但是,如果没有应用程序的更改,这可能是不可行的。若要插入,请在第一个表上使用INSERT ALL查询或INSTEAD OF触发器,在第二个表上使用INSERT。

虽然技术上是可行的,但我怀疑是否需要这样做。最好是对所有磁盘(ASM也这样做--如果可能的话使用它)进行大范围的条带,以增加可用的纺锤体数量& IOPS,而不是有效地使一些磁盘停止工作,因为它们包含不用于报告的数据。

票数 1
EN

Database Administration用户

发布于 2012-04-04 06:51:24

Afaik,您不可能将表的一部分拆分到另一个表空间,除非LOB存储,LOB数据可以存储在单独的表空间中。

至于性能-列的数量不影响select语句,只要这些列不出现在它们中。

另一方面,将表分割成分区和适当的索引会对性能产生重大影响,随着表大小的增加,这种影响变得更加明显。(您没有描述您的数据,因此没有人能够建议您应该如何对表进行准确的分区。)

虚拟分区意味着通过表达式进行分区,该表达式作为表元数据存储,不出现在表本身中。见文档

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/16049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档