mysql的优化总结(一)

一。数据库设计方面

1)遵循数据库设计三大范式 ,适当的进行反范式设计

第一范式:1NF 原子性 字段不能再拆分

第二范式: 2NF 先满足第一范式 主键之外的要完全依赖于主键,消除了部分依赖

第三范式 :3NF 先满足第二范式 完全消除传递依赖

反范式设计:允许部分冗余字段,目的为了避免多表查询,提高查询速度

优点:查询速度快      缺点:冗余字段多维护起来成本高

范式优点:方便维护    缺点:查询速度不如反范式

2)设计字段的时候尽可能使用小的字段,比如varchar  tinyint

3)选择合适的mysql引擎  两个引擎的区别(重点)

1>存储类型的区别 myisam frm 表结构文件 myd数据文件 myi索引文件      innodb  frm  ibd 数据索引共用一个表空间

2>myisam读的效率高,不支持事务  表锁    innodb支持事务  支持行锁

一般数据是插入和查询使用myisam引擎 ,删除和修改使用innodb引擎

3>mysql5.5以后默认引擎是innodb

4>mysql5.7以后innodb支持全文索引   之前版本不支持

事务:(acid特性)

原子性  一致性  隔离性  持久性

四个隔离级别:读未提交(脏读)     读提交(不可重复读)   重复读(幻读)   序列化(解决幻读  脏读 不可重复读 但是消耗比较大,一般不用)

4)数据表 可以加数据库名为前缀  我们的字段可以加数据表名为前缀,字段起名要有意义,可以使用简称

你可能感兴趣的:(mysql的优化总结(一))