Mysql调优及Sql优化从哪些方面考虑?

MySQL优化主要包括设计角度和功能角度的优化。设计上,选择合适的存储引擎如InnoDB,考虑字段类型和范式设计。功能上,利用索引、查询缓存和分库分表提高性能,同时优化SQL语句,避免全表扫描和模糊匹配。此外,还可以通过硬件升级和架构调整来提升数据库性能。
摘要由CSDN通过智能技术生成
mysql 优化主要从以下几个方面来实现:
一、设计角度
       1.存储引擎的选择:
          常用的主要分为两种,一种是 innodb,一种是 myisam,两者的主要区别是
          ①myisam 不支持事务处理,而 innoDB 支持事务处理
          ②myisam 不支持外键,innoDB 支持外键
          ③myisam 支持全文检索,而 innoDB 在 MySQL5.6 版本之后才支持全文检索
          ④数据的存储形式不一样,mysiam 表存放在三个文件:结构、索引、数据,innoDB 存储把结构存储为一个文件,索引和数据存储为一个文件
          ⑤myisam 在查询和增加数据性能更优于 innoDB,innoDB 在批量删除方面性能较高。
          ⑥myisam 支持表锁,而 innoDB 支持行锁
       2.字段类型选择:
          选择合理的字段类型,数据类型尽量选择固定长度
          不要使用字符串类型存储日期时间数据,避免NUll等。
      3.范式
          遵循第三范式,但是有时可以适当违反第三范式(3NF),减少join操作。

二、功能角度
        可以利用 mysql 自身的特性
        如索引,查询缓存,碎片整理,分库、分表等。

        1.索引

        首先我们得确定哪些 sql 语句需要优化,一般在一个系统中,查询语句最多,所以我们主要是针对查询语句进行优化。主要采用两种方式来确定要优化的 sql 语句:
         ①使用慢查询日志,设置需要优化的 sql 语句的执行时间,记录下超过该设置时间的语句,  即为需要优化的语句。
        ②使用 profiling 机制,记录下每条 sql 语句的执行时间,找出执行较慢的语句,即为需要优化的语句。
        我们主要通过给表字段添加索引的方式进行优化,加上索引后,sql 语句的执行时间显著提高了,但并不是加上索引了这条 sql 语句就会用到索引,所以首先看执行慢的语句后面是否有加索引,我们可以使用 explain 或者 desc 加在要执行的 sql 语句前,查看是否使用到索引。

           先开启慢查询日志:

set global slow_query_log = on # 开启慢查询日志,默认是关闭的
set global long_qurey_time=0.5 # 设置慢查询时间阈值,单位:秒
            再去定位慢查询语句
            explain 进行分析,相应字段,查看是否使用到索引
           有几个地方需要注意的是:
           ①为了避免建议索引而造成索引文件过大,我们会使用复合索引,这时候要遵循最左原则。
           ②like 查询,前%不会用到索引
           ③如果条件中有 or,则要求 or 的索引字段都必须有索引,否则不能用到索引。
           ④如果列类型是字符串,一定要在条件中将数据使用引号引用起来,否则不使用索引。
           ⑤优化 group by 语句
           ⑥尽量避免模糊匹配,这样会导致全盘扫描
        2.分表又分为:水平分表,垂直分表
           ①对表格进行水平拆分:水平切分是将同一个表中的记录拆分到多个结构相同的表中;
           
对表格进行垂直拆分:
               把不常用的字段单独放在一个表中;
               常用的字段单独放在一个表中;
               一些大字段单独放在一个表中;

三、sql 语句的优化方面
        1.尽量简化查询语句,能查询字段少就尽量少查询字段,优化分页语句、分组语句等。
        2.减少count(*),select * 使用,优化limit m,n分页,以及避免模糊匹配导致全盘扫描

        3.like进行模糊查询,第一个位置不要使用’%‘等等

四、部署大负载架构体系
        把数据库服务器单独出来,负载大时可以采用主从复制,读写分离机制进行设计。
        具体不在这里多介绍,可以去查查
五、从硬件上升级数据库服务器
        花钱能解决所有问题!!!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值