一,数据库优化基本概念
一,mysql优化从那几个方面入手
1,数据库(表)设计合理,
数据表设计符合3NF(3范式),有时需要适当的逆范式。
2,sql语句的优化
3,数据库参数配置
4,适当的硬件配置和操作系统
这个顺序也表现了这四个工作对性能影响的大小。
二,三个范式
1,第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;(只要是关系型数据库都满足1NF)。
2,第二范式:2NF是对记录的唯一性约束,要求记录有唯一标识,即实体的唯一性。
3,第三范式:3NF是对字段冗余的约束,即任何字段不能有其它字段派生出来,它要求字段没有冗余,没有冗余的数据库设计可以做到。
可以用一个实例解释第三范式:
数据表学生student
数据表班级grade
student数据表中如果有className(班级名称字段),这就是冗余,应该用clssId(班级id)代替className。
但是没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。
4,逆范式
通过实例讲解范式
相册网站,相册表
photoes
1,现在希望得到每张相片点击次数;在photoes中添加hits字段
2,得到相册中每种动物点击次数;SQL语句:select sum(hits) from photoes where albumid = 1;
这样查询数据库,对数据库造成很大压力,可以在相册表中也添加一个hits字段,当photoes中hits增加时候,同时修改相册表中hits字段。
这样就不符合第三范式,但是其恰恰是合理的,这就是一个适当的逆范式。