mysql调优基础

一、mysql基础层次

词法分析:将字符串拆分,识别字符串中的表名,条件符等

语法分析:语法是否符合sql语法

 注意:在sql语句中尽量避免出现select * 

    因为sql语句查询出的所有数据都是从磁盘读出来的,要尽量避免磁盘io

 二、mysql调优分析

1、设置参数:set profiling = 1;

2、查看sql语句执行时间:show profile;

  注意:当执行多条sql语句后,执行show profile会展示最近执行sql的时间分析

       当执行多条sql语句,可以使用show profiles查看执行过的sql使用时间

     可以使用show profile for query 数字(show profiles中的query_id)进行选择查看

     

 三、schema与数据类型优化

1、根据实际场景选择更小的数据类型作为字段类型。

  相同字段例如id,选择int与bigint所占用的磁盘空间是不同的,bigint占用空间更小。这时要尽量选择更小的数据类型

2、尽量避免使用与实际场景不符合的字段类型,数字就用int、字符串就用varchar、日期就用date。

  相同数据情况下查询日期为date和日期为varchar,结果显示为date消耗时间更少

3、尽量避免null,在数据库中null != null,null会影响索引的优化

4、整型:tinyint、smallint、mediumint、int、bigint分别使用8,16,24,32,64进行存储

5、char和varchar选择varchar,varchar是根据存储数据大小动态改变的

  char最大长度255,会自动删除末尾的空格

6、主键推荐使用与业务无关的代理主键,如自增的id或者uuid

7、字符集的选择,在mysql中一般选用utf8-mb4

  utf8只支持每个字符3个字节,而utf8mb4是真正的UTF-8是每个字符4个字节

 8、myisam与innodb的区别

 

 

 innodb存储引擎默认情况是给索引进行加锁的,如果条件列是建索引的列就是使用行锁,否则就是使用表锁

 

posted @ 2021-02-25 15:39  showMeTheCodes  阅读(43)  评论(0编辑  收藏  举报