`

MYSQL数据库优化《详细版》

 
阅读更多

MYSQL数据库优化方向

  1.  sql及索引优化,存储优化(程序)
  2. 数据库表结构优化
  3. 系统配置
  4. 硬件

一、SQL语句优化

   1、Mysql慢查日志的开启和日志存储格式

         查看慢查询日志是否开启:show variables like 'slow_query_log'

         查看没索引日志是否记录:show variables like '%log%'

         列表项‘log_queries_not_using_indexes’,如果是OFF

         开启非索引日志记录:set global log_queries_not_using_indexes=on

         查询时间设置(超过多长时间的sql记录慢查询日志):show variables like 'long_query_time';

         这里测试设置为空0:set global long_query_time=0.0  (需要重新链接下mysql才回看到设置的值)

         测试:随便查询几个表

         找到慢查询日志存放目录:show varibels like '%log%';

         | slow_query_log_file                     | /var/lib/mysql/ubuntu-slow.log 

         退出mysql,

         sudo cat /var/lib/mysql/ubuntu-slow.log ,查看慢查日记记录内容

            
 

         2、慢查询日志管理工具

               mysqldumpslow

              退出mysql,系统中:mysqldumpslow -h查看工具使用方法,比如:

              sudo mysqldumpslow -t 5 /var/lib/mysql/ubuntu-slow.log

                  

                  pt-query-digest功能比mysqldumpslow强的多

                  查看帮助命令:pt-query-digest --help

              使用实例:sudo pt-query-digest /var/lib/mysql/ubuntu-slow.log 

 

        3、慢查询日志如何发现有问题的sql

        

                     rows examine扫描行数。

 

       4、explain查询和分析sql执行计划,先计划在执行

        
         
              
        using filesort 和using temporary一般是order by 和group by导致的。

 

    5、max()优化

          max()直接使用会扫描所有行,创建索引后不需要扫描:

         创建索引:explain select max(payment_date) from payment \G;

          命::explain select max(payment_date) from payment \G;

 

    6、子查询优化

          优化成 join..on(链接方式,若果一对多,注意重复数据处理ditinct)

 

    7、group by优化

     sql:EXPLAIN SELECT actor.first_name,actor.last_name,COUNT(*) FROM film_actor INNER JOIN actor USING(actor_id) GROUP BY film_actor.actor_id;

      操作了大量的io(filesort)

      优化成子查询:

       EXPLAIN SELECT actor.first_name,actor.last_name,c.cnt FROM actor INNER JOIN (SELECT film_actor.actor_id,COUNT(*) AS cnt FROM film_actor GROUP BY actor_id) AS c USING(actor_id);

      group 多表链接尽量使用子查询。

 

    8、limit优化

     普通sql:EXPLAIN SELECT f.film_id,f.description,f.title FROM film f LIMIT 0,5;扫描全表,type是all

     第一步优化:EXPLAIN SELECT f.film_id,f.description,f.title FROM film f ORDER BY f.film_id LIMIT 0,5;

     通过一个ID排序,也是扫描全表但是,type是index(索引类型)

     第二步优化:EXPLAIN SELECT f.film_id,f.description,f.title FROM film f WHERE film_id<=56 AND       film_id>50 ORDER BY f.film_id LIMIT 0,5;

     通过记录上次id位置,避免扫描全表,注意适用于ID递增,没有空缺的表。

二、索引优化

    1、选择合适的列建立索引

     

        列的离散度,是指列的唯一性。离散度越大,唯一性越大。比如:SELECT COUNT(DISTINCT p.customer_id), COUNT(DISTINCT p.staff_id) FROM payment AS p,统计的customer_id,比staff_id大,说明,离散密度就大。


     2、SQL优化索引

         
          
       

     优化重复和冗余的索引。此工具可以显示重复和冗余的索引,以及解决办法。


     3、索引维护(删除不用的索引)

         
 

三、数据化结构优化

    1、选择合适的数据类型

         
         


         

    2、范式化优化
       

       

       比如删除表里面所有饮料的商品,结果饮料分类和描述也删除了。


    3、反范式化优化

         
       
        
          
       
 
     4、表垂直拆分
     
 

       
     
        
 
    5、表的水平拆分
       
 
        
 

 

四、系统配置优化

    1、数据库操作系统配置的优化

 
 
    

   2、mysql常用配置参数


   
 
         
 
         
 
      
 
        
 
      
 
       
 
 

五、服务器硬件优化

    1、CPU的选择

     

     通常选择单核更快的CPU   

 

    2、磁盘的选择
   

         RAID0,读写最好,RAIA1,数据不会丢失,安全性高。通常选择RAID1+0

     

 

 

  • 大小: 104.2 KB
  • 大小: 102.3 KB
  • 大小: 146.8 KB
  • 大小: 104.1 KB
  • 大小: 132.1 KB
  • 大小: 85.5 KB
  • 大小: 90.2 KB
  • 大小: 57 KB
  • 大小: 94.3 KB
  • 大小: 90.9 KB
  • 大小: 97.3 KB
  • 大小: 99 KB
  • 大小: 174.2 KB
  • 大小: 60.8 KB
  • 大小: 134.5 KB
  • 大小: 124.9 KB
  • 大小: 90.6 KB
  • 大小: 146.7 KB
  • 大小: 49.1 KB
  • 大小: 146.7 KB
  • 大小: 49.1 KB
  • 大小: 139 KB
  • 大小: 132.2 KB
  • 大小: 45.1 KB
  • 大小: 75.3 KB
  • 大小: 117.1 KB
  • 大小: 67.2 KB
  • 大小: 122.7 KB
  • 大小: 139.2 KB
  • 大小: 130.6 KB
  • 大小: 31.7 KB
  • 大小: 27.7 KB
  • 大小: 46.6 KB
  • 大小: 29.4 KB
  • 大小: 39.3 KB
  • 大小: 24.3 KB
  • 大小: 80.3 KB
  • 大小: 44.9 KB
  • 大小: 166.3 KB
分享到:
评论

相关推荐

    MySQL数据库优化

    MySQL数据库优化MySQL数据库优化MySQL数据库优化MySQL数据库优化

    MySQL数据库优化SQL篇PPT课件.pptx

    从执行计划、SELECT语句、IN和EXIST语句、LIMIT语句、RAND函数、Order by、Group by、Distinct和Count等方面对MySQL数据库优化进行了详细的讲解。 一、执行计划 执行计划是MySQL数据库优化的重要步骤。执行计划...

    mysql数据库优化方案(值得学习)

    简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习mysql的读者。 简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习...

    mysql数据库优化的学习心得

    MySQL 数据库优化技巧总结 MySQL 数据库优化是数据库管理和开发者非常关心的一个问题。由于 MySQL 数据库的性能优化可以直接影响到整个应用系统的性能和用户体验,因此掌握 MySQL 数据库优化技巧对开发者和数据库...

    深入浅出MySQL数据库开发、优化与管理维护.doc

    在本篇中,我们将学习 MySQL 数据库优化的知识点,包括查询优化、索引优化、存储优化和服务器优化等。 管理维护篇 在本篇中,我们将学习 MySQL 数据库管理维护的知识点,包括数据库备份、数据库恢复、服务器监控和...

    MySQL数据库优化实践

    MySQL数据库优化实践主要涵盖硬件配置、操作系统层面的调整以及文件系统的优化等方面,这些优化措施能够显著提高MySQL数据库的性能和响应速度。 首先,硬件优化是基础。开启BBWC(Battery Backed Write Cache)能...

    MYSQL数据库优化秘籍

    MYSQL数据库优化秘籍,大牛出的,值得你反复研读 MySQL在Linux环境下的安装 文件引擎MyISAM与InnoDB比较 LOAD DATA INFILE/mysqldump DBA的分析命令 MySQL的系统配置参数、诊断操作系统的状态 MySQL的分库分表,分区...

    征途单机版MYSQL数据库

    在深入研究和优化"征途单机版MYSQL数据库"时,你需要考虑以下几个方面: 1. **数据模型优化**:检查数据库的表结构,确保它们符合第三范式,减少冗余数据,提高查询效率。 2. **索引策略**:根据查询需求创建合适的...

    MySQL数据库性能优化研究.docx

    MySQL 数据库性能优化研究 MySQL 数据库性能优化是当前数据库管理系统中最重要的研究领域之一。随着互联网技术的快速发展,MySQL 数据库被广泛应用于各种业务场景。然而,当数据库规模不断扩大,查询复杂度增加时,...

    mysql数据库优化经验

    MySQL数据库优化经验 MySQL 数据库优化是一个非常重要的方面,作为数据库管理员或开发者,了解如何优化数据库性能对于提高应用程序的速度和效率具有非常重要的意义。本文将从索引的角度来讲解 MySQL 数据库优化的...

    MySQL数据库优化SQL篇.ppt

    MySQL数据库优化SQL篇.ppt,适用于企业级项目开发

    MySQL数据库原理及应用(第2版)(微课版)-教学用数据库(Mysql数据库备份文件).zip

    在《MySQL数据库原理及应用(第2版)(微课版)》中,我们通常会深入探讨数据库的基本概念、设计原则以及实际操作技巧。这份教学资料包含了一个Mysql数据库的备份文件,为学习者提供了实践平台,便于理解和掌握...

    MySql数据库性能优化

    下面将详细介绍MySql数据库性能优化的相关知识点。 什么是优化? 优化是指通过合理安排资源、调整系统参数,使 MySql 运行更快、更节省资源。优化是多方面的,包括查询、更新、服务器等。优化的原则是减少系统瓶颈...

    完整版 MySQL8.0从入门到精通 MySQL数据库教程 全套PPT课件资源集合 共26个章节 含全部源代码.rar

    完整版 MySQL8.0从入门到精通 MySQL数据库教程 第16章 性能优化(共23页).ppt 完整版 MySQL8.0从入门到精通 MySQL数据库教程 第17章 MySQL Replication(共27页).ppt 完整版 MySQL8.0从入门到精通 MySQL数据库教程...

    MySQL架构执行与SQL性能优化 MySQL高并发详解 MySQL数据库优化训练营四期课程

    MySQL架构执行与SQL性能优化-MySQL高并发详解课程,课程的目标简单...课程安排的学习的教程与对应的学习课件,详细的学习笔以及课程对应的SQL语句,具有由数据库或者MySQL的同学们快来参加这堂MySQL的性能优化课堂吧。

    MySQL数据库巡检手册 MySQL DBA必备

    MySQL数据库巡检手册是MySQL数据库管理员(DBA)在进行数据库管理和维护工作中非常重要的参考资料。巡检手册包含了数据库性能、安全、运行状况等方面的检查项,以确保数据库能够正常稳定运行,及时发现并解决潜在问题...

    MySQL数据库优化方案及应用

    MySQL数据库优化方案及应用主要关注的是提升数据库性能和系统稳定性,以应对高并发访问场景。在本文中,我们将深入探讨数据库优化的各种策略和技术,以及如何通过Amoeba for MySQL中间层代理和分布式数据库架构实现...

    深入浅出-MySQL数据库开发、优化与管理维护

    三、MySQL数据库优化 优化是提高数据库性能的关键,涉及查询优化、索引优化、服务器配置等多个方面。 1. 查询优化:通过改进SQL语句,避免全表扫描,使用JOIN优化,减少子查询,以及合理使用索引来提高查询效率。 ...

    mysql数据库优化文档

    mysql数据库优化文档,有喜欢的童鞋可以看一下

    mysql数据库优化视频教程

    mysql数据库优化视频教程,文件内含百度云下载链接,请自行下载观看,链接失效时可联系邮箱补发,谢谢,赶快下载吧,即下即用~

Global site tag (gtag.js) - Google Analytics