我看过很多涵盖 SSAS 业务方面的材料,但关于行政和管理的重要方面的内容并不多。
从管理 SQL Server Analysis Services 实例的角度来看,工作的 DBA 必须了解哪些有关 SSAS 的知识才能正确有效地管理它?
查询优化器使用的统计信息物理存储在 SQL Server 数据库文件和缓冲池中的什么位置?
更具体地说,有没有办法使用 DMV 和/或 DBCC 找出统计数据使用的页面?
我拥有 SQL Server 2008 Internals 和 SQL Server Internals and Troubleshooting 书籍,但没有一本涉及统计的物理结构;如果他们这样做,我将无法找到此信息。
我有两个几乎相同的查询在同一个 SQL Server 2005 实例上运行:
SELECT由 LINQ 生成的原始查询(我知道,我知道......我不是应用程序开发人员,只是 DBA :)。OPTION (RECOMPILE)在最后加了一个。没有其他任何改变。
第一个每次运行需要 55 秒。
第二个需要 2 秒。
两个结果集是相同的。
为什么这个提示会产生如此显着的性能提升?
在线图书条目RECOMPILE没有提供非常详细的解释:
指示 SQL Server 数据库引擎在执行后放弃为查询生成的计划,强制查询优化器在下次执行相同查询时重新编译查询计划。在不指定 RECOMPILE 的情况下,数据库引擎会缓存查询计划并重用它们。编译查询计划时,RECOMPILE 查询提示使用查询中任何局部变量的当前值,如果查询在存储过程中,则将当前值传递给任何参数。
RECOMPILE 是创建使用 WITH RECOMPILE 子句的存储过程的一种有用的替代方法,当必须重新编译存储过程中的查询子集而不是整个存储过程时。有关详细信息,请参阅重新编译存储过程。RECOMPILE 在您创建计划指南时也很有用。有关更多信息,请参阅使用计划指南优化已部署应用程序中的查询。
由于我的查询有很多局部变量,我的猜测是当我使用OPTION (RECOMPILE)查询提示时,SQL Server 能够(认真地)优化它。
我所看到的每个地方都有人说OPTION (RECOMPILE)应该避免这种情况。对此的解释通常是使用此提示 SQL Server 无法重用此执行计划,因此每次都必须浪费时间重新编译它。
(但是)考虑到巨大的性能优势,我倾向于认为这次使用这个查询提示会是一件好事。
我应该使用它吗?如果没有,有没有一种方法可以强制 SQL Server 使用更好的执行计划而无需此提示且无需更改应用程序?
performance sql-server-2005 sql-server optimization query-performance
类似于我之前的问题DBA 必须了解 SSAS 什么?,这产生了一个非常好的答案(谢谢,@ConcernedOfTunbridgeWells!),我现在问一个类似的问题:
SQL Server DBA 需要了解有关 Windows Server 的哪些信息才能有效地管理它并了解幕后发生的事情,以及了解 SQL Server 运行的底层操作系统在多大程度上很重要成为一名优秀的 DBA?
它可以是个性化的功能,书籍,从经验中,你说出来!
镜像和故障转移群集之间的主要区别是什么?
每个人解决什么样的问题,在什么样的场景中推荐每个人?
我一直在研究 PowerShell,并且我一直(慢慢地)将它融入到我的日常 DBA 任务中。
到目前为止,我已经看到了许多用于许多不同管理活动的断开连接的 PowerShell 脚本。
我想知道的是,是否有官方(或可识别的)PowerShell 脚本集合或存储库,人们通常会使用这些集合或存储库来获取用于常见 DBA 活动的 SQL Server PowerShell 脚本(例如 Ola Hallengren 的 T-SQL 脚本)。
有没有办法找出表在 SQL Server(2005 及更高版本)中占用了多少内存?
例如,假设我有一个包含 3000 万条记录的表。我想知道当前缓冲区缓存中有多少属于该表的页面,包括索引、数据和文本/图像页面。
我找到了 Pinal Dave 的这个查询,但似乎这个查询只返回由索引分配的页面(无论是集群的还是非集群的)。
将数据库快照用于报告目的的性能优势是什么?
在我看来,它可能会降低性能,因为对于原始数据库中的每次写入,都必须为快照本身进行另一次写入。
我可以看到,只要您想报告当时为止的数据,就会使用快照,但这不属于性能类别。
再说一遍,有性能优势吗?
我有一个包含超过一百万条记录的表,并带有全文索引。
这张表过去被一分为二,每年年底,超过某个日期的数据会被移到另一个具有完全相同结构的单独数据库中的表中。第二个表有大约 3+ 百万条记录。
我只能猜测为什么要这样做,但现在我被要求将这两个表合并回一个表,并对其进行分区。我正在运行 SQL Server 2005。
全文搜索在分区表中是否有效?
对这种情况有什么建议,或者我应该注意什么?
我找到了这个解决方案,但是每次重新启动 SQL Server 服务时这些信息都会丢失,或者换句话说,它不是持久的。
即使服务器在事后关闭,我还有另一种方法可以找出表的上次更新时间吗?
sql-server ×10
performance ×2
cache ×1
clustering ×1
failover ×1
management ×1
memory ×1
mirroring ×1
optimization ×1
partitioning ×1
powershell ×1
reporting ×1
scripting ×1
snapshot ×1
ssas ×1
statistics ×1
windows ×1