要保证数据库的效率,可以从4个方面着手:
1.数据库设计,数据表表结构设计
2.sql语句的优化(ORM优化)
3.数据库的配置
-- 最重要的参数就是内存
4.硬件资源
-- 读写分离
一、数据库设计
数据库结构优化目的:
1.减少冗余
3.查询速度快
2.使数据库维护时尽可能方便
结构设计方法从四方面着手:
1.根据业务需求
了解产品设计的存储需要,数据处理的需求,数据的完整性和安全性
2.根据业务逻辑
大概根据业务逻辑,分析数据库的存储逻辑,数据和对象之间的逻辑,例如:尽量使用in、is not in,而少用or逻辑
3.物理设计
根据数据类型和特点进行表结构设计,使用适当字段类型,因地制宜
4.维护优化
根据实际情况对索引、存储结构进行优化
遵循数据库设计三范式,但有时需要适当的反范式:
三范式是建立模型最有效的保存数据方式,数据表体积小、减冗余、关联性强、易扩展。特别是OLTP数据库(Online Transaction Processing)联机事物处理,表示事务性非常高的系统,一般都是高可用的在线系统,数据表设计是必须遵循三范式。而适当的反范式则是减少表的关联,从而可以更好的实现索引优化,我们需针对更新的频率不高的字段来设计,可以允许少量冗余,直白的讲就是以空间换时间。
建立索引:
索引字段必须是经常查询的字段
联合索引,经常查询的字段作为条件查询,最左优先
索引字段必须有足够的区分度
表的主键选择较短的数据类型,因为索引引擎会保存主键的值,较短的数据类型可减少索引的磁盘空间,提升效率
二、框架一般都是使用ORM
优化ORM:
关键字段建索引,比如:外键 Foreignkey;
使用适当字段类型
减少数据库的连接数
(想到Redis管道技术pipeline)
对于Django中的QuerySets对象,具有缓存性,尽量重用