小编l46*_*kok的帖子

SQL Server 存储过程导致 100% CPU 使用率

我正在使用 SQL Server 2008 R2

我们有一个存储过程,它在运行时会导致 100% 的 CPU 使用率。所述 SP 每月运行一次,并执行大约 5 分钟的繁重计算。

由于 SP 每月运行一次,我们并不特别关心是否需要 30 分钟或更长时间才能完成该过程,但是占用所有可用的 CPU 资源是有问题的。我们想限制此特定存储过程的 CPU 使用率。

SQL Server 中有这样的选项吗?

sql-server stored-procedures

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

我的存储 IO 是否存在实际问题或数据不正确?

运行 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 数据库,在任何给定的时间内都会发生数百个事务,但没有任何性能问题的迹象(至少我们没有从客户那里听到)。

我真的应该担心上述统计数据吗?是否存在我需要解决的实际问题,或者仅仅是查询对我们的案例不正确的情况? …

performance sql-server-2008-r2 sp-blitz

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

如果一行由两列或更多列唯一标识,则使用代理或自然 PK?

我很难为我的数据库表在自然 PK 和代理 PK 之间进行选择。

该数据库用于 MOBA 游戏的排名系统。如果我走自然路线,这或多或少是我会做的。

玩家表

 - PlayerID Int AI NN UQ
 - PlayerName Varchar PK
 - ServerName Varchar PK
 - Registered date, level, hero etc misc columns
Run Code Online (Sandbox Code Playgroud)

排名表

 - PlayerName FK references player
 - ServerName FK references player
 - RankID Int AI NN UQ
 - PlayerRank Int NN UQ
Run Code Online (Sandbox Code Playgroud)

问题是,玩家表中的每一行都由一对 PlayerName 和 ServerName 唯一标识。我认为在这种情况下使用代理键并不是很合适,但我想听听关于此的建议。

mysql database-design primary-key

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