AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 4116
Accepted
Frode Lillerud
Frode Lillerud
Asked: 2009-05-05 08:05:56 +0800 CST2009-05-05 08:05:56 +0800 CST 2009-05-05 08:05:56 +0800 CST

如何优化 MSSQL 数据库的性能?

  • 772

我是一个数据库管理员,数据库有 ~280 个表,总数据大小约为 1.5GB。我想调整数据库以使其性能更好。

您如何保持 SQL 数据库的性能?你做了多少索引、统计和碎片整理?

最大的性能杀手/改进是什么,您如何排除故障以找出优化的地方?

编辑: 这是来自第 3 方 CRM 系统的数据库,所以我无法控制代码。他们添加了很多索引(在合理的地方),但我想知道如何保持服务器的速度。

我确实每晚都跑步

EXEC sp_MSforeachtable "dbcc dbreindex('?', '', 90)"

使用维护计划重建索引和(希望)更新统计信息。相同的计划还执行“收缩数据库任务”。

还有哪些其他夜间/每周维护任务或一次性优化可以完成?

编辑2:

提示收集:

  • 不要运行“收缩数据库任务”
  • 关闭“自动收缩”属性
  • 运行 "EXEC sp_MSforeachtable "dbcc dbreindex('?', '', 90)"
  • 然后运行“EXEC sp_updatestats”
sql-server performance database-administration
  • 7 7 个回答
  • 13816 Views

7 个回答

  • Voted
  1. Best Answer
    quentin
    2009-05-05T14:50:13+08:002009-05-05T14:50:13+08:00

    您应该删除维护计划中的“收缩数据库”部分。“收缩数据库”将使您的索引碎片化!这是 Paul S. Randal 的一篇很棒的博客文章,其中详细解释了这一点。

    您可以使用以下方法重建统计信息:

    EXEC sp_updatestats
    

    在您的数据库重新索引后始终更新您的统计信息。这是 Colin Stasiuk 的博客文章,它解释了这种最佳实践。

    • 10
  2. Dani
    2009-05-05T08:14:00+08:002009-05-05T08:14:00+08:00

    我仅通过索引就获得了数量级的性能改进(尽管我并没有真正摆弄它)

    在你处理了明显的(体面的硬件、索引和碎片整理)之后,你最好的性能来源就是查看你自己的代码。

    • 8
  3. SqlACID
    2009-05-05T10:06:41+08:002009-05-05T10:06:41+08:00

    确保您的 SQL 服务器除了提供 SQL 服务、没有文件共享、没有 Web 服务器之外没有做任何事情。一个大小不应该有任何性能问题的数据库,运行 Profiler 将有助于在任何慢点上归零。

    确保您预先分配了足够的空间,这样数据库就不会一直自动增长。

    • 5
  4. Don Dickinson
    2009-05-05T10:39:03+08:002009-05-05T10:39:03+08:00

    如果你有 sql2005 的 sp2,你可以(因为你可能已经是 dba)安装性能仪表板报告插件。重新启动服务器后,我将查看性能监视器以获取有用的索引。性能监视器提供了丰富的信息。随着时间的推移,我发现它积累了很多东西(但这可能是因为我有一个像fogbugz这样的数据库设置......我有很多客户端数据库,都具有相同的结构,在同一个服务器上...... sql server将把每一个中所需的索引视为单独的,这会导致报告中出现大量重复的条目)。无论如何,我花了很多时间查看丢失的索引报告并因此添加/修改索引。

    最好的问候,唐

    • 2
  5. Nathan DeWitt
    2009-05-05T18:02:29+08:002009-05-05T18:02:29+08:00

    将主数据库文件粘贴在与日志文件不同的物理磁盘上。ie - 分开你.MDF和你的.LDF文件。

    • 2
  6. Chopper3
    2009-05-05T08:23:31+08:002009-05-05T08:23:31+08:00

    抱歉,所有硬件修复,但我建议使用;

    64 位 Windows 2008 大量内存(我建议 16GB 左右,目前它很便宜) SSD 上的日志,一对 15krpm SCSI/SAS 磁盘镜像上的数据 理想情况下是一对 Xeon 55xx 系列芯片。

    这显然都需要花钱,但会保证快速显着提高性能 - 你可以让你的数据库更好,但这需要时间(当然这也需要花费)并且不能保证让它更快。

    • 1
  7. Chris Porter
    2009-05-05T18:55:44+08:002009-05-05T18:55:44+08:00

    在 SQL Management Studio 中测试运行您的 sql/存储过程。当您运行它们时,打开查看执行计划和客户统计信息。查找占用大量执行时间的表扫描或其他步骤。如果您运行的是 SQL 2008,它会建议索引,使您的代码运行得更快。

    • 1

相关问题

  • 上线的第一天:如何不杀死您的网站

  • IIS 优化

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 在 SQL Server 中,何时应将 PRIMARY Data FileGroup 拆分为辅助数据文件?

  • 如何从 SQL Server 2008 中的备份中排除索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve