如何处理记录限制

问题描述 投票:0回答:1

我的目标是限制用户特定的记录数,即他可以向我的数据库添加多少新记录。现在限制保存在数据库中,每次用户添加或删除新记录时,脚本都会检查数据库中用户拥有多少记录以及他的限制是多少。对于一个用户和每个用户一个操作,这工作得很好,但我正在努力寻找解决方案,该解决方案适用于许多用户和每个用户许多操作。我注意到,当用户执行许多并行操作时,这种计数方法在情况下效果很差。而且由于每个操作都与许多表相关,因此它必须在数据库事务中。因此,如果用户启动 2 个或更多并行进程,每个进程都会看到与其事务相关的总记录数。但交易后总记录数可能会超过最大限制。如果我不使用数据库转换,问题可能会消失,但这可能会导致数据完整性丢失。如果我限制用户只能执行一项操作,问题也会消失,但这也不是可接受的解决方案。

也许有人有任何建议,如何最好地解决这个问题?

postgresql limit
1个回答
0
投票

没有任何解决方案不会对性能造成影响。

一种可能是有一个表来存储每个用户的记录计数。您必须在每个修改数据的事务中更新它,也许使用触发器(这是性能开销并为每个用户序列化数据修改)。但是,对每个用户的行数进行检查约束可以防止用户超出其配额。

© www.soinside.com 2019 - 2024. All rights reserved.