常见的关系型数据库有Oracle、SQLServer、DB2和MySQL等几种,在实际使用过程中,为了减少数据冗余,通常会对原始数据建立相应实体关系,按照最适关系范式进行存储,然后使用SQL语句进行需求查询。
对于复杂且不易频繁变动的数据统计查询,随着原始数据量的增长,为避免前期毫秒出结果,后期服务器宕机的情况出现,除了对SQL语句进行结构优化和修改配置文件配合压力测试外,也可使用以下方案提高查询效率。
1、数据库设计
对整体业务需求进行全局分析,抽离公共查询,借助视图功能对查询过程进行分层处理,如基本表存储原始数据,一级视图基于表查询中间结果,二级视图基于一级视图查询高层级结果,三级或多级视图同上查询更高层级结果。对查询耗时最长,使用频率较高且数据量不多的视图进行转表处理(视图表),并修改高层级视图对该表的使用,从而提高系统整体的查询效率。
2、后端缓存
使用Redis等键值类型的数据库对接口响应结果进行缓存处理,如前端页面默认或高频热点的数据采用长期缓存的方式,条件组合查询的数据采用定时缓存的方式。
3、数据更新处理
当原始数据更新变动时,可结合实际情况对后端缓存进行清空重置,对视图表进行修改或重置处理(truncate+replace into/insert into)。