MySQL数据库优化

一、MySQL会遇到的问题:

  1、高并发的读写效率低问题----解决方案:集群,分布式。

  2、海量数据的读写效率低问题-----解决方案:分表,分库。

  3、高可用和高扩展----解决方案:动态扩展服务器、防止单点故障、容灾。

 

 

二、关系型数据库优化:(原则:先单机,后多机。

  2.1 单机优化方案

    1.慢SQL的定义-->分析慢SQL--解决慢SQL。   

    2. 表的设计、索引、引擎的优化。
         3. 分表(垂直分表、水平分表)、分区、分库 的优化。
         4. 缓存做集群。

    5.SQL语句优化

 

  

  2.2 多机优化方案(分为多个数据库):

 

    1. 读写分离(要保证主从同步):

 

          28原则:如果有10个数据库,则2个专门做增删改的数据库,8个专门做查询的数据库。

 

    2. 缓存做集群

 

三、定位慢SQL 

 

  3.1  查看数据库状态:

 

    3.1.1  查看运行时间:show status like ‘uptime’;

 

    3.1.2  CRUD执行次数:

 

      Show status like ‘Com_%’;

 

      Show status like ‘Com_update%’

 

      Show status like ‘Com_delete%’

 

      Show status like ‘Com_insert%’

 

      Show status like ‘Com_select%’

 

create drop truncate(重置表) delete

 

    GLOBAL(全局)、SESSION(当前会话

 

    show  global  status  like  ‘Com_select%’;

 

    show  session  status  like  ‘Com_select%’;

 

    3.1.3 查看所有连接数:

 

      Show status like ‘connections’;

 

      Show status like ‘Max_used_connections’;

 

 

 

  3.2  查看慢查询

 

    3.2.1  查看慢查询的条数

 

      Show status like ‘slow_queries’;

 

      Select * from dept;

 

      Select * from emp where ....;

 

    3.2.2  告诉MySQL什么是慢,设置慢查询阀值。

 

      Show variables like ‘long_query_time’;

 

      Set long_query_time=0.5

 

      Show VARIABLES like ‘%slow%’;

 

四、分析慢SQL

  (1) Explain select * from emp where empno=459 :分析这条查询语句

MySQL数据库优化

 

 

 

五、单机优化---表设计和引擎

  5.1 表结构设计---3NF和反3NF

    1NF:表的列:具有原子性,不可再分解。

    2NF:主键唯一性。

    3NF:表中无冗余数据。

    反3NF:适当增加字段,允许冗余-----可提高查询效率。

  5.2 MySQL存储引擎

    注意:在建表的时候可以指定存储引擎,不指定则为默认,该默认是在my.ini文件里配置

    MySQL引擎分类:myisam、innodb、memory。

    5.2.1 MyISAM INNODB的区别(主要区别)   

      1. 事务安全MyISAM不支持事务INNODB支持。

 

      2. 查询和添加速度MyISAM速度快,INNODB速度慢。

 

      3. 支持全文索引MyIsam支持,innodb不支持。

 

      4. 锁机制MyIsam innodb锁。

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpgxw.html