随着工作的深入,愈发觉得数据库优化方面知识方面的重要性,于是下载了韩顺平的Mysql优化技术的视频,这里全当课后笔记,里面可能会穿插一些自己的工作经验(感谢韩老师)。
Mysql优化不是一种动作,而是全套动作,包括 :
1.表的设计合理化
2.添加适当的索引
3.分表技术(水平分表,垂直分表)
4.读写分离技术
5.对常用的sql语句使用存储过程(免去了dbms对sql的编译过程,但是降低了可移植性)
6.修改mysql配置(my.ini),比如mysql最大并发量,缓存之类的配置
7.碎片整理,定时清除无用数据
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字段(当然,有时候实际开发中这么设计反而会提高效率,有时候我们为了提高运行效率,就必须降低范式标准,适当保留冗余数据,这个在实际开发中有时会有这种感觉:与其每次拿一条完整的数据都得查另外一张表的字段,还不如直接把字段整合在一张表里面。这个要看具体情况)
后面会跟进学习