我的团队维持一个Oracle数据库,约。200gb的大小。所有的数据(表、索引等等)生活在一个单一的"用户"的表空间。这是个坏主意?有什么好处有多种表空间,以及在什么情况下我会想添加更多的到我的数据库?

谢谢!

有帮助吗?

解决方案

我的偏见(,这主要是个人偏好的问题)是,如果没有令人信服的利益,以创造额外的表空间、生活更容易与一个单一的表空间。

  • 没有绩效益,把对象,在不同的表空间。有一个古老的神话,分离表和索引将有一些性能的好处。还有一个潜在的好处,以传播I/O过所有可用的主轴,但是更好地完成与多个数据文件,在一个单一的空间,然后与多个表空间,因为Oracle一个循环分配的范围在不同的数据文件中假设你的圣不是已经在做的事情甚至I/O.
  • 如果你有大,静态查询/历史表这样的,你可以带一个新的数据库副本,客户的网站只是通过将较小的事务表空间,这将是一个原因,要考虑多个表空间。但也有很少几个应用这种设置。如果你必须把所有200GB,不管有多少表空间。
  • 同样,如果你有大只读对象,把他们在一个只读空间可以极大地减少时间和空间需要进行备份。再次,不过,这并不是特别常见的做法以外的数据仓库。
  • 如果应用程序可以运行,而不某些部分的对象,有可能受益于创建单独的表空间所以,你可能需要一线和做表空间水平的恢复。尽管几个应用程序可以运行而设置的对象--如果你失去的索引表空间,例如,应用程序是有可能只是作为死因为你已经失去了一切。
  • 如果你有一个大数量的空的或者大部分是空的表格和数量很大表,单独表空间与不同程度上分配政策可能会比较好,从一个空间利用的角度来看。这种情况发生偶尔有打包应用在任何给定的安装使用的是一个相对较小的百分比可用的表格,你不希望每个空表有一个比较大的程度上分配给它。自动程度的管理在本地管理的空间,这种倾向不是一个主要关切,它可以更多关于如果你想使用统一的范围。
  • 如果不同的对象具有不同的优先事项盘性的,你有不同类型的磁盘提供,单独表空间可以让你把不同的对象,在不同的集的磁盘。在一个数据库,例如,你可能想要把旧的数据对缓慢,更便宜的盘和更新的数据更加昂贵的磁盘。这不会发生多幸运.

除非您的应用程序落入一些特殊情况下,只有受益于具有单独的表空间是呼吁DBA的意义上的组织。就个人而言,我非常乐意能够避免在指定空间的名字我每次创建一个对象或花费循环的移动物体从"错误"空间时,他们不可避免地会创建的默认表空间误。就个人而言,我是不是过分担心,如果几十MB的空间"浪费的"当使用当地管理的表空间有自动的程度上管理超过一个手优化组表空间与不同的统一程度的大小。另一方面,良好的DBA的往往是非常关切东西正在组织"只是这样"所以我不好相反,如果一个DBA希望具有单独的索引和数据表空间仅仅因为申诉人的审美观。

其他提示

请参阅 http://download.oracle.com /docs/cd/B10501_01/server.920/a96521/tspaces.htm

请参阅 http://download.oracle.com /docs/cd/B28359_01/server.111/b28318/physical.htm

  

可以使用多个表来   执行以下任务:

     

用于控制磁盘空间分配   数据库中的数据

     

分配用于特定空间配额   数据库用户

     通过取数据的

控制可用性   单个表空间在线或   离线

     

执行局部数据库备份或   恢复操作

     

分配跨设备的数据存储   以提高性能

的一个原因,使用不同的表。将用于数据库之间移动数据表运输的愿望。如果你有一组有限的数据,你想在不出口移动,导入,然后表空间传输是一个不错的选择,特别是如果该数据具有完全相同的物理结构与源系统(它是测试的原因很重要性能分析工作,例如)。

我强烈贾斯汀洞穴评估不同意。的制造DBA很可能有一个非常不同的意见。

传输表空间设有用于移动数据库之间的数据的子集,而不必移动整个数据库。

只读表空间这样你就不会每周备份整个数据库,这可能需要几个小时,而你无法忍受的性能损失的时间量,即使你限制速度。

只是备份固定日期某些表空间,由于规模庞大,但很多地方根本没有数据库这个大。相同的理由,点以上。

根据您的应用程序,让我们说有,可以在应用端相互独立的功能模块。如果他们每个人都有自己的一套表空间,你可以把一个应用程序表空间脱机做了一次reorg不影响其他模块......他们可以运行正常。

作为用于数据和索引的分离:传统的原因是用于使两个在不同的盘,因此他们没有相互性能明智竞争。与其说与今天的存储功能,如SAN中,它是所有真正的同一存储区域的问题,但存在的还是的,你要在文件头的水平,即使获得竞争审议本地管理表空间,如果你有在同一个表空间中所有的对象,你不能locigally索引从表中分离出来!即使你在一个表空间中创建数据文件20,你不要来决定在哪里表和索引去,然后有一天,你发现你已经有了重大的竞争在文件头的水平,因为对上表大规模的活动,其中它的索引恰好是在同一个数据文件!事实上废除这一点。如果你只得到了一个TS,那么你的的毫无疑问会遇到文件头争。

有对具有逻辑分离更多的理由,也没有,这不是关于在大多数情况下的性能,它更多的是在生产环境中管理。

S上。洛特已经给普通原因之一可能要拆,截至到多个表空间的好清单。

更多具体到你的情况...

我会问自己,如果现在有改变的事情具体原因。这是不小的任务做出那样的结构变化。是否存在性能问题?您是否在运行对存储空间的限制?你需要分配空间配额?请问你现在的备份和恢复计划,满足您的需求?

如果你能回到过去的时间和距离,你肯定会想计划数据库明智地划分成不同的表空间开始重做的事情。但它是值得的呢?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top