sql - Django 权限使用过多的数据库
问题描述
我们开始对我们的数据库进行调查,因为它是我们基础架构中可扩展性较低的组件。我使用以下查询检查了我们的 Postgresql 数据库的表 pg_stat_statements:
SELECT userid, calls, total_time, rows, 100.0 * shared_blks_hit /
nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent, query
FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5;
每次,相同的查询都是列表中的第一个:
16386 | 21564 | 4077324.749363 | 1423094 | 99.9960264252721535 |
SELECT DISTINCT "auth_user"."id", "auth_user"."password", "auth_user"."last_login",
"auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name",
"auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff",
"auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user"
LEFT OUTER JOIN "auth_user_groups" ON ("auth_user"."id" = "auth_user_groups"."user_id")
LEFT OUTER JOIN "auth_group" ON ("auth_user_groups"."group_id" = "auth_group"."id")
LEFT OUTER JOIN "auth_group_permissions" ON ("auth_group"."id" = "auth_group_permissions"."group_id")
LEFT OUTER JOIN "auth_user_user_permissions" ON ("auth_user"."id" = "auth_user_user_permissions"."user_id")
WHERE ("auth_group_permissions"."permission_id" = $1 OR "auth_user_user_permissions"."permission_id" = $2)
这听起来像是权限检查,据我所知,它是在请求级别缓存的。我想知道是否有人做了一个包将它们缓存到 memcached 中,或者找到了一种解决方案来减少检查这些权限的请求数量?
我检查了所有索引,它们似乎是正确的。请求有点慢,主要是因为我们有很多权限,但调用量仍然很疯狂。
解决方案
推荐阅读
- c# - 处理数据时显示对话框
- swift - 多个异步的 Swift 崩溃
- .net - 如何使用mongo changestream diff
- apache-flink - 有没有办法将数据集的多个值与左外连接(Flink)中另一个数据集的单个值进行比较
- android - 每次我在 npm install 后运行 react-native run-android 时,此错误都会不断出现
- c++ - 使用 C++ 的 Array 中的非静态成员引用错误
- javascript - 如何在 Nest.js 中存储、读取和删除 cookie 和会话
- bash - 从file1中选择一个字符串,在file2中搜索并从file2中获取其他值并粘贴到file1中
- coq - Coq:完成后保存证明
- mongodb - 如果我不指定要更新的字段,猫鼬 findOneAndUpdate 将不起作用