zoukankan      html  css  js  c++  java
  • 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本身配置优化方面

     

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

    六、硬件优化

     

     非原创,学习整理

  • 相关阅读:
    HDU 1009 FatMouse' Trade
    HDU 2602 (简单的01背包) Bone Collector
    LA 3902 Network
    HDU 4513 吉哥系列故事——完美队形II
    LA 4794 Sharing Chocolate
    POJ (Manacher) Palindrome
    HDU 3294 (Manacher) Girls' research
    HDU 3068 (Manacher) 最长回文
    Tyvj 1085 派对
    Tyvj 1030 乳草的入侵
  • 原文地址:https://www.cnblogs.com/chz-blogs/p/9381221.html
Copyright © 2011-2022 走看看