标签: sql-server

一个“更快”的服务器比另一个慢

我有 2 个虚拟机:

  • VM1 - 8 核 32GB 内存

  • VM2 - 8 核 64GB 内存

我使用 SSIS 目录在两个 VM 上同时运行相同的进程,所有进程都在它自己的 VM 上执行,因此没有信息通过网络传输..Aaa我发现这些进程的加载时间在 VM2 上相当慢。

加载:

  • VM1- 15m

  • VM2- 45m

我检查了一些性能指标并进行了一些基本测试...在加载期间我可以看到 Network I/O Waits

  • VM1- 600 毫秒/秒

  • VM2- 750 毫秒/秒

我假设这个网络 I/O 等待来自 SSIS,因为 SSIS 正在对 SQL Server 执行查询,然后批量插入信息,等待统计告诉我这两种情况的等待类型都是 ASYNC_NETWORK_IO。

我还使用 SP_SPACEUSED 进行了测试,以查看同时插入两个表中的行数,结果不是非常准确,但 VM1 几乎使插入的行数翻了一番......

我错过了任何进一步的测试吗?你想到的其他检查吗?

performance sql-server optimization sql-server-2016 query-performance

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

比 UNION ALL 更快的东西?

我在具有三个或更多相同列的三个表之间有一个带有两个 UNION ALL 的视图,但显示不同的信息。但我想提高它的性能。有没有比 UNION ALL 更快的替代方案?提前致谢。

这是视图的实际执行计划。

和视图的定义

sql-server sql-server-2012

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

如何避免在同一个表上进行多个连接(它有 200 列来保存 ID。另一个表有 ID 到值的映射)

我有一个包含以下列的表格清单

ChkId, Q1_ID, Comment1, Checked1, Q2_ID, Comment2, Checked2, ... Q200_ID...

我有一个包含以下列的表格问题

Q_ID,提示

如何用匹配的 Questions.Prompt 替换 Checklist.Q#_ID 而不将它们加入最多 200 次?有没有优雅的解决方案?

database-design sql-server

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

如何在任何模式中查找空表的数量?

我想查询如何在我已经尝试过使用 select * from dba_tables where owner='HR' and num-rows is null 的架构 HR 中找到所有空表;但我不知道这是否是正确的逻辑

sql-server-2005 sql-server

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

是否可以创建没有事务日志的数据库?

最近有人告诉我,可以在 SQL Server 中创建一个没有事务日志的新数据库。我使用 SQL Server 很长时间了,但从未见过它被完成,而且我认为这是不可能的。我已经浏览了 Microsoft 文档中的“CREATE DATABASE”语法,但找不到任何有关它的信息,但有时我可能会失明,可能会错过它。

可以创建一个没有事务日志的数据库吗?如果是这样,有人可以指出我的文档吗?

需要明确的是,我并不是在谈论将数据库附加到日志。我知道可以附加一个带有事务日志的数据库。我也不是在谈论日志备份。

谢谢。

sql-server transaction-log

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

备份和快照之间的区别

我一直在阅读一篇又一篇关于数据库备份和快照之间区别的文章,但它们没有任何意义,所以请帮助我理解

\n
\n

“快照是系统/卷在特定时间点的映像。”

\n

“备份是执行备份时整个系统/卷的副本。”

\n
\n
    \n
  1. 一切都是在某个时间点完成的。这就是物理学的原理。除非你生活在一个不存在时间的黑洞里。这句话对我来说毫无意义。备份是在制作时制作的。是的。呃。这究竟意味着什么。
  2. \n
  3. 我不知道数据库的“图像”应该是什么。这个类比对我来说毫无意义。它们只是意味着“副本”吗?备份也是数据库的副本。再说一遍,它们对我来说都是一样的。
  4. \n
\n
\n

“快照仅保留自上次快照以来数据库的更改\ns”

\n
\n
    \n
  1. 但我还没有拍过快照。这将是第一个。那么快照会是什么样的呢?由于没有上次快照,因此自上次快照以来没有任何更改。会...与备份完全相同吗?
  2. \n
\n
\n

“快照制作速度快且尺寸小”

\n
\n
    \n
  1. 再说一次,这是我的第一张快照。它如何神奇地比备份更快、更小?或者这只是一个谎言?
  2. \n
