数据库层的性能监控工具
大多数可通过 ThingWorx 进行部署的企业级数据库引擎均提供了优秀的监控和问题检测工具。与您的 DBA 团队协作,以监控和分析您的数据库并实现应用程序端监控。
以下是 PostgreSQL 和 Microsoft SQL 数据库的一些建议问题检测查询。这些数据库是 ThingWorx 模型数据最常用的企业数据库。
Postgres
监控以下指标以明确 PostgreSQL 服务器上的资源瓶颈:
可用磁盘空间
CPU 使用情况
I/O 使用情况
您必须确认并优化长时间运行的查询。此类查询可在资源再次可用前阻止其他查询并延长等待时间。这会导致长时间运行的线程等待数据库于 ThingWorx 上的锁定。数据库锁定允许单个语句锁定行或表的当前状态。锁定过多会影响应用程序的性能。
您可以使用 PSM 来检测长时间运行的查询以及频繁执行的查询。
MSSQL
对于 Microsoft SQL 数据库,建议您每天晚上都在生产环境中收集数据库统计信息。此外,应查看索引以防高碎片化并根据需要重新构建,尤其是数据库未在 SSD 上运行时。应定期查看 MSSQL 扩展事件日志,以防在 ThingWorx 数据库中长时间等待或发生死锁操作。在性能缓慢期间,以下查询可确定正在等待资源的事务:
SELECT t.*,r.*, SUBSTRING(t.text, statement_start_offset/2 + 1,
(CASE WHEN statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), t.text)) * 2
ELSE statement_end_offset
END - statement_start_offset) / 2)
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
如果某个语句显示为已暂停或已运行很长时间,请检查 wait_typewait_resource 列以确定等待时间的原因。
要查看语句是否正在等待任何锁定,请明确会话 ID 并运行:
select * from sys.dm_tran_locks where session_id = 158