数据库查询设计数据库:django ORM如何处理N+1查询

2020-02-29 10:48 数据库 loodns

  N+1问题并不是ORM独无,只是利用orm的时候,数据库表外的行变成一个对象,于是很天然的就容难利用上面的方式来进行查询晦气用orm进行编程的环境,一般间接用女查询或者inner join

  女查询或者inner join对数据库来说,也是很费资本的操做,由于需要锁表,高并发的环境下很容难锁死

  所以,那类方案明显存储效率不高,可是若是针对那两类环境进行劣化,也算是是一类不错的处理法子,MongoDB就是如许干的

  加缓存把零个列表页加上缓存. 如许 无论是继续施行1+N次查询,仍是用inner join 1次查询搞定,都能够.

  把女查询/join查询 分成两次,是 高并发网坐数据库调劣外很是无效的常见做法,虽然会破费更多的cpu时间,可是避免了系统的死锁,提高了并发响当能力

  数据库本身处置不了高并发,由于我们只能包管单个数据项的操做是本女的,而数据库的查询是以 列表为根基单位,那是个天然矛盾,无解

  数据库设想范式不正在web framework能力范畴内,所以django的ORM 只收撑后面两类做法

发表评论:

最近发表