【发布时间】:2015-12-04 10:44:11
【问题描述】:
我使用的平台具有使用 SQL 服务器表作为队列的消息传递系统。
该系统基于此:Using Tables as queues
ATM 我们面临一些可扩展性问题,因为这种分布式架构主要基于 SQL 锁和磁盘操作,以保证数据的持久性/一致性。
为了解决基于磁盘的 I/O 瓶颈并改善糟糕的分配逻辑,我们正在考虑将基于磁盘的 SQL 表更改为 SQL 2014 和 2016 上可用的内存 SQL (Hekaton)。
我已经阅读了一些关于 Hekaton 的资料,但我仍然不确定这是否是最好的方法,或者是否可以将这些队列实现到内存中以及这是否是最好的方法。
大多数队列都在实现悲观并发,而 Hekaton 仅使用无锁系统乐观并发(基于多版本)。 “总是”(我知道这是一个坏词)是否有可能将悲观并发变为乐观并发?例如在上述队列中。
Hekaton 是否适用于许多插入/删除(入队/出队)、订单行(FIFO 队列)和大量表大小变化(服务器上的工作负载变化会增加/减少队列大小)?是否可以正确更新本机存储过程查询性能的统计信息?
我觉得本机编译的 SQL 存储过程会大大提高性能,但我不确定这种实现(相关的 FIFO 队列)是否适合在 Hekaton 上使用,因为我没有找到任何示例使用 Hekaton 的“内存队列”实现。
【问题讨论】:
标签: sql-server queue message-queue optimistic-concurrency memory-optimized-tables