相关疑难解决方法(0)

在生产中的数据库上使用 SQL Profiler

作为开发人员,我经常使用 SQL Profiler。这是一个很好的调试工具,既可以跟踪我的代码在做什么,也可以分析性能问题。

但是我一直在我的开发环境中使用它,并且以一种非常可控的方式使用它。

  • 启动我的应用程序,并使其进入特定状态
  • 在探查器上开始跟踪
  • 对我的应用程序执行特定的操作序列
  • 停止跟踪并检查结果。

SQL Profiler 能否在生产环境中实际使用?

我首先担心的是它会降低性能。

我的第二个担忧是,因为它正在生产中,您不会触发有趣的操作本身。您必须让分析器长时间运行,然后分析结果。结果集会变得太笨拙吗?(占用太多磁盘空间,查询太难)。

有人在生产中使用 SQL Profiler 吗?

sql-server profiler

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

证明在每个查询中不使用 (nolock) 提示

您是否曾经不得不证明不使用查询提示是合理的?

WITH (NOLOCK)在每个访问非常繁忙的服务器的查询中都看到了。开发人员认为它应该默认开启,因为他们讨厌在他们的代码中看到它数千次。

我试图解释说它允许脏读,最终它们会得到坏数据,但他们认为性能权衡是值得的。(他们的数据库一团糟;难怪他们有性能问题。)

如果你有一个明确的例子来说明如何反对这种滥用NOLOCK提示的情况,那将不胜感激。

sql-server locking nolock

23
推荐指数
3
解决办法
4972
查看次数

什么是阻塞以及它是如何发生的?

我试图在 SQL Server 中找到一些关于阻塞的信息,但我找不到关于它是什么以及它是如何发生的简明解释。你能帮我解惑吗?

sql-server locking

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

SQL Server - 非阻塞选择语句的隔离级别是什么?

我有一个长时间运行的事务(称为 T1),它对 SQL Server 2008 R2 中的表执行一些删除、更新和插入操作。同时,另一个进程会定期从该表中运行 select 语句。

在默认隔离设置下(我认为是 READ COMMITTED?),T1 会阻止任何 select 语句运行,直到事务提交或回滚。

我希望看到的是,即使在事务正在进行时,select 语句也能对一致的数据起作用。我相信 SNAPSHOT 隔离可以提供帮助,但不确定我是否朝着正确的方向前进。这是该应用程序的最佳隔离级别吗?

其次,我无法控制调用 select 语句的进程,但我可以控制调用 T1 的 .NET 应用程序。select 语句和 T1 都需要更改任何隔离级别,还是仅将 T1 标记为具有不同的隔离级别就足够了?

sql-server transaction locking isolation-level

9
推荐指数
2
解决办法
6720
查看次数

sql server 并发性能

我们在生产环境中遇到了一些性能问题。

我们发现,当活动会话数超过 25 时,CPU 使用率达到 100%,并且需要很长时间才能下降。


我们拥有的环境:

产品 Microsoft SQL Server 企业版 9.3(sp2)

CPU 2(至强 2.13)

内存7G

会话详细信息 1 的快照

活动会话 25

496 章

空闲会话 289

被阻止的交易29

会话详细信息 2 的快照

活动会话 59

活跃交易 885

267 章

被阻止的交易49


我想知道:

  1. 2CPU 是否可以处理25 个活动会话(500 个活动事务)。 PS:我们测试过,没有并发请求,一个事务,读/写5 个表,在应用程序级别大约需要1 秒。

  2. 阻塞的事务是否占用更多的CPU。 PS:阻塞的事务主要是因为2个表上的锁。

解决方案是什么:添加 CPU 或调整应用程序(java/hibernate)以缩短此事务并减少表中的块?

sql-server-2005

8
推荐指数
3
解决办法
1697
查看次数

SQL Server:当一个进程阻塞另一个进程时应该怎么做?

我是一个偶然的 DBA 并且仍在学习。

当我从 DMV:s 或 Activity Monitor 看到某个进程正在阻塞另一个进程时,应该怎么做?

我应该简单地终止这些进程还是有办法“释放”或者抢占这种阻塞?

sql-server locking

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