Oracle 表空间的错误使用

Luc*_*cas 5 oracle

我对oracle表空间的使用有疑问。我决定为数据库的每个模式定义两个不同的表空间(一个用于数据,另一个用于索引)。

问题是一段时间过去了,我的开发人员混合了在数据表空间中创建索引和在索引表空间中创建表和分区的表空间。

我想知道这会如何影响性能。

提前致谢

小智 4

事实上,在现代设备上,对性能的影响可能很小。

旧的“索引的表空间,数据的表空间”的口头禅来自于存储往往由多组单个设备组成的时代。IE 如果你说你想把一个表空间放在某个磁盘上,它就会放在一个特定的物理磁盘上。

将索引和数据放在同一磁盘上会增加磁盘争用,因为 Oracle 无法同时读取索引和数据。

然而,在当今大多数合理规格的服务器中,就 Oracle 而言,“磁盘”不一定是单个磁盘。它们通常是条带磁盘阵列。在这种情况下,磁盘争用通常不会增加,因为服务器中有多个物理磁盘和 IO 卡,并且索引和数据并不总是发生冲突。

所以,简而言之 - 这取决于您的硬件设置。

不过,说实话,除非您真正掌握监控、响应“顶级 SQL”报告、拥有优秀的数据模型设计人员并正在构建正确的索引,否则您更有可能通过了解这些事情来发现性能改进第一的。我并不是说你不做这些事情,但如果你不这样做,你应该首先寻求改进。

如果您认为表空间问题一个问题,那么(正如其他人所说)您可以移动表和索引,将它们放回到正确的位置。

完成后,一个好的计划是实施某种标准来实现表和索引的创建,可能使用表空间名称的替换变量,最肯定的是作为提交/构建过程的一部分运行的脚本测试的支持检查人们没有把东西放在错误的地方。

然后,您可以在演示/测试服务器上执行常规流程,检查错误位置的内容,并在发现问题时向团队发送电子邮件。这样,您就有机会在问题影响实际环境之前发现问题。

对于任何被破坏超过一次或两次的标准,我都会使用这种方法。

至于与性能无关的影响,它可能会影响表空间的可维护性并确保数据文件配置正确。即使这在现代服务器上也可能可以忽略不计。

不过应该说 - 我不是 DBA,我只是作为 Oracle 开发人员工作了很长一段时间 - 所以当谈到可维护性时,我不是专家......