Kev*_*ock 15 oracle oracle10g tablespace
我的团队维护着一个约为的Oracle数据库.200GB大小.所有数据(表,索引等)都存在于单个"USERS"表空间中.这是一个坏主意吗?拥有多个表空间有什么好处,在什么情况下我想为我的数据库添加更多?
谢谢!
Jus*_*ave 23
我的偏见(这在很大程度上取决于个人偏好)是,如果创建额外的表空间没有令人信服的好处,那么使用单个表空间可以更轻松地生活.
除非您的应用程序属于这些特殊情况之一,否则拥有单独的表空间的唯一好处是吸引DBA的组织意识.就个人而言,我非常高兴能够避免每次创建对象时都指定一个表空间名称,或者当它们不可避免地在默认表空间中错误地创建时,花费周期从"错误"表空间移动对象.就个人而言,当使用具有自动范围管理的本地管理表空间而不是具有不同统一范围大小的手动优化表空间集时,我不会过分担心是否会浪费几十MB的空间.另一方面,优秀的DBA倾向于非常关注"正是这样"组织的事情,所以如果DBA想要拥有单独的索引和数据表空间,仅仅因为这会吸引某人的美感,我就不会反对.
S.L*_*ott 10
见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
您可以使用多个表空间来执行以下任务:
控制数据库数据的磁盘空间分配
为数据库用户分配特定的空间配额
通过在线或离线获取单个表空间来控制数据的可用性
执行部分数据库备份或恢复操作
跨设备分配数据存储以提高性能
使用不同表空间的一个原因是希望使用表空间传输在数据库之间移动数据。如果您想要移动有限的数据集而不必导出和导入它,那么表空间传输是一个不错的选择,特别是如果出于测试原因,数据具有与源系统完全相同的物理结构(用于性能分析工作,例如)。
小智 5
我强烈反对 Justin Caves 的评估。生产 DBA 可能会有非常不同的意见。
可传输表空间功能用于在数据库之间移动数据的子集,而无需移动整个数据库。
只读表空间,因此您不会每周都备份整个数据库,这可能需要花费数小时,并且即使您限制了速率,您也无法忍受这段时间内的性能下降。
由于规模庞大,仅在固定日期备份某些表空间,尽管许多地方没有这么大的数据库。同上点的原因。
根据您的应用程序,假设存在可以在应用程序端彼此独立运行的模块。如果他们每个人都有自己的一组表空间,您可以将一个应用程序表空间脱机进行重组,而不会影响其他模块……它们可以正常运行。
至于数据和索引的分离:传统的原因是将两者放在不同的磁盘上,这样它们就不会在性能上相互竞争。对于当今的存储功能来说问题不大,例如 SAN,它们实际上都是相同的存储区域,但是有仍然存在考虑到如果您将所有对象都放在同一个表空间中,而您无法在本地将索引与表分开,那么即使使用本地管理的表空间,您也会在文件头级别发生争用!!即使您在一个表空间中创建了 20 个数据文件,您也无法决定表和索引的去向,然后有一天您会注意到文件头级别存在重大争用,因为针对索引所在表的大量活动碰巧在同一个数据文件中!事实上废弃那个。如果你只得到了一个TS,那么你将毫无疑问会遇到文件头争。
进行这种逻辑分离有更多原因,不,这在很大程度上与性能无关,而与生产环境中的管理有关。
| 归档时间: |
|
| 查看次数: |
14242 次 |
| 最近记录: |