Sql server SQL Server维护建议?

Sql server SQL Server维护建议?,sql-server,performance,maintenance,Sql Server,Performance,Maintenance,我经营着一个在线摄影社区,这个网站似乎在数据库访问上陷入了爬行状态,有时会超时 我认为自己相当适合编写SQL查询和设计表,但决不是一个DBA…因此问题就来了 一些背景: 我的站点和SQL server正在远程主机上运行。我通过SQL Server管理更新了Visual Studio中的ASP.NET代码和SQL。工作室快车。我没有对服务器的物理访问权限 我所有的存储过程(我想我都得到了)都打包在事务中 主表此时只有9400条记录。我每晚向这个表添加12条新记录 此主表上有一个视图,它将来自其他几

我经营着一个在线摄影社区,这个网站似乎在数据库访问上陷入了爬行状态,有时会超时

我认为自己相当适合编写SQL查询和设计表,但决不是一个DBA…因此问题就来了

一些背景:

  • 我的站点和SQL server正在远程主机上运行。我通过SQL Server管理更新了Visual Studio中的ASP.NET代码和SQL。工作室快车。我没有对服务器的物理访问权限

  • 我所有的存储过程(我想我都得到了)都打包在事务中

  • 主表此时只有9400条记录。我每晚向这个表添加12条新记录

  • 此主表上有一个视图,它将来自其他几个表的数据合并到一个视图中

  • 辅助表是较小的记录,但更多。一个是70000,另一个是115000。这些是#3中项目的评论和评级记录

  • 索引位于最需要的字段上。我将它们设置为自动重新计算大表上的统计数据

  • 当站点停止运行时,如果我运行代码来清除事务日志、更新统计信息、重建主视图以及重建存储过程以获取注释,那么速度就会恢复。但是,我必须手动执行此操作

    可悲的是,我的用户对这些问题感到沮丧,他们的参与度也在下降

    所以我的问题是。。。在远程环境中,设置和计划维护计划以使我的SQL db保持峰值运行的最佳方法是什么

    非常感谢!
    KLK

    您不需要将维护任务设置为维护计划

    只需创建一个存储过程,执行您希望执行的维护任务、索引重建、统计信息更新等

    然后创建一个调用存储过程的作业。可以将作业配置为按所需计划运行

    要创建作业,请使用sp_add_job过程

    要创建计划,请使用sp_add_schedule过程

    我希望我的详细内容是清楚和可以理解的,但如果您需要进一步的帮助,请随时给我写信


    干杯,约翰

    我的直觉告诉我你做错了什么。这听起来有点像你听到的那些故事,如果你不每晚重新启动服务器,系统就无法正常工作:-)

    您的查询有问题,您的行数几乎总是与性能无关,而且您的数据库非常小。我不太熟悉SQL server,但我认为它有一些非常好的查询分析工具。我还认为它有一种记录慢速查询的方法

    我真的觉得你缺少索引了。当然,您可能会认为您添加了正确的索引,但在您验证正在使用的索引之前,这并不重要。也许你认为你有正确的答案,但你的疑问表明不是这样

    首先,找出如何记录查询。很有可能你有一个杀手在那里做一些顺序扫描,索引可以修复

    第二,您可能有一堆小查询,这些查询反而会扼杀它。例如,您可能有某个“User”对象,每当您从用户id中查找用户名时,该对象都会访问数据库。查找您要查询数据库100次的位置,并将其替换为缓存——即使该“缓存”只不过是在请求结束时被擦除的私有变量

    底线是,我真的怀疑这是SQL Server中的错误配置。我的意思是,如果因为系统停止而不得不每晚重新启动服务器,你会责怪系统还是你的代码?这里也一样。。。学习SQL Server提供的工具,我敢打赌它们相当精巧:-)


    总之,一旦你接受了自己做错了什么,就享受这个过程吧。对我来说,没有什么比优化缓慢的数据库查询更有趣的了。令人惊讶的是,您可以使用10秒的运行时间将查询转换为50毫秒的运行时间,并使用一个位置良好的索引。

    为什么要在存储过程中而不是在维护位置进行查询?我假设原始海报使用的是SQL Server Express,因为他们使用的是SQL Server Mgmt Studio Express。SQL Server Express不支持维护计划,因为您还需要安装集成服务。实际上,数据库是SQL Server 2005。Mgmt Studio Express正是我用来连接远程数据库的工具。请确保数据库的自动更新统计信息处于启用状态,这可能是缓慢增长的原因。您如何为整个数据库设置此设置?我曾经以一次性的方式在索引上做过。不幸的是,我认为情况并非如此。代码运行绝对正常,但随着时间的推移,完全相同的代码运行缓慢。直到我重建索引等,它才得到修复。然后它再次以闪电般的速度运行,有一段时间……随着时间的推移获得资格,我们是在谈论几周吗?每天重新索引特定的表索引并不少见。应用程序生成的活动类型将决定索引分段的速度。什么样的活动需要重建索引?我似乎从未遇到过这种问题,但我听说过。对表的大量更新?在我确定在事务中包装更新、插入和删除之前,不到一天,一切都变慢了。每次晚上我都会手动运行我的维修步骤“以防万一”--然后在用户投诉之间的几天。科里--不知道是什么活动导致了它。