高性能MySQL-3、服务器性能剖析

服务器性能剖析

常见问题:

  • 如何确认服务器是否达到性能最佳状态
  • 找出某条语句为什么执行不够快
  • 诊断被描述成“停顿”“堆积”或”卡死“的某些间歇性疑难故障

一、性能优化简介

  • 1、性能:为了完成某件任务所需要的时间度量,度量即响应时间,这是非常重要的原则
  • 2、如果目标是降低响应时间,就需要理解为什么服务器执行查询需要这么多时间,然后去减少或者消除那些对获得查询结果来说不必要的工作,无法测量就无法有效的优化。
  • 3、性能剖析说测量和分析时间花费在哪里的主要方法,一般有两个步骤:测量所花费的时间,对结果进行统计和排序,测量是一项很有挑战性的工作,甚至有百分之90的时间来测量时间花在哪里,如果测量了系统中完整而且正确的数据,性能问题一般都能暴露出来,对症下药的解决方案也就比较明了。

二、对应用程序进行性能剖析

1、性能瓶颈可能的影响因素

  • 外部资源
  • 应用需要处理大量数据
  • 在循环中执行昂贵的操作
  • 使用了低效的算法

2、PHP性能剖析工具:New Relic、xhprof、lfp

三、剖析MySQL查询

1、剖析服务器负载

  • 慢查询日志:5.1后long_query_time为0可以补货所有的查询,查询的响应时间单位可以做到微秒级
  • 生成剖析报告:pt-query-digest

2、剖析单条语句

  • SHOW PROFILES:mysql用来分析当前绘画SQL语句执行的资源消耗情况
  • SHOW [GLOBAL] STATUS;返回一些计数器

四、诊断间接性问题

1、系织偶尔停顿或慢查询

1、系织偶尔停顿或慢查询,无法确认如何重现,很难诊断,诊断这样的问题往往花费很多时间,甚至好几个月。
尽量不要用试错的方式来解决问题,这种方式有很大的风险,如果一时无法定位,可能是测量的方式不正确,或者测量的点选择有误,或者使用的工具不合适。

常见案例

  • 1、缓存中重要数据过期,导致大量查询落到MYSQL上以重新生成缓存
  • 2、DNS偶尔会有超时
  • 3、互斥锁争用
  • 4、并发度超过某个阔值时, InnoDB的扩展性限制导致查询计划的优化需要很长时间

2、确定单条询问题还是服务器问题

如果问题不停的周期性出现,那么可以在某种活动中规察到;或者整夜运行脚本收集数据,第二天来分析结果。大多数情况下都可似通过三种技术来解决

  • 使用 SHOW GLOBAL STATUS(列出服务器运行各种状态值,不停执行存数据)
  • 使用 SHOW PROCESSLIST
  • 使用查询日志

理解发现的问题,可选 gnuplot成R,或其他绘图工具将结果给制成图形

3、捕获诊断数据

  • 诊断触发器:在问题出现时能够捕获数据的基础,有两个常见问题可能导致无法达到预期的结果:误报( false positive)或漏检( false negative),pt-stak工具
  • 收集数据:尽可能收集所有能收集的数据,但只在需要的时间段内收集, oprofile、 strace、 tcpdump、GDB堆栈跟踪、pt- collect、 prestalk
  • 计时结果数据:pt-mysql-summary、pt-summary输出结果打包,pt-sift得到样本汇总信息,pt-pmp。
  • 解释数据结果:pt-mysql-summary、pt-summary输出结果打包,pt-sift得到样本汇总信息,pt-pmp

五、其他剖析工具

1、使用USER_STATISTICS表
2、使用strace,可以调查系统调用的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值