Sql server 2005 应用程序性能问题:SqlServer和Oracle

Sql server 2005 应用程序性能问题:SqlServer和Oracle,sql-server-2005,oracle10g,Sql Server 2005,Oracle10g,我们在Silverlight、WCF、NHibernate有应用。 目前支持SQL Server和Oracle数据库 由于数据量巨大,它在SQL服务器上运行正常。但在甲骨文上,它运行得非常慢 对于一个功能,在SQL Server上执行需要5秒,在Oracle上执行需要30秒。我不知道会出现什么问题 关于我们的数据库,我想和大家分享两件事 1数据库:包含一个基表,其中包含类型为的列 SQLServer:[文本] 甲骨文:[NCLOB] 我们的数据库结构太规范化了 可能是在oracle中我使用了NC

我们在Silverlight、WCF、NHibernate有应用。 目前支持SQL Server和Oracle数据库

由于数据量巨大,它在SQL服务器上运行正常。但在甲骨文上,它运行得非常慢

对于一个功能,在SQL Server上执行需要5秒,在Oracle上执行需要30秒。我不知道会出现什么问题

关于我们的数据库,我想和大家分享两件事

1数据库:包含一个基表,其中包含类型为的列

SQLServer:[文本]

甲骨文:[NCLOB]

我们的数据库结构太规范化了

可能是在oracle中我使用了NCLOB,这就是性能的原因。我的意思是我不知道它的细节

有人能告诉我原因吗? 或 我需要采取哪些措施来提高与SqlServer相同的性能

提前谢谢。
首先,NCLOB和文本是不等价的。将NCLOB更改为NVARCHAR2,然后重试测试。 还要确保Oracle上有类似的索引,以便公平地进行测试。Oracle的执行速度应该与SQL Server一样快

诚然,完全规范化的查询可能会很慢,因为您可能需要在多个表上进行连接,但对于插入来说很快,因为您只需要插入一个位置。你必须取得平衡。分析数据库的使用情况,并做出选择。也许仅仅对几个表进行非规范化以提高性能会有所帮助


我在公司数据库中所做的是创建一个小型数据仓库,在那里我们使核心表完全正常化,然后存储过程完成连接多个表并将其数据添加到数据仓库表的繁重工作。该网站现在速度惊人,因为它只查看一个表中的数据。尝试类似的方法。

如Simon所说,将NCLOB更改为NVARCHAR2,然后进行测试。 如果没有帮助,请尝试以下操作:

检查连接是否正确配置-在命令行问题TNSPING myserver上。这将显示您是否存在网络延迟问题。 打开Oracle Enterprise Manager并转到性能选项卡。在那里,您将发现几个可以显示瓶颈的指标。首先看这两个: 检查Advisor Central是否存在所有耗时的操作—不仅是SQL,还有可能由次优配置引起的所有其他问题 查看顶部活动以查看哪些查询正在使用大部分资源-在那里您将找到SQL、执行计划和tunning建议 如果这没有帮助,请找到有能力的DBA