gpt4 book ai didi

oracle - Oracle 数据库是否应该有多个表空间用于数据存储?

转载 作者:行者123 更新时间:2023-12-03 15:11:43 28 4
gpt4 key购买 nike

我的团队维护了一个大约是200GB 大小。所有数据(表、索引等)都位于单个“USERS”表空间中。这是一个坏主意吗?拥有多个表空间有什么好处,在什么情况下我想向我的数据库添加更多?

谢谢!

最佳答案

我的偏见(这在很大程度上取决于个人喜好)是,如果创建额外的表空间没有令人信服的好处,那么使用单个表空间会更轻松。

  • 将对象放在不同的表空间中没有性能优势。有一个古老的神话,即分离表和索引会带来一些性能优势。将 I/O 分布在所有可用的轴上有一个潜在的好处,但在单个表空间中使用多个数据文件比使用多个表空间更好,因为 Oracle 在不同数据文件中循环分配区,假设您的 SAN还没有做一些事情来平衡 I/O。
  • 如果您有大型的静态查找/历史表,这样您就可以通过引入较小的事务表空间将数据库的新副本带到客户端站点,这将是考虑多个表空间的原因。但是很少有应用程序具有这种设置。如果您必须携带所有 200 GB,那么您拥有多少个表空间都没有关系。
  • 同样,如果您有大型只读对象,将它们放在只读表空间中可以大大减少备份所需的时间和空间。不过,这在数据仓库之外的实践中并不特别常见。
  • 如果您的应用程序可以在没有对象子集的情况下运行,那么创建单独的表空间可能会有好处,这样您就可以将一个表空间脱机并进行表空间级恢复。但是,如果没有一组对象,很少有应用程序可以运行——例如,如果您丢失了索引表空间,那么该应用程序很可能就像您丢失了所有东西一样死了。
  • 如果您有大量空表或大部分为空表以及许多非常大的表,从空间利用率的角度来看,具有不同范围分配策略的单独表空间可能更可取。这种情况偶尔会发生在打包应用程序中,其中任何给定的安装都使用相对较小比例的可用表,并且您不希望每个空表都分配有相对较大的范围。对于本地管理的表空间中的自动盘区管理,这往往不是主要问题,如果您想使用统一盘区,则可能更令人担忧。
  • 如果不同的对象具有不同的磁盘性能优先级,并且您有不同类型的可用磁盘,则单独的表空间可以让您将不同的对象放在不同的磁盘组上。例如,在数据仓库中,您可能希望将较旧的数据放在较慢、较便宜的磁盘上,将较新的数据放在较昂贵的磁盘上。对于 OLTP 应用程序,这种情况很少发生。

  • 除非您的应用程序属于这些特殊情况之一,否则拥有单独表空间的唯一好处是吸引 DBA 的组织意识。就我个人而言,我很高兴能够避免每次创建对象时都指定表空间名称,或者当它们不可避免地在默认表空间中被错误地创建时,花费周期从“错误”表空间移动对象。就个人而言,我并不太担心在使用具有自动范围管理的本地管理表空间对一组手动优化的具有不同统一范围大小的表空间时,是否会“浪费”几十 MB 的空间。另一方面,优秀的 DBA 往往非常关心事物的组织方式“恰如其分”,所以如果 DBA 想要拥有单独的索引和数据表空间,仅仅因为这会吸引某些人的美感,我不会强烈反对。

    关于oracle - Oracle 数据库是否应该有多个表空间用于数据存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291317/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com