postgresql 是否能够为数据库的用户分配“优先级”,以便决定我们为用户分配多少资源(内存、CPU 等)?
像云服务中的订阅模式一样思考:拥有高级订阅的客户应该分配足够(更大)的资源来满足 SLA,而订阅计划较低的用户可能会遇到一些性能下降,因为我们没有分配大量资源.
我知道我们可以在 postgres 中调整一些参数,例如 work_mem 或maintenance_work_men,但这些是“进程”级别参数,而不是用户级别。
您可以使用
work_mem
在每个用户级别设置
ALTER USER ... SET ...
等
https://www.postgresql.org/docs/current/sql-alteruser.html
但是 - 这可能不会达到你想要的效果。如果用户 A 的查询现在溢出到磁盘并需要 5 分钟才能运行,则与为 A 提供更多资源相比,您对用户 B 服务的影响可能更大。如果用户 A 持有锁,那么这可能会让每个人的生活变得困难......