首页 > 解决方案 > 行级事务 + 锁和 RDBMS 可扩展性

问题描述

我使用事务来锁定数据库中的行。通常,一次访问相同行的“事物”数量很少,但是,为了正确性,我仍然希望使用事务在多个表中进行“全部或全部”更改以确保正确性。

我想知道,如果我不希望访问一行的“事物”的数量超过一个数字,并且这些操作非常小,那么在这种情况下,锁定是否真的会影响我扩展数据库。我的理解是,由于 ACID 属性,RDBMS 的扩展性不如 NoSQL 技术。虽然 ACID 属性仍然适用(例如,更新数据可能仍需要更改索引,我猜这在 RDBMS 世界中是同步的?...也许这是可配置的?),因为我在单个记录上没有很多争用

虽然我可能不会对单个记录有很多争用,但我会同时对整个数据库的记录进行许多锁。如果这些锁是隔离的,我是否受到同时锁的开销/数量的限制?我的数据库可扩展性好吗?

编辑:更多背景:

我使用 postgres,我们的部分产品包括一个大型库存库存系统,用于维护各种库存的数量。有许多场景可以通过多种不同的方式修改库存数量(例如,用户可以使用 UI 手动调整数量,或者当库存请求或补货事件通过我们公开的 API 进入我们的系统时自动调整)。在读取库存数量和调整它之间(假设我在这种情况下没有使用增量/减量)我持有一个行级锁作为事务的一部分。

有兴趣听听人们的想法谢谢

标签: sqltransactionslockingscalabilityatomic

解决方案


推荐阅读