2025-11-10
SQLSERVER
00

引言

动态管理视图(DMVs)和动态管理函数(DMFs)是SQL Server提供的强大工具,它们允许数据库管理员(DBAs)获取有关系统状态的实时数据。这些工具是诊断问题、监控性能和优化SQL Server实例不可或缺的一部分。在本文中,我们将探讨如何利用DMVs和DMFs来监控和优化SQL Server数据库。

DMVs和DMFs概述

DMVs和DMFs是SQL Server 2005及以后版本引入的一组系统视图和函数,它们提供了数据库的内部信息,包括服务器级别和数据库级别的数据。这些视图和函数仅提供只读数据,通常用于监控和诊断。

服务器级别的DMVs和DMFs

服务器级别的DMVs和DMFs提供有关整个SQL Server实例的信息。例如,它们可以提供有关当前活动连接、锁定和阻塞情况以及资源使用情况的数据。

数据库级别的DMVs和DMFs

数据库级别的DMVs和DMFs提供特定于单个数据库的信息。例如,它们可以提供有关索引使用情况、表的磁盘空间占用以及查询统计数据的信息。

使用DMVs和DMFs的脚本示例

1. 查看当前活动的连接

SQL
SELECT session_id, login_name, host_name, program_name, client_interface_name, login_time, last_request_start_time, last_request_end_time FROM sys.dm_exec_sessions WHERE is_user_process = 1;

image.png

2025-11-10
SQLSERVER
00

在维护和优化SQL Server数据库时,理解关键的性能指标是至关重要的。性能指标能够帮助数据库管理员(DBAs)监控数据库的健康状态,发现潜在的问题,并进行及时的调优。以下是一些SQL Server的关键性能指标及相应的监控脚本。

1. CPU使用率

CPU使用率是衡量服务器处理能力是否饱和的重要指标。高CPU使用率可能意味着查询需要优化,或者服务器硬件需要升级。

监控脚本示例:

SQL
SELECT sqltext.TEXT, req.session_id, req.status, req.command, req.cpu_time, req.total_elapsed_time FROM sys.dm_exec_requests req CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext WHERE req.status = 'running' AND req.cpu_time > 5000 -- 过滤出CPU时间超过5秒的请求 ORDER BY req.cpu_time DESC;

2. 内存使用情况

SQL Server会尽可能多地使用内存来提高查询性能。监控内存使用情况能够帮助DBAs了解是否需要调整内存设置或优化查询来减少内存消耗。

监控脚本示例:

SQL
SELECT object_name, counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE object_name LIKE '%Buffer Manager%' AND (counter_name = 'Page life expectancy' OR counter_name = 'Buffer cache hit ratio' OR counter_name = 'Page reads/sec' OR counter_name = 'Page writes/sec');

image.png

2025-11-09
LiteDB
00

本文将详细介绍如何使用C#和LiteDB实现一个设备运行状态追踪系统。该系统可以记录和监控设备的运行状态、故障信息以及维护记录等数据。LiteDB是一个轻量级的NoSQL数据库,完全基于.NET实现,非常适合小型应用程序和嵌入式系统。

环境准备

  • Visual Studio 2022
  • .NET 6.0 或更高版本
  • NuGet包:
    • LiteDB

image.png

项目实现

数据模型设计

首先,我们需要定义几个核心的数据模型:

C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using LiteDB; namespace App17.Models { // 设备信息模型 public class Device { [BsonId] // 设置主键 public int Id { get; set; } public string DeviceName { get; set; } public string SerialNumber { get; set; } public DateTime InstallationDate { get; set; } public string Location { get; set; } public bool IsActive { get; set; } } }
2025-11-09
LiteDB
00

简介

本文将详细介绍如何使用C#和LiteDB实现一个电气设备参数管理工具。LiteDB是一个轻量级的、基于文档的.NET NoSQL嵌入式数据库,非常适合小型应用程序的快速开发。

主要特点

  • 无需安装,单文件数据库
  • 支持LINQ查询
  • 支持文档索引
  • 支持自动ID生成
  • 跨平台支持

环境准备

首先需要通过NuGet安装LiteDB包:

Bash
Install-Package LiteDB

image.png

数据模型设计

首先,我们定义电气设备的数据模型:

C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using LiteDB; namespace App16 { /// <summary> /// 电气设备类 /// </summary> public class ElectricalDevice { [BsonId] // 主键标记 public int Id { get; set; } /// <summary> /// 设备编号 /// </summary> public string DeviceCode { get; set; } /// <summary> /// 设备名称 /// </summary> public string Name { get; set; } /// <summary> /// 设备类型 /// </summary> public DeviceType Type { get; set; } /// <summary> /// 额定电压 (V) /// </summary> public double RatedVoltage { get; set; } /// <summary> /// 额定电流 (A) /// </summary> public double RatedCurrent { get; set; } /// <summary> /// 安装位置 /// </summary> public string Location { get; set; } /// <summary> /// 生产日期 /// </summary> public DateTime ManufactureDate { get; set; } /// <summary> /// 最后检修日期 /// </summary> public DateTime LastMaintenanceDate { get; set; } } /// <summary> /// 设备类型枚举 /// </summary> public enum DeviceType { Transformer, // 变压器 Circuit_Breaker, // 断路器 Switch_Gear, // 开关设备 Capacitor, // 电容器 Generator // 发电机 } }
2025-11-09
LiteDB
00

本文介绍如何使用C#和LiteDB实现一个轻量级的工业设备数据记录系统。LiteDB是一个开源的NoSQL嵌入式数据库,类似于MongoDB,但更轻量级,非常适合用于小型工业设备数据采集场景。

主要特点

  • 单文件数据库,无需安装配置
  • 支持ACID事务
  • 支持文档存储和索引
  • 跨平台,可在Windows/Linux/MacOS上运行
  • 性能优秀,适合工业现场数据采集

环境准备

Bash
# 通过NuGet安装LiteDB包 Install-Package LiteDB

image.png