关于mysql优化学习

MySQL优化方向主要有:

1、数据库表的设计(三范式);

2、sql语句的优化;

3、给相关表字段添加合适的索引;

4、数据库分库分表,表的横向、垂直拆分;

5、对mysql配置进行一些优化(读写分离等);

6、定时清除垃圾数据,定时进行碎片整理;

7、多用存储过程,触发器;

8、数据库服务器硬件优化;

=================================================================

数据表关系

    一对一:主键对主键,公用主键;
    一对多:主键对非主键;
    多对多:非主键对非主键;

=================================================================

三范式

    第一范式(1st NF, First Normal Fromate):表字段(每一列)具有原子性。即不可再分,比如(不太恰当)地址字段,内容“中国河南省郑州市”,若该内容保存为一个地段address,则可划分为三个字段country、provence、city;

    第二范式(2nd NF, Second Normal Fromate):表非主键必须依赖于主键。即一个表只表示一种对象、场景。一张订单表存在商品ID和价格等不相关字段;

    第三范式 (3rd NF, Third Nomal Fromate):非主键之间存在依赖传递。即一个表中存在可通过一个字段推导出另一个字段。一张成绩表中,既存在学号又存在学生姓名;

    优点

    1)范式化的数据库更新起来更加快;

    2)范式化之后,只有很少的重复数据,只需要修改更少的数据;

    3)范式化的表更小,可以在内存中执行;

    4)很少的冗余数据,在查询的时候需要更少的distinct或者group by语句。

    缺点

    范式化的表,在查询的时候经常需要很多join关联,增加让查询的代价。

反范式

    通过增加冗余或重复的数据来提高数据库的读性能。
    优点

    1)可以避免关联,因为所有的数据几乎都可以在一张表上显示;

    2)可以设计有效的索引;

    缺点

    删除数据时可能会造成某些有用的数据丢失。

规范和效率

    越遵循三范式,表设计越规范,数据冗余越少,但同样表的查询效率会降低;实际工作中,数据表的设计很少按照3大范式取设计数据库,而是根据实际业务需要,产生一些冗余数据,确保提高查询效率,增加点冗余数据最多增加一些存储空间的开销,但是提高了查询效率。

==================================================================

MySQL开启慢查询日志

     针对sql语句优化,需要先定位到慢查询。通过开启MySQL慢查询日志,定位到查询时间较长的sql进行优化。

 

你可能感兴趣的:(mysql)