delphi - dbExpress 和 SQL Server 2008 速度慢

标签 delphi sql-server-2008 delphi-2010 dbexpress

我最近从带有 SQL Server 2000 的 Delphi 7 迁移到带有 SQL Server 2008 的 Delphi 2010。我正在使用 dbExpress。

安装新版本后,我发现有大量数据的网站系统变得缓慢且不稳定。

谁能告诉我 dbExpress 和 SQL Server 2008 之间是否存在问题?请帮忙!!!!

最佳答案

通过执行探查器跟踪,您可以查看 SQL Server 上是否存在任何瓶颈。您的默认探查器跟踪(包括 RPC:Completed 的 TextData)应该足以开始使用。

可以分析探查器跟踪以查看什么花费了最长的时间。您可以轻松地将跟踪加载到表中并在那里进行分析。请注意,加载到表中时,持续时间列以微秒为单位。有关将跟踪文件加载到表中的更快方法,请参阅函数 fn_trace_gettable。

性能不佳的一个常见原因(尤其是在重大更改之后)是索引不良。 自 SQL Server 2005 以来,优化器将其希望看到的索引存储在内存结构中。这些可以通过动态管理 View sys.dm_db_missing_index_details、sys.dm_db_missing_index_groups 和 sys.dm_db_missing_index_groups_stats 进行访问。

这里是一个简单的示例 SQL,用于创建您自己的缺失索引报告,包括生成缺失索引的基本代码。

select
d.statement
,   d.equality_columns
,   d.inequality_columns
,   d.included_columns
,   s.user_seeks    Seeks
,   s.last_user_seek
,   cast (s.avg_total_user_cost as decimal (9,2)) Cost
,   s.avg_user_impact   [%]
, 'CREATE INDEX MissingIndex_ ON ' + d.statement + '('
    + case when equality_columns IS NOT NULL then equality_columns else '' end
    + case when equality_columns IS NOT NULL AND inequality_columns IS NOT NULL then ', ' else '' end
    + case when inequality_columns IS NOT NULL then inequality_columns else '' end
    + ')'
    + case when included_columns IS NOT NULL then ' INCLUDE (' + included_columns + ')' else '' end
AS SQL
from sys.dm_db_missing_index_details d
INNER JOIN sys.dm_db_missing_index_groups g ON d.index_handle = g.index_handle
INNER JOIN sys.dm_db_missing_index_group_stats s ON g.index_group_handle = s.group_handle

关于delphi - dbExpress 和 SQL Server 2008 速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8637617/

相关文章:

performance - CHARINDEX 与 LIKE 搜索给出了非常不同的性能,为什么?

delphi - 如何为我的组件创建文件夹(目录)属性编辑器?

delphi - 如何解决内存分段并强制FastMM释放内存给OS?

delphi - 网络摄像头支持的视频格式

sql-server-2008 - 有没有工具可以将文件加载到 varbinary(max) 字段中?

sql-server-2008 - SQL Server Management Studio - 始终在最前面

delphi - 如何确定 Windows 主题 TColors

delphi - 将 TEncodedStream 与 Tstringlist 一起使用时出现问题

Delphi 用流打开文件

delphi - 使用通用接口(interface)的错误重载调用