在软件开发中,数据库的优化也是非常重要的一部分,坚实的后台会使你的系统更加完美!
◆对mysql优化是一个综合性的技术,主要包括:
a、表的设计合理化【符合三范式(3NF)】
b、添加适当索引(index)【四种:普通索引normal,主键索引、唯一索引unique、全文索引fulltext】复合索引
c、分表技术(水平分割,垂直分割)
d、读写【写:update/delete/add】分离
e、存储过程【模块化编程,可以提高速度,但是移植性不好】
f、对mysql配置优化【配置最大并发数,修改my.ini,调整缓存大小】
每一个并发都会开一个进程,如果最大并发数太大,容易将内存撑破
g、mysql服务器硬件升级
h、定时的去清除不需要的数据,并且定时进行碎片整理(MyISAM)
◆什么样的表才是符合3NF(范式)
表的范式,首先符合1NF,才能满足2NF,进一步满足3NF
1NF:对属性的原子性约束,要求表的列具有原子性,不可再分解,即列的信息,不能分解。只有数据库时关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动满足1NF.
2NF:表中的记录时唯一的,就满足2NF,通常我们设计一个主键来实现
3NF:即表中不要有冗余数据,就是说表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放。下面的设计就是不满足3NF的
符合3NF的设计:
反三范式:在表的一对多的情况下,为了提高效率,可能会在“一”这张表中设计字段,提高速度。