美文网首页
mysql优化之入门部分

mysql优化之入门部分

作者: 与子笑 | 来源:发表于2020-09-09 11:03 被阅读0次

    理解了索引,才能用好索引。

    微微了解一下索引是什么

    很多人用书来比作 Mysql,用来解释是什么。诚然,这是一个很好的比喻。

    书名就表名,而书的目录部分,就是对应着 Mysql 的索引了,书的整体内容就是数据。

    你可以通过目录来快速查找你想要的内容,而用不着一页一页的去翻。

    代价就是你会多出来几张纸。

    这张表要不要用索引?

    Mysql 的大部分压力主要还是集中在查询语句中,而有用到索引查和没有用到索引查,在数据量大的情况下,可以称之为云泥之别。

    那么,你的那张表需不需要用到索引呢?(默认是符合三范式的表设计结构,即这张表是有主键的,这里不讨论主键)有以下几个评判标准:

    1. 这张表上的查询变慢了
    2. 这张表的数据一直在快速增长
    3. 这张表需要经常进行查询
    4. 在设计之初已经能预料到这张表查询压力会变大

    实战之优化第一步

    如果你直接接收一个老项目,需要优化数据库,你会怎么做?

    写程序,就像做医生,不能患者一来你就让他打点滴,挂盐水,开止疼片,吃消炎药吧?虽然能解决一些问题,但是病灶还在啊!

    所以,一定是要按照步骤规范来:

    1. 先问生活习惯(看看应用层是否规范,是否有误)
    2. 体检,观察患者体态和病历(找出慢查询,观察一段时间运行状态,全面分析数据情况)
    3. 对症下药(找出问题后,再下手优化)
    show global status like 'uptime';
    
    1. 首先看看数据库运行时长,如果运行时间太长的话(比如一两个月),就要注意了,赶紧通过程序日志方式或者调试,找到是哪个表哪个语句出现了慢查询

    2. 什么是慢查询 ?慢查询不单单指 得慢就叫慢查询,而是指一条Sql的执行时长超过一定限制,这种情况于Mysql来讲才叫慢查询。

    Mysql默认的时长是10秒,而 10 秒是我们不能接受的,所以首先我们得改成1秒。
    查看默认时间:

    show variables like 'long_query_time';
    

    设置默认时间为 1:

    set long_query_time=1;
    

    经过一段时间的观察后,键入下面的命令,看看发生了多少次慢查询:

    show status like 'slow_queries';
    

    如果程序确实出现了变慢症状,且通过程序也不知道到底是哪条sql引发的慢查询(理应通过程序找到慢查询,程序员心里应该做到自己编写的程序哪里可能会发生慢查询)。那么就要开启Mysql慢查询日志了。

    如何开启慢查询日志?我不做讲解也不做记录,可以百度出来。

    做程序的人不要和硬盘比记性,不能和搜索引擎比速度。程序需要掌握更多的思想,而不是让脑袋记录更多的命令和配置

    当找出慢查询语句后,再做分析,哪条SQL最慢,哪条SQL出现频率最高,要做到心中有数。

    再根据这些症状,适当的添加索引,做各种优化操作。
    还有一条辅助命令,它能告诉你告诉你从服务启动到现在共执行了多少次(查询)操作。

      show global status like 'com_select';
    

    对应的当然也有 com_insert,com_update,com_delete了,这个指标能告诉你,这个项目中,与数据库而言,到底是哪个操作占比更重。

    原文链接: mysql优化之入门部分

    相关文章

      网友评论

          本文标题:mysql优化之入门部分

          本文链接:https://www.haomeiwen.com/subject/djfejktx.html