随着工做的深刻,愈发以为数据库优化方面知识方面的重要性,因而下载了韩顺平的Mysql优化技术的视频,这里全当课后笔记,里面可能会穿插一些本身的工做经验(感谢韩老师)。mysql
Mysql优化不是一种动做,而是全套动做,包括 :sql
1.表的设计合理化数据库
2.添加适当的索引缓存
3.分表技术(水平分表,垂直分表)并发
4.读写分离技术ide
5.对经常使用的sql语句使用存储过程(免去了dbms对sql的编译过程,可是下降了可移植性)学习
6.修改mysql配置(my.ini),好比mysql最大并发量,缓存之类的配置优化
7.碎片整理,定时清除无用数据spa
7.硬件升级设计
表的设计通常听从3NF
第一范式:1NF是对属性的原子性约束,要求属性(列)具备原子性,不可再分解;(只要是关系型数 据库都知足1NF),大意就是某字段里面的值,已经能完整的表达这个字段的意思了,不须要在分解成 多个字段去组合表达,好比某会员表有个字段是表示住址address,能够填写为“中国武汉市南湖 区XXX街XXX号”,这已是一个完整的地址,不须要再把address字段分解
第二范式:2NF是对记录的唯一性约束,要求记录有唯一标识,即实体的唯一性。通常我们设计表, 第一个字段就是自增的ID,因此这个惟一性很好知足
第三范式:3NF是对字段冗余性的约束,它要求字段没有冗余。什么是冗余,举例好比有班级表,里面有class_id,class_name,和所属年级department三个字段, 学生表里面有st_id,st_name,class_id,经过学生表的class_id就能在班级表里获取到对应的年级department,就没必要要再在学生表里增长一个department字段(固然,有时候实际开发中这么设计反而会提升效率,有时候咱们为了提升运行效率,就必须下降范式标准,适当保留冗余数据,这个在实际开发中有时会有这种感受:与其每次拿一条完整的数据都得查另一张表的字段,还不如直接把字段整合在一张表里面。这个要看具体状况)
后面会跟进学习