sql - 行级事务 + 锁和 RDBMS 可扩展性
问题描述
我使用事务来锁定数据库中的行。通常,一次访问相同行的“事物”数量很少,但是,为了正确性,我仍然希望使用事务在多个表中进行“全部或全部”更改以确保正确性。
我想知道,如果我不希望访问一行的“事物”的数量超过一个数字,并且这些操作非常小,那么在这种情况下,锁定是否真的会影响我扩展数据库。我的理解是,由于 ACID 属性,RDBMS 的扩展性不如 NoSQL 技术。虽然 ACID 属性仍然适用(例如,更新数据可能仍需要更改索引,我猜这在 RDBMS 世界中是同步的?...也许这是可配置的?),因为我在单个记录上没有很多争用
虽然我可能不会对单个记录有很多争用,但我会同时对整个数据库的记录进行许多锁。如果这些锁是隔离的,我是否受到同时锁的开销/数量的限制?我的数据库可扩展性好吗?
编辑:更多背景:
我使用 postgres,我们的部分产品包括一个大型库存库存系统,用于维护各种库存的数量。有许多场景可以通过多种不同的方式修改库存数量(例如,用户可以使用 UI 手动调整数量,或者当库存请求或补货事件通过我们公开的 API 进入我们的系统时自动调整)。在读取库存数量和调整它之间(假设我在这种情况下没有使用增量/减量)我持有一个行级锁作为事务的一部分。
有兴趣听听人们的想法谢谢
解决方案
推荐阅读
- apache-spark - 使用 spark-defaults.conf 文件在 jupyter notebook 中初始化 pyspark
- c# - 将视图绑定到视图模型并在 Xamarin.Forms 中显示为对话框页面?
- html - 右导航栏向下滚动
- javascript - 导出 PapaParse 函数的问题
- html - 从布局组件对齐 Antd 的右键菜单
- bash - IBM Cloud CLI 的 Bash 自动完成?
- java - 将 SceneForm/ARCore 添加到 Gradle 时 Android App 无法编译
- java - 无法从 eclipse 连接到 oracle db
- python - 涉及前一行数据的 Python 矢量化操作
- npm - 我可以在*同时*从 CLI 安装依赖项和 devDependencies 吗?