Postgresql 用于长时间运行的事务的数据库,具有大量更新
我构建了一个用于数据提取和转换的工具。典型用例-以事务方式处理大量数据 数字是-大约10秒-5分钟的持续时间,200-10000行更新(持续时间长不是由数据库本身造成的,而是由事务期间使用的外部服务造成的) 有两种类型的代理访问数据库-多个读代理,只有一个写代理(所以,永远不会有多个并发写) 交易期间:Postgresql 用于长时间运行的事务的数据库,具有大量更新,postgresql,transactions,isolation-level,mvcc,Postgresql,Transactions,Isolation Level,Mvcc,我构建了一个用于数据提取和转换的工具。典型用例-以事务方式处理大量数据 数字是-大约10秒-5分钟的持续时间,200-10000行更新(持续时间长不是由数据库本身造成的,而是由事务期间使用的外部服务造成的) 有两种类型的代理访问数据库-多个读代理,只有一个写代理(所以,永远不会有多个并发写) 交易期间: 读取代理应该能够读取数据库并在当前状态下查看它 写代理应该能够读取数据库(它在事务期间执行读写操作),并在新(尚未提交)状态下查看它 对于这种类型的负载,PostgreSQL是一个不错的选择
- 读取代理应该能够读取数据库并在当前状态下查看它
- 写代理应该能够读取数据库(它在事务期间执行读写操作),并在新(尚未提交)状态下查看它
所以,试一试,它对你的负载应该很有用。看看这个链接
基本上,您的交易量在软件方面可能存在一些技术限制。您的预期行大小是多少?我的经验是,对于中等大小的行(比如100字节),将在@wildplasser中更新10K记录,延迟不是由数据库本身造成的,而是由事务期间使用的外部服务造成的。你是说你也有读卡器?你估计的读写比率是多少?阅读的“足迹”(就所需页面而言)是什么?它们是否会在行(可能是锁)或页面方面与写入重叠?注:我刚看到你的更新。我相信R与W的比率大约是100/1。是的,R和W可能重叠(但MVCC应该有帮助),而且只有顺序写入,所以应该没有锁。我的估计是,如果工作集适合核心,那么它肯定是可行的;也许你可以做个测试?顺便说一句:请等待其他人的反应;我不是并发专家。哇,一年多后我接受了答案?谢谢您能否从高层角度分享您在PostgreSQL方面的经验?