web系统做大后,速度功能瓶颈在数据库,数据库优化是重中之重
mysql优化是一个综合性技术,主要包括:
1、表的设计合理化(符合3NF,第三范式即数据表不冗余)
2、添加适当索引(index) 四种:普通索引、主键索引、唯一索引uinque、全文索引
3、分表技术(水平分割、垂直分割)
4、读写(写:update/delete/add)分离
5、存储过程 [模块化编程,可以提高速度] 因为操作数据库是数据库管理系统编译sql语句执行的,存储过程是直接存在dbms里面,直接执行,速度快
6、mysql配置优化 [配置最大并发数、调整缓存大小]
7、mysql服务器硬件升级
8、定时清除不需要的数据,定时进行碎片清理(MyISAM)
3NF 三范式 必须满足一范式 才能满足二范式 进一步满足三范式
1NF: 即表的列具有原子性,不能再进行分割,信息准确含义准确,主要数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动满足1NF
☞ 数据库的分类
关系型数据库: mysql/oracle/db2/informix/sysbase/sql server
非关系型数据库: (特点: 面向对象或者集合)
NoSql数据库: MongoDB(特点是面向文档)
2NF: 表中的记录是唯一的,就满足了2NF,通常设计一个主键保证每行信息唯一,主键一般不含业务逻辑、自增
3NF: 即表中不要出现冗余数据,也就是说,表的信息,如果能够被推导出来(联合查询),就不应该单独设计一个字段来存放
反3NF:有时候,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。一般在表的1对N情况下,为了提高效率,可能会在1这个表中设计字段,提速(一个表信息少,对应的N个表信息多)