小编Ang*_*ker的帖子

分区键是否也必须是主键的一部分?

我正在根据不是主键的列对表进行分区?我今天阅读了一些关于分区列是否必须是主键的一部分的相互矛盾的信息。我的直觉说不,但我不是 100% 确定。所以问题...

  1. 分区列必须是主列的一部分吗?是推荐一种方式还是另一种方式?
  2. 我是否必须为分区键创建索引,还是 DBMS 自己自动创建?

sql-server-2008 sql-server sql-server-2008-r2 partitioning

25
推荐指数
1
解决办法
2万
查看次数

SQL 编译对 SQL Server 性能的影响有多大?

我正在分析 SQL Server 2005 的一个实例,通过 PerfMon 的SQLServer:SQL Statistics - SQL Compilations/sec指标,我看到平均值约为 170 左右。

我拿出 SQL Profiler 并寻找 SP:Compile 或 SQL:Compile 事件。显然它们不存在。我确实发现Stored Procedure/SP:RecompileTSQL/SQL:StmtRecompile事件。我在 Profiler 中看到的数据量表明这些是错误的事件,尽管我不确定。

所以我的问题。对其中任何一个的回答都会很棒。

  1. 如何查看 SQL Server 中编译的内容?
  2. 我是否选择了错误的指标来查看?在 Perfmon 或 SQL Profiler 中?
  3. 至于Stored Procedure/SP:RecompileTSQL/SQL:StmtRecompile事件在SQL事件探查器,他们不包括持续时间度量。如果这些事件无法查看对系统的时序影响,我该如何衡量这些事件对系统的影响。

performance sql-server-2005 sql-server perfmon

24
推荐指数
2
解决办法
3万
查看次数

触发无限期的 WAITFOR 会增加日志文件的大小吗?

在我的应用程序的最后一个版本中,我添加了一个命令,告诉它在 Service Broker 队列中有东西到达时等待:

WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue)
Run Code Online (Sandbox Code Playgroud)

DBA 告诉我,自从添加以来,日志大小已经飙升。这可能是正确的吗?还是我应该去别处寻找?

sql-server-2005 sql-server service-broker

17
推荐指数
2
解决办法
983
查看次数

ASYNC_NETWORK_IO 等待类型有什么需要担心的吗?

在查看需要很长时间执行的存储过程列表时,其中一个会引起最多的等待。然而,大部分等待 (81%) 是 ASYNC_NETWORK_IO,我知道原因:存储过程传输大约 400 MB 的信息。

在文档中,它指出 ASYNC_NETWORK_IO 的原因是客户端无法跟上数据的洪流,这可能是真的。我不确定如何让客户端跟上,因为它所做的只是通过 ADO.NET 调用存储过程,然后只处理数据集。

因此,鉴于此信息,我是否应该担心此过程的 ASYNC_NETWORK_IO 等待类型?它实际上对服务器性能有影响吗?

补充资料:

  • 我使用的是 SQL Server 2005 的 Service Pack 2。
  • 客户端应用程序与 SQL Server 位于同一台机器上(我知道,我知道……但我对此无能为力)。

performance sql-server-2005 sql-server stored-procedures wait-types

16
推荐指数
1
解决办法
2万
查看次数

快速查看为 SQL Server 分配了多少 RAM?

使用 SQL Server 2005,您可以查看任务管理器,至少可以粗略地查看分配给 SQL Server 的内存量。

在 SQL Server 2008 中,工作集或提交大小从未真正超过 500 MB,即使 SQLServer:Memory Manager/Total Server Memory (KB) perf 计数器指出 16,732,760。

是否有设置可以在任务管理器中实际显示服务器内存?或者是因为他们改变了 SQL Server 中内存的使用方式

sql-server-2005 sql-server-2008 sql-server memory

15
推荐指数
2
解决办法
7万
查看次数

如何提高过程缓存命中率?

据我所知,低于 95% 的过程缓存命中率是一个问题。在我的盒子上,这些值在 85% 到 95% 之间徘徊。

我该如何解决这个问题?服务器似乎有足够的内存,所以这应该不是问题。还能是什么?

performance sql-server-2005 sql-server

11
推荐指数
1
解决办法
9890
查看次数

等待服务代理消息的性能影响

我有一种情况,多个客户端应用程序通过 Service Broker(使用存储的 procs)发送消息。这些消息由另一个客户端应用程序获取,然后进行处理。获取消息的方式是应用发出以下 SQL 语句(伪代码):

LOOP {
    WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM SB_ReceiveQ)
    ProcessMessage
}
Run Code Online (Sandbox Code Playgroud)

所以基本上代码只是阻塞,直到收到消息。这一切正常。

我的问题是关于发出一个WAITFOR (RECEIVE...命令的含义,该命令基本上永远挂在一些基于服务代理的资源上。我应该了解与此模式相关的任何性能问题吗?

作为参考,这是 SQL Server 2005。

performance sql-server-2005 sql-server service-broker

7
推荐指数
1
解决办法
3179
查看次数

sp_who2 中的 SPID 有很多行是什么意思

sp_who2 active在盒子上运行并为每个 SPID 获取多行。例如,见下文。这是否意味着 SQL Server 已将查询分解为 23 个并行子查询?如果是这样,为什么它会忽略 MaxDegreeOfParallelism 设置 8?或者这是别的什么?

在此处输入图片说明

sql-server sql-server-2016

7
推荐指数
1
解决办法
2193
查看次数

分区机制

想象以下假设的数据库结构。基本上它是一个自上而下的结构(国家有订单,订单有订单线,订单线有发货线等......)。

在此处输入图片说明

我想按 CountryID 对我的 SQL Server 2008 数据库进行分区。如您所见,CountryID 仅在前 2 个表中(例如 amCountries 和 amOrders)。鉴于(据我所知)分区是在表级别完成的,我是否需要将 CountryID 添加到其余表中才能对它们进行分区?或者在 SQL Server 中是否有某种类型的级联可以让我跳过将 CountryID 添加到所有内容?

sql-server-2008 sql-server partitioning

5
推荐指数
1
解决办法
179
查看次数

为什么 WAITFOR (RECEIVE FROM QUEUE) 错误地显示在监视器中?

我在我的应用程序中启动以下命令:

WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue)
Run Code Online (Sandbox Code Playgroud)

当我运行 `sp_who2 active' 时,我得到 Status=SUSPENDED 和 Command=DELETE

在此处输入图片说明

注意:移自 StackOverflow。

sql-server-2005 sql-server service-broker

5
推荐指数
1
解决办法
2070
查看次数