首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL server性能和调优

SQL server性能和调优
EN

Database Administration用户
提问于 2013-03-15 13:02:18
回答 3查看 235关注 0票数 3

我正在工作的一个系统,有一个思科负载均衡器,可以处理40K请求。

有两个应用服务器。大约有12个web服务。

还有一个具有2TB数据的SQL服务器。

这里的瓶颈是SQL server,它位于一台带有Quad和80 GB内存的单机上。

有大约250万项存储在数据库中。

查询的类型是,选择一些没有索引的属性的产品。

有一个庞大的索引,我们不想索引所有的东西,因为索引碎片正在真正损害性能。

我考虑过缓存、分布式缓存,但是有些查询不太方便缓存,比如给我一些以foo开头的公司。那里有一个巨大的组合。

你将如何处理这个问题?

有比插入更多的选择。主要是选择。有几个小的选择。还有一些连接有3个表。

EN

回答 3

Database Administration用户

发布于 2013-03-15 13:31:11

对于250万项,我希望您的索引会相当大。特别是当您在大型字段上索引时。同样,如果您的主键很大,这也无助于FYI。任何非聚集索引都包含主键(假设这是您的聚集索引),而不管是否包含它。它必须作为对表的参考。

因此,如果您有一个大的主键(并且只有当您有一个大的主键时),您可能会考虑创建一个标识列并将其更改为您的群集主键。可以将现有的主键保留为非聚集的唯一索引。此外,如果您担心索引碎片,请重新构建/重新组织它。它是SQL 2008及更高版本中ALTER命令的一部分。你甚至可以在网上做。

我对您的建议是添加所需的索引(在合理的范围内)。一般来说,3或4个非聚集索引不会影响性能。老实说,如果你真的需要的话,你大概可以在没有问题的情况下逃脱10次左右。测试您的系统,因为里程可能有所不同。就我个人而言,我将确保您也有一个聚集索引。还添加某种类型的维护作业来执行索引重新构建/重新组织。其中有一些甚至会检查您当前的碎片,并根据需要智能地重新构建或重新组织。

票数 3
EN

Database Administration用户

发布于 2013-03-15 14:44:16

发布DMV查询的时间:

http://sqlserverperformance.wordpress.com/2011/01/06/sql-server-index-tuning-for-mere-mortals/

它可能会建议您删除几个索引并添加一些索引。

只需确保您编写了可能删除的任何索引。因为如果你放下它,第二天有人会说“这个特定的功能不再正常工作了”,...be已经准备好了。

这是最快的方法。

更长的路也是:

  1. 找出执行最差存储过程的方法。
  2. 调整指数。
  3. 测试和重测。
  4. 去第一。

这就是我和worked..operate在一起的最好的DBA。他们不等待“报告”,他们只是不断地冲洗和重复,直到没有什么可以冲洗和重复。

全部披露。我不是dba。但我不得不在电视上播放一次。

票数 0
EN

Database Administration用户

发布于 2016-08-01 15:53:22

我有一些想法,希望它们有用。

您的索引似乎需要一些工作。首先,碎片化将花费很长时间来整理一个25+百万行表,因此使用一个脚本,该脚本只重建高度支离破碎的索引(internet上有几个)--接下来,如果索引列太宽,请考虑使用多个索引并使用索引联接。(在部署到现场之前,我会在非生产环境中测试这个问题)

接下来,检查您的存储过程,尽可能多地查找索引,并确保where和join子句是以使用索引和防止索引或表扫描的方式编写的。还避免在where列中选择*或使用函数,并尝试返回最小数据量

最后,80 gb将超出Server的标准或bi版本(相信它们是64 gb)。因此,除非您有企业版,否则将最大内存和最小内存设置为64 to )。

希望这能帮上忙

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/36765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档