为了诊断一些性能问题,我想更好地了解与系统性能相比调用某些过程的次数。有没有办法获得在特定时间跨度内每个过程被调用的次数?
监视服务器每个数据库上的活动的最佳方法是什么?
我尝试了实时显示活动的 mtop/mytop,但查看在其上执行的所有查询并不是很实用。
我激活了 MySQL 日志,但没有选择按数据库拆分它们。
您使用什么工具来监控 MySQL 服务器?
我已手动将 mdf/ndf 文件调整为较大的大小,以避免对 SQL Server 数据库进行自动增长操作。由于文件较大,磁盘分区上的可用空间很少,系统管理员不断提醒我空间不足。
因为我调整了它们的大小,所以数据文件中有很多可用空间,但在查看文件大小/磁盘可用空间时不会注意到它。
如何监控数据文件的实际使用百分比?我更喜欢使用 perfmon 计数器。我担心当文件真的用完空间时,SQL Server 将无法分配足够的空间并且会崩溃。
我有一个客户端,其 MS SQL Server 实例(2000 年、2005 年)分散在 20-30 个服务器上。我一直致力于让事情井井有条,并将定期审查数据库基础设施的健康状况、测试备份等。我们还计划在 2008 年之前获得尽可能多的这些数据库。
我知道像 New Relic for Linux 堆栈网络应用程序和数据库这样的服务,我今天通过 Google 偶然发现了 SQL Monitor 产品 (RedGate)。任何人都可以在服务或工具(您有经验的)方面提供一些指导,使我/我的客户能够监视和管理他们的 MS SQL 实例吗?
为了获得概览和可比较的数据,我当前的任务是创建一个性能基线,以获取有关不同生产 SQL Server 实例的一些数据。
我的想法是:
所以我试图实现的是一个通用的性能监控可启动和可停止(也可调度)返回:
确定正在进行的性能优化任务是否成功所需的所有信息
几个汇总的简单数字有助于形象化长期进展……尤其是。用于管理;-)
探查器跟踪中的可重新执行执行计划,以通过索引优化任务比较各个队列的更改和改进
我发现了一些描述性能基线创建的信息。它们中的大多数要么非常复杂,要么只关注所需的性能指标之一(主要是性能数据)。
最匹配的示例/描述如下:为 SQL Server 创建性能基准
问题是:
有没有人有以快速可行的方式创建这种性能监视器的经验?
我是一名具有编程背景的新 DBA。因此,我喜欢构建工具来管理任务,以帮助我熟悉技术的复杂性。
在这种情况下,我正在管理多个 MySQL 服务器,并希望构建一个 UI 来查看服务器的运行状况。
需要注意哪些重要的状态变量会在长时间运行的服务器(> 48 小时)上发出危险信号?
我正在寻找的一个例子是qcache_lowmem_prunes变得更大可能表明配置错误query_cache
我有一些流程需要在开始之前采取不同的步骤。例如:
禁用对外键的检查约束:
select 'alter table '+fk.table_schema+'.'+fk.table_name
+' NOCHECK CONSTRAINT '+fk.CONSTRAINT_NAME
from SAProduct.information_schema.table_constraints fk
join SAProduct.information_schema.tables t
on t.table_schema = fk.table_schema
and t.table_name = fk.table_name
WHERE constraint_type='FOREIGN KEY'
Run Code Online (Sandbox Code Playgroud)
这将产生一个很大的语句列表,我只复制 3 个:
use saproduct
go
alter table dbo.tblProdClassificationCode NOCHECK CONSTRAINT FK_tblProdClassificationCode_tblProdClassification
alter table dbo.tblProdClassificationCodeDescr NOCHECK CONSTRAINT fk_ProdClassificationCodeDescr_ProdClassificationCode
alter table dbo.tblProdClassificationCodeGenerate NOCHECK CONSTRAINT fk_ProdClassificationCodeGenerate_ProdClassification
Run Code Online (Sandbox Code Playgroud)
如果我要一次性运行它,我将如何找到我的位置?我正在处理哪张桌子,下一张是哪一张?
删除也是一样的:
select 'DELETE FROM '+table_schema+'.'+table_name
from saproduct.information_schema.tables
where table_name like 'tbl%'
Run Code Online (Sandbox Code Playgroud)
上面的脚本将生成以下语句集:
use saproduct
go
DELETE FROM dbo.tblBLanguage
DELETE FROM dbo.tblBLgCategoryXRef
DELETE FROM dbo.tblBLgSegmentXRef
DELETE FROM dbo.tblProdClassification
DELETE …Run Code Online (Sandbox Code Playgroud) 我正在使用 XEblocked_process_report 来检测和分析阻塞。
但由于这是一个时间点情况,我只能看到当前正在运行的阻塞领导者的语句以及被阻塞会话试图获取的不兼容锁。
因此,如果阻塞领导者在一个事务中有多个批次/语句,我无法找出之前的哪个语句导致阻塞。
重现脚本
/* Set up tables */
CREATE TABLE dbo.FirstQuery (Id int PRIMARY KEY)
CREATE TABLE dbo.SecondQuery (Id int PRIMARY KEY)
INSERT INTO dbo.FirstQuery (Id)
OUTPUT Inserted.Id INTO dbo.SecondQuery ( Id )
VALUES (1), (2), (3)
/* set up the blocked process event */
EXEC sys.sp_configure
@configname = 'blocked process threshold (s)' -- varchar(35)
, @configvalue = 10 -- int
RECONFIGURE
CREATE EVENT SESSION [blocked_process_report] ON SERVER
ADD EVENT sqlserver.blocked_process_report
(
ACTION(sqlserver.session_id,sqlserver.sql_text,sqlserver.tsql_stack)
)
GO
ALTER EVENT …Run Code Online (Sandbox Code Playgroud) sys.dm_os_performance_countersSQL Server 2005 中引入的DMV 使这项任务变得有些微不足道。但是,我的 Google-Fu 被阻止在 SQL Server 2000 中找到执行此操作的方法。
如何测量 SQL Server 2000 中的每秒事务数?
我有一个约 3.2 亿的行表,我在上面运行以下查询:
UPDATE my_table SET state = TRIM(state)
Run Code Online (Sandbox Code Playgroud)
不用说,这已经运行了 90 多个小时(从星期四下午开始)并且还没有完成。
我想或多或少地知道它到目前为止修改了多少行。有没有办法从正在运行的事务中获取这些信息?
尝试搜索时,我发现如何使用该函数粗略估计将有多少新行添加到表中pgstattuple:
select dead_tuple_count from pgstattuple('my_table');
Run Code Online (Sandbox Code Playgroud)
但这似乎没有显示关于修改了多少行的任何有趣信息。
monitoring ×10
sql-server ×7
performance ×4
mysql ×2
blocking ×1
disk-space ×1
perfmon ×1
postgresql ×1
ssms ×1
t-sql ×1
update ×1