详解Django ORM引发的数据库N+1性能问题
最近在使用 Django 时,发现当调用 api 后,在数据库同一个进程下的事务中,出现了大量的数据库查询语句。调查后发现,是由于 Django ORM 的机制所引起。Django Object-Relational Mapper作为 Django 比较受欢迎的特性,在开发中被大量使用。但今天要介绍的主角是 QuerySet ,它并不是关键。为了更清晰的表述问题,假设在数据库有如下的表:device 表,表示当前网络中纳管的物理设备。interface 表,表示物理设备拥有的接口。interface_extension 表,和 interface 表是一对一关系,由于 interface 属性过多,用于存储一些不太常用的接口属性。为了更好的分析 ORM 执行 SQL 的过程,需要将执行的 SQL 记录下来,可以通过如下的方式:
下载地址
用户评论