\n

编辑:来源:(来自备份与快照的所有顶级谷歌结果)

\n

https://phoenixnap.com/kb/snapshot-vs-backup

\n
\n

快照是您的系统/卷在特定时间点的映像。\n

\n

备份是执行备份时整个系统/卷的副本。\n

\n
\n

https://www.sqlshack.com/understanding-database-snapshots-vs-database-backups-in-sql-server/

\n
\n

数据库快照就像数据库在某个时间点的视图。

\n

快照备份的另一个用途是可以为数据库创建\n多个快照,并且可以在不同的时间点\n获取这些快照

\n

可以随时创建备份。快照是数据库的\xe2\x80\x9c时间点\xe2\x80\x9d\n副本。

\n
\n

https://simplebackups.com/blog/backups-vs-snapshots-with-differences-and-examples/#what-is-a-server-or-a-file-backup

\n
\n

快照很小,可以快速轻松地制作,而不会对服务器产生太大影响。

\n
\n

sql-server backup snapshot

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

如何区分运行时错误和其他错误?

请考虑以下错误消息。

消息 207 级别 16 状态 1 第 7 行

列名“FOO”无效。

由于我触发它的方式,我碰巧知道这是一个解析/编译时错误。

假设我正在运行一个不属于过程的长脚本,并且我收到了相同的错误消息。此错误消息中的内容告诉我错误是在解析/编译时而不是运行时发生的?


CREATE TABLE Department_History
(
    DepartmentNumber INT
);
GO

ALTER TABLE Department_History ADD FOO INT;

-- This is fine and shows FOO.
SELECT * FROM Department_History;

-- When uncommented, this fails at parse time.
INSERT Department_History (DepartmentNumber, FOO) VALUES (4, 5), (6, 7), (8, 9);
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql errors

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

有什么方法可以链接“开始”和“完成”事件吗?

在 SQL Server 扩展事件中,是否有任何方法可以将“开始”事件(例如 )rpc_starting与“完成”事件(例如 )链接起来rpc_completed?例如,是否有类似相关 ID 的东西可以唯一标识对 SQL Server 的调用?

我想查询记录的事件,以获取通话的开始时间(来自 )rpc_starting及其持续时间(来自 )rpc_completed。到目前为止,我还没有找到任何方法来唯一链接同一调用的开始和结束。

我认为该request_id操作可能会起作用,但对于我查看过的事件,它似乎显示为 0。

sql-server extended-events

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

T-SQL 将当前时间向下舍入到最后 15 分钟时间段

我想选择过去 15 分钟内的数据,例如:

在 12.02 我想要从 11:45 到 12:00 的行

在 12.09 我仍然想要从 11:45 到 12:00 的行

在 12.18 我想要从 12:00 到 12:15 的行

数据以datetime2格式存储,我使用的是2019标准版。感谢任何帮助让我开始。规范稍后可能会更改(例如,10 分钟而不是 15 分钟),但我希望能够自己解决这个问题。

谢谢

sql-server t-sql

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

我们如何分析应用程序在 SQL Server 中所做的一切?

我还不是 DBA,但这似乎是 DBA 类型的问题,而不是编程问题。

有人问我:

  • 哪些查询调用最频繁?
  • 在正常项目中它们被调用多少次?
  • 他们需要多长时间来执行
  • 我们是否能够从 SQL 中提取执行计划来显示它当前的运行情况?
  • 我们的 SQL 中是否存在任何潜在错误(不可接受的脏读等)?
  • 哪些表最常被写入?
  • 最常读取哪些表?
  • 对于一个普通项目,这些表通常包含多少行?

由于需要在实时环境中运行,这变得很复杂。我们的愿望似乎是自动化一些维护过程,以修复我们发现的任何问题,并为开发提供输入以阻止他们做坏事。

我的第一个想法是——招聘一名 DBA,可能是一名顾问。

然后,所要求的规模之大令我震惊。一个项目可能会持续数月,其中一台 SQL Server 和多台应用程序服务器共享任务。此输出的数据量将是巨大的,监视每个正在执行的查询的性能开销也将是巨大的。

有没有推荐的此类分析工具?

monitoring sql-server query

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