【问题标题】:dbExpress and SQL Server 2008 slowdbExpress 和 SQL Server 2008 速度慢
【发布时间】:2011-12-26 16:51:54
【问题描述】:

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

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

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

【问题讨论】:

  • 定义 slow, unstable - 给我们更多的东西!这实在是太宽泛了.....
  • 嗯,在与正常相同的过程中,使用 Delphi 7 和 SQL-Server 2008 时,现在使用 Delphi 2010 和 SQL-Server 2008 非常慢,打开表格、搜索、发布等。
  • 感谢您的宝贵时间!

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


【解决方案1】:

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

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

性能不佳的一个常见原因,尤其是在进行重大更改之后,是索引错误。 从 SQL Server 2005 开始,优化器将它希望看到的索引存储在内存结构中。这些可以通过动态管理视图 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2012-09-20
    • 2010-12-22
    • 2019-10-30
    相关资源
    最近更新 更多