我已经开始使用“Idera SQL check”工具。它显示了 Sql Server 系统上每个活动进程的浮动气泡:

这些气泡周围有红色边框,以防交易闲置。传说这很危险:
这些是与 spid 200 相关的一些特定示例信息:
spid : 200
kpid : 0
blocked : 0
waittime : 0
lastwaittype : MISCELLANEOUS
waitresource :
dbid : 5
database : DBNAME
uid : 1
cpu : 0
physical_io : 0
memusage : 3
login_time : 29.02.2016 09:37:17
last_batch : 29.02.2016 09:37:17
ecid : 0
open_tran : 1
status : SERVERNAME
program_name : PROGRAMNAME
host_process : 5380
cmd : AWAITING COMMAND
nt_damain :
nt_username :
net_address : 99887766 …Run Code Online (Sandbox Code Playgroud) 我有一个 55 GB 大小的立方体,需要大约 2 小时才能完成处理。因为我有过去 4 年的数据,但我们的业务只需要 2 年的数据。为此,我已将维度和事实视图更改为仅包含最近两年的数据。现在,我的立方体大小减少到 32 GB,但处理时间增加了 30 分钟(即 2 小时 30 分钟)。我期望它会更少,因为我限制了进入多维数据集的大量数据。为什么处理时间增加了而实际上应该减少?我现在怎样才能减少处理时间?
PS:我已经尝试过多维数据集分区,并且由于尺寸较大,它也增加了处理时间。
我正在使用通过 WHERE 子句限制数据的视图。
我的观点基本上是这样的:
SELECT V.Col1, V.Col2.... V.Col13
FROM DimeTable V
WHERE <my filter clause>
Run Code Online (Sandbox Code Playgroud)
它从维度表中选择几乎所有列,因此我无法在所有这些列上创建非聚集索引,因为它可能会减慢插入操作并且对我没有太大帮助
我有一个进程渴望 tempdb,但我正在努力识别这个进程。
\n\n我有什么方法可以实现这一目标?
\n\n\n\n\n我们已收到警报,因为 Tempdb 现在已占据您之前在 T:\\ 驱动器上回收的空间。同样,磁盘上还剩余 10MB。从今天早上 10:18 开始,我可以在 REP 实例上的数据文件中看到许多自动增长事件。总共有 330 个自动增长事件,每个事件大小为 512MB,总计 168GB。
\n\n事后很难强调什么在 Tempdb 中使用了这个空间,您是否知道今天有任何进程可能以这种方式使用 Tempdb?
\n
/ ------------------------------------------------- ----------- \\
\n\n确定自动增长事件发生的频率
\n\n当 SQL Server 执行自动增长事件时,触发自动增长事件的事务必须等到自动增长事件完成后才能完成。当自动增长事件发生时,这些自动增长事件会导致您的性能略有下降。因此,最好能够适当调整数据库大小,以便很少发生自动增长事件。
\n\n如果您对系统上自动增长事件发生的频率感兴趣,您可以使用跟踪捕获这些事件。通过了解哪些数据库正在执行自动增长事件,您可以调整这些数据库文件增长属性,以便它们执行自动增长事件的频率降低。您可以使用探查器 \xe2\x80\x9cData File Auto-grow\xe2\x80\x9d 和/或 \xe2\x80\x9cLog File Auto-grow\xe2\x80\x9d 事件来跟踪这些数据库自动增长事件。如果您运行的是 SQL Server 2005 或更高版本,则默认跟踪已捕获这两个自动增长事件。如果您还没有\xe2\x80\x99t 关闭默认跟踪,那么您可以使用默认跟踪文件来查找这些自动增长事件。如果您已关闭默认跟踪,则可以启用它,或者设置新的探查器跟踪以捕获 \xe2\x80\x9cData File Auto-grow\xe2\x80\x9d 和 \xe2\x80\x9cLog File Auto-grow \xe2\x80\x9d 事件。
\n\n默认跟踪记录到文件中。我在清单 4 中提供了代码,向您展示如何从默认跟踪文件中提取所有自动增长事件。如果您创建自己的探查器跟踪会话来捕获这些自动增长事件,那么您将需要修改此脚本以满足您的探查器跟踪设置。
\n\n\n\n马塞洛·米奥雷利\n2014 年 3 月 11 日
\n\n\\*--------------------------------------------------*/\nDECLARE @filename NVARCHAR(1000);\nDECLARE @bc …Run Code Online (Sandbox Code Playgroud) 以下是oracle 文档中的一个例外。
用户进程概览
当用户运行应用程序(例如 Pro*C 程序)或 Oracle 工具(例如 Enterprise Manager 或 SQL*Plus)时,Oracle 创建一个用户进程来运行用户的应用程序。
http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/process.htm
据我了解,用户进程是一个可以连接到 oracle 服务器的软件。你(用户)可以启动一个这样的软件,然后连接到oracle。如果是这样,为什么Oracle creates a user process to run the user's application?
谢谢。
我和我的团队有一个问题,我们需要能够识别阻塞其他进程并杀死它们的进程。有大量脚本可免费用于执行这些操作。我们尝试了各种方法并仔细检查了代码。(如果您是发布了这些查询之一的人,谢谢!)
在我进一步讨论之前,让我告诉您这是针对我们无法修改的供应商应用程序。供应商也不愿意花时间找出进程被阻塞的原因。此时我们唯一的选择是终止长时间运行的进程(如供应商支持所建议的那样)。在终止这些进程之前,我们确实检查了正在运行的查询,但在 99.9% 的情况下,它显示为FETCH API_CURSOR00000000000A7E1F,这告诉我们什么都没有。
到目前为止,这一直是一个手动过程。现在,我们希望自动杀死这些长时间运行的阻塞进程,而不是有人手动杀死它们。
我们想在将它投入生产之前测试这个脚本。我们需要一些帮助来创建一个有意创建阻塞进程的脚本。我们已经尝试在 TEST 环境中使用此应用程序,但不幸的是,我们没有成功复制阻塞进程。
提前感谢你的帮助!