• MySQL优化与实践


    一、MySQL优化概括

    二、SQL优化

    实践:

    1.查看是否开启了慢查询日志

    show variables like 'slow_query_log'

     

    没有开启

    2.查看是否开启了未使用索引SQL记录到日志

    show variables like '%log%';

     

    没有开启

    3.查看慢查询多少秒才记录到日志

    show variables like 'long_query_time';

     

    4.查看慢查询日志位置

    5.开启上面的一些配置

    set global slow_query_log=on;//开启慢查询日志

    set global log_queries_not_using_indexes=on;//开启记录没有用索引的SQL到慢查询

    set global long_query_time=1;//超过1秒的查询记录到日志

     

    6.MySQL慢查询日志分析工具mysqldumpslow,官方的

    7.MySQL慢查询日志分析工具pt-query-digest,第三方、更好。SQL次数、百分比、具体SQL

     

    8.如何分析SQL查询

     

    9.explain实践,查看计划(SQL执行前都有执行计划)

     

    10.具体的SQL优化

    (1)count()和Max()的优化

    (2)子查询优化

    (3)group by的优化

    (4)Limit查询的优化

    (5)等等

    三、索引优化

     

    解释上面3个为什么:

    1.一个索引包含了查询的所有列,那么称这个索引为覆盖索引。覆盖索引效率高

    2.字段多导致一次索引获取数据量大,IO操作成本就会高

    3.怎么知道离散度?select distinct,越高的离散度越好,排前面

    重复冗余的索引不仅影响插入而且影响查询

     

    复制粘贴,只要输入密码即可

    四、数据库结构优化

    1.

     

    innodb中,对于Null的字段需要额外存储,尽量not null

     

    2.垂直拆分

     

    字段很多,拆分多个表,用外键(无论是不是物理上的)关联

    3.水平拆分

     

    把数据分到多个结构一致的表里去,上下太长(数据量多)需要水平切割。

     

    五、系统配置优化

    1.操作系统方面

     

    表比较多的话,查询会占用文件数

    2.MySQL本身配置优化方面

     

    一个网站,点进去 向导式地教你,然后下载配置文件

    六、硬件优化

     

     非原创,学习整理

  • 相关阅读:
    共享
    mac下搭建基于vue-cli 3.0的Element UI 项目
    rsync | scp文件同步命令使用
    在centos 6.9下Protocol Buffers数据传输及存储协议的使用(python)
    mysql中group by存在局限性探讨(待续)
    Protocol Buffers数据传输及存储协议简单使用
    简单数据库分表的思路
    mysql索引优化
    黑苹果相关资源
    JS 如何获取当前上一个月、下一个月和月份所含天数
  • 原文地址:https://www.cnblogs.com/chz-blogs/p/9381221.html
Copyright © 2020-2023  润新知