如何获得数据库上的查询集估计大小?
How to get a queryset estimated size on the DB?
我 运行 每个月都会进行一次清理,从数据库中删除不需要的旧对象。有没有办法估计从清理过程中获得的文件大小?
我正在使用 sqlite3 和 PostgreSQL 数据库,但当然首选独立于数据库的解决方案。
看起来一个好的估计是转到查询集中的每个对象,遍历 __dict__
值,然后对每个对象调用 __sizeof__
。
假设查询集是qs
:
total_est_size = sum([v.__sizeof__() for rec in qs for v in rec.__dict__.values()])
当然,这是一个非常基本的估计,没有考虑很多复杂的实现。
我 运行 每个月都会进行一次清理,从数据库中删除不需要的旧对象。有没有办法估计从清理过程中获得的文件大小?
我正在使用 sqlite3 和 PostgreSQL 数据库,但当然首选独立于数据库的解决方案。
看起来一个好的估计是转到查询集中的每个对象,遍历 __dict__
值,然后对每个对象调用 __sizeof__
。
假设查询集是qs
:
total_est_size = sum([v.__sizeof__() for rec in qs for v in rec.__dict__.values()])
当然,这是一个非常基本的估计,没有考虑很多复杂的实现。