运行 SP_Blitz 表明我的驱动器的读/写性能很慢。进一步阅读,我最终登陆了这个查询来查看我的驱动器上发生的 IO 的实际统计数据:
SELECT a.io_stall, a.io_stall_read_ms, a.io_stall_write_ms, a.num_of_reads,
a.num_of_writes,
--a.sample_ms, a.num_of_bytes_read, a.num_of_bytes_written, a.io_stall_write_ms,
( ( a.size_on_disk_bytes / 1024 ) / 1024.0 ) AS size_on_disk_mb,
a.database_id,
db_name(a.database_id) AS dbname,
b.name, a.file_id,
db_file_type = CASE
WHEN a.file_id = 2 THEN 'Log'
ELSE 'Data'
END,
UPPER(SUBSTRING(b.physical_name, 1, 2)) AS disk_location
FROM sys.dm_io_virtual_file_stats (NULL, NULL) a
JOIN sys.master_files b ON a.file_id = b.file_id
AND a.database_id = b.database_id
ORDER BY a.io_stall DESC
Run Code Online (Sandbox Code Playgroud)
*Row #1 是数据库 mdf,#2 是事务日志
根据结果,我的数据库实际上应该无法使用,但事实并非如此。我们正在运行一个相当大的 OLTP 数据库,在任何给定的时间内都会发生数百个事务,但没有任何性能问题的迹象(至少我们没有从客户那里听到)。
我真的应该担心上述统计数据吗?是否存在我需要解决的实际问题,或者仅仅是查询对我们的案例不正确的情况? …
没有执行计划仅在 DMV sys.dm_exec_query_plan 的 query_plan 列中返回空值。关于为什么的任何线索?我使用 sp_blitzcache 'reads' 和 'duration' 来显示长时间运行的查询,但没有执行计划返回。
在我最近的问题中.. 我注意到死锁会杀死更新语句而不是锁定在其中的选择命令。
SELECT 的隔离级别是数据库默认值,即读提交快照隔离。
SELECT 是我们 ETL 中事务的一部分。
我通过 SQL Server 电子邮件发送 6 个 .csv 文件作为附件。但是电子邮件失败并在数据库邮件日志中显示以下消息:
异常消息:无法向邮件服务器发送邮件。(服务不可用,关闭传输通道。服务器响应为:数据长度超过 52.4MiB 限制)
然后我运行以下命令将 maxfilesize 限制增加 2 GB
EXECUTE msdb.dbo.sysmail_configure_sp
'MaxFileSize', '2147483647';
Run Code Online (Sandbox Code Playgroud)
文件大小限制已成功更改为 2 GB,但我仍然收到相同的错误消息。
以下是我的文件大小(以 KB 为单位)
文件 A 213 KB,文件 B 265 KB,文件 C 6246 KB,文件 D 35 KB,文件 E 60 KB,文件 F 31371 KB
我正在使用 mail-gun(smtp) 发送电子邮件。电子邮件在没有 FILE F 的情况下成功运行。但是当我附加 FILE F 时,电子邮件失败。当我将最大文件大小增加到 2 GB 时,为什么我的电子邮件失败。任何的想法?