我对oracle表空间的使用有疑问。我决定为数据库数据库的每个模式定义两个不同的表空间(一个用于数据,另一个用于索引)。
问题是,一段时间过去了,我的开发人员混合了表空间,在数据表空间中创建索引,在索引表空间中创建表和分区。
我想知道这会如何影响性能。
提前感谢
发布于 2014-03-06 01:18:49
实际上,在现代设备上,对性能的影响很可能是最小的。
旧的“索引表空间,数据表空间”咒语来自于存储往往由一组单一设备组成的时代。也就是说,如果您说要在某个磁盘上放置一个表空间,它就会转到特定的物理磁盘上。
在同一个磁盘上同时拥有索引和数据会增加磁盘争用,因为Oracle不能同时读取索引和数据。
然而,在目前大多数合理的特定服务器中,对于Oracle而言,“磁盘”并不一定是单个磁盘。它们通常是带条纹的磁盘阵列。在这种情况下,通常不会增加磁盘争用,因为服务器中有多个物理磁盘和IO卡,而且索引和数据并不总是冲突的。
所以,简而言之,这取决于你的硬件设置。
不过,老实说,除非您真的处于监视的顶层,响应您的“顶级SQL”报告,拥有优秀的数据模型设计人员,并且正在构建正确的索引,否则您更有可能通过首先了解这些内容来发现性能上的改进。我不是说你不做那些事,但是如果你不去做,你应该先在那里改进。
如果您认为表空间问题是一个问题,那么(就像其他人说的那样),您只需移动表和索引,将它们放回正确的位置。
一旦完成,一个很好的计划就是为实现表和索引创建实现某种标准,很可能使用表空间名称的替代变量,最肯定的是,它得到脚本测试的支持,该测试作为提交/构建过程的一部分运行,以检查人们是否把东西放在错误的位置。
然后,您可以在演示/测试服务器上执行一个常规流程,检查错误的地方,并在发现某件事情时向团队发送电子邮件。这样,你就有机会在问题降临到现实环境之前发现问题。
我会将这种方法用于任何不止一次或两次被破坏的标准。
至于与非性能相关的影响,它可能会对表空间的可维护性产生影响,并确保正确配置数据文件。即使在现代服务器上,这也可能是微不足道的。
应该说-我不是DBA,我只是在Oracle工作了很长一段时间-所以在可维护性方面,我不是专家.
发布于 2014-03-06 01:24:29
只有在以下情况下,我们才能谈论性能:
这就是我在现实生活中所看到的例子:
想象一下,超市(数据库)中的一个大队列(查询/读写操作)只有一个现金点(硬盘驱动器/RAID硬盘组),有5个卖家(表空间)。你想联系什么卖家并不重要:他们都会使用一个现金点,他们会等到它是免费的。
现在,您想要提高性能,并增加4个现金点。从现在起,有5个卖家会有所帮助:他们每个人都有自己的现金点。
现在假设每个销售者都有存储位置(表)和带有描述性描述的文件,在哪里可以找到商品(索引)。它的工作原理:
因此,正如你所看到的,几乎没有任何东西可以改进。你唯一能做的就是让其他人阅读这个文件,并将卖家直接平行地送到这个地方。如果回到我们的主题,这是存储分离的唯一优势。您可以从两个不同的设备同时阅读。
正如您可以从上面的例子中看到的那样,它不会给您带来更多的性能。只有一点点。只有当你把存储系统分开的时候。
也许我错了,如果是的话,请纠正我。
发布于 2014-03-06 00:56:51
它依赖于用于此表空间的存储(用于表空间使用的数据文件)。如果表空间使用相同的设备,那么它不应该对性能产生影响。但是,如果一个表空间位于更快的磁盘上,那么它显然会对性能产生影响。
https://dba.stackexchange.com/questions/60285
复制相似问题