使用 MvcMiniProfiler 监控EF 4.1 with MySQL Provider

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文有2个不怎么相关的话题,一是用MVCMiniProfiler 监控EF4.1,另一个则是为MvcMiniProfiler提供MySQL Provider的支持。 需要在Web.config中添加system.

本文有2个不怎么相关的话题,一是用MVCMiniProfiler 监控EF4.1,另一个则是为MvcMiniProfiler提供MySQL Provider的支持。

需要在Web.config中添加system.data的节点

   1: <remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
   2: <add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider"
   3:         description="MvcMiniProfiler.Data.ProfiledDbProvider"
   4:         type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />

另外在Application_Start设置Database.DefaultConnectionFactory即可

   1: var factory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"); 
   2: var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory);
   3: Database.DefaultConnectionFactory = profiled;

当然,使用MySQL的话需要使用MySQL的ConnectionFactory,但是MySQL没有为我们提供,所以我们就自己写一下

   1: class MySqlConnectionFactory : IDbConnectionFactory
   2:         {
   3:             public DbConnection CreateConnection(string nameOrConnectionString)
   4:             {
   5:                 using (MiniProfiler.Current.Step("创建Connection:" + nameOrConnectionString))
   6:                 {
   7:                     var connStr = ConfigurationManager.ConnectionStrings[nameOrConnectionString];
   8:                     return new MySqlConnection(connStr.ConnectionString);
   9:                 }
  10:             }
  11:         }

然后使用MySqlConnectionFactory来注册

   1: var factory = new MySqlConnectionFactory();
   2: var profiled = new ProfiledDbConnectionFactory(factory);
   3: Database.DefaultConnectionFactory = profiled;

但是有很多时候使用EF4.1这样做并不会生效我们可能还要为DbContext包装一个基类来实现如下功能

   1: abstract public class BaseDbContext :DbContext
   2:    {
   3:        protected BaseDbContext(string nameOrConnectionString)
   4:            : base(GetConnection(nameOrConnectionString),true)
   5:        {
   6:           
   7:        }
   8:  
   9:        private static DbConnection GetConnection(string nameOrConnectionString)
  10:        {
  11:            if( Database.DefaultConnectionFactory is SqlConnectionFactory)
  12:            {//这个判断是为了解决未使用MySqlConnectionFactory时自动使用SQLServer的问题
  13:                var connStr = ConfigurationManager.ConnectionStrings[nameOrConnectionString];
  14:                return new MySqlConnection(connStr.ConnectionString);
  15:            }
  16:            return Database.DefaultConnectionFactory.CreateConnection(nameOrConnectionString);
  17:        }
  18: }
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
监控 关系型数据库 MySQL
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
211 3
|
存储 监控 关系型数据库
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
235 0
|
Prometheus 监控 Cloud Native
使用mysqld_exporter监控所有MySQL实例
使用mysqld_exporter监控所有MySQL实例
1340 2
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
372 1
|
监控 关系型数据库 MySQL
如何监控和诊断 MySQL 数据库的性能问题?
【10月更文挑战第28天】监控和诊断MySQL数据库的性能问题是确保数据库高效稳定运行的关键
1285 1
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
246 2
zabbix agent集成percona监控MySQL的插件实战案例
|
Prometheus 监控 Cloud Native
Prometheus结合Consul采集多个MySQL实例的监控指标
将 Prometheus 与 Consul 结合使用,实现对多个 MySQL 实例的自动发现与监控,不仅提高了监控的效率和准确性,也为管理动态扩缩容的数据库环境提供了强大的支持。通过细致配置每一部分,业务可以获得关键的性能指标和运行健康状况的即时反馈,进而优化资源配置,提高系统的稳定性和可用性。
564 3
|
监控 关系型数据库 MySQL
zabbix 监控mysql服务
zabbix 监控mysql服务
200 0
zabbix 监控mysql服务
|
监控 关系型数据库 MySQL
实时计算 Flink版产品使用合集之监控 MySQL 数据写入到 StarRocks 中,在初始化成功后,但无法监控到插入的数据是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
Prometheus 监控 Cloud Native
统一观测丨如何使用 Prometheus 监控 MySQL
简介: 数据库的瓶颈往往也是整个系统的瓶颈,其重要性不言而喻,所以对于 MySQL 的监控必不可少,及时发现 MySQL 运行中的异常,可以有效提高系统的可用性和用户体验。因此,观测 MySQL 关键指标,实时关注数据库的可用性与性能,成为运维团队的重要任务。
791 6

推荐镜像

更多