MySQL 必知必会
朱晓峰
前摩根大通银行技术部副总裁、系统架构师
17746 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
MySQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

26 | 如何充分利用系统资源?

你好,我是朱晓峰。
内存和 CPU 都是有限的资源,因此,把它们的作用发挥到极致,对提高应用的承载能力来说至关重要。
磁盘读写需要计算位置、发出读写指令等,这些都要消耗 CPU 资源,很容易成为提升系统效能的瓶颈。
如果采取“先把数据放在内存,然后集中写入磁盘”的办法,可以节省 CPU 资源和磁盘读取的时间,但是也会面临系统故障时会丢失数据的风险;相反,如果每次都写入磁盘,数据最安全,但是频繁的磁盘读写,会导致系统效率低下。这就需要我们提升优化资源配置的能力。
今天,我就给你介绍一下优化系统配置的方法,同时还会讲解系统自带的监控工具,从而帮助你合理配置系统资源,精准发现系统资源的瓶颈,进一步提升你处理大并发、大数据的能力。

优化系统资源配置

对 CPU 资源的掌控,关系到系统整体的成败。因为 CPU 资源是系统最核心的资源,无可替代,而且获取成本高。如果应用无法控制 CPU 的使用率,就有可能是失败的,不管你的界面多么人性化,功能多么强大。
因此,我们需要管理好系统配置,把资源效率提升到极致。系统参数控制着资源的配置,调整系统参数的值,可以帮助我们提升资源的利用效率
我来借助一个小例子,给你介绍下怎么通过对系统变量进行调优,来提升系统的整体效率。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何通过优化系统资源配置和利用系统监控工具来提高应用的承载能力。作者首先强调了内存和CPU资源的重要性,并详细介绍了调整系统参数的方法。以点餐系统为例,通过调整InnoDB相关参数,成功降低了CPU使用率,提高了系统效率。此外,文章还介绍了如何利用MySQL的Performance Schema工具监控服务器执行情况,发现并解决系统中的瓶颈问题。通过对保存监控事件信息的系统数据表的介绍,读者可以了解如何利用监控信息诊断系统问题。通过查询事件消耗时间最长的表内容,作者发现了查询中未创建索引导致的CPU资源不足问题,并成功解决。最后,文章强调了在解决系统性能问题时,应优先考虑应用本身的缺陷,而不是盲目增加系统资源投入。总之,本文通过实例详细介绍了如何充分利用系统资源,提高系统的性能和稳定性,对于需要优化系统资源配置和解决系统性能问题的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 必知必会》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • shk1230
    置顶
    I/O高频繁会造成CPU的等待,那不应该导致CPU空闲吗,怎么CPU的利用率到了99%?

    作者回复: 订单数量增加,系统需要处理的任务就多了,CPU 利用率肯定会提升,I/O 也会消耗CPU资源的

    2022-03-14归属地:广东
  • 朱晓峰
    置顶
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了如何通过修改表的设计来提高查询的效率。下面是思考题的答案: 可以拆分成2个表: 表1:包含订单编号、商品编号、订货数量和交易时间 表2:包含订单编号、地址、电话
    2021-05-20
    2
  • 星空下
    思考题理解。1s内同时写日志到缓存和日志刷盘是一个串行的过程。假设刷盘和日志成功的概率都为90%,flush_log=0 成功概率是0.9*0.9=81%。单纯刷盘的概率90%.所以值设置为2数据丢失的风险更低。

    作者回复: 有道理的

    2021-05-11
    4
  • SharpBB
    按上面的操作做的 最终查询events_statements_history_long表都结果为空是什么情况

    作者回复: 检查一下是否启用了事件监控

    2022-02-16
  • Nydia
    这些监控的开启是否会占用系统资源

    作者回复: 会的

    2021-11-10
    2
  • giteebravo
    本节学习了通过系统参数来配置资源、提高应用整体效率的方法。 比较疑惑的是 setup_instruments 与 setup_consumers 为什么要分开保存呢?一个用来保存哪些对象的事件可以被监控,另一个用来保存监控事件的信息。既然已知哪些事件会被监控,那么使用一个表就足够了。 最后介绍的 3 个保存监控信息数据的系统数据表,跟 setup_instruments 的设置又有什么关系呢? 另外,对【在有限的资源前提下提高系统的承载能力】非常认可!

    作者回复: setup_instruments表示哪些对象的事件会被监控,setup_consumers表示保存哪些监控事件信息。比如,我想监控一下磁盘IO相关的操作引发的事件,这个时候,需要在setup_instruments表中设置。那么我要监控什么事件呢?比如语句事件,也就是说要了解引发磁盘IO的语句,那么就要在setup_consumers中进行设置了。 最后介绍的系统数据表可以保存被监控对象的语句事件信息

    2021-05-18
  • Sinvi
    这个参数performance_schema_events_statements_history_long_size设置成-1是为什么

    作者回复: -1表示自动计算,一般来说,自动计算的值是10000

    2021-05-11
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部