我需要计算出使用锁更新表的最大吞吐量,因为当前的解决方案就是这样设计的。
在表或行级别启用锁定的情况下,SQL server可以在内部排队执行多少次同步更新?
MySQL上也有一个类似的问题:https://stackoverflow.com/questions/72119974/is-there-a-limit-to-the-number-of-transactions-that-can-be-queued-up-for-a-row-l。答案是,限制(对于MySQL)基本上是与MySQL服务器同时连接的最大数量。
对于Server来说,这是一样的吗?这个限制可以增加吗?
发布于 2023-04-16 20:46:33
你不会达到任何这样的极限。不管怎么说,这都无关紧要。如果每个更新都需要相同的独占锁,那么吞吐量取决于持有锁的每个事务的持续时间。
如果每个事务持续5ms,则吞吐量限制为每秒200次更新。
如果每个事务持续100 is,则吞吐量限制为10次更新/秒。
等
注意,这里相关的是包含更新的事务的持续时间,而不是更新的持续时间。
发布于 2023-04-13 13:34:40
Server最大连接为32768。由于存在内部进程,您可以拥有几乎超过32500个连接/会话/重新请求,当相同的数据必须更新时,它们都在队列中等待相同的进程.
此外,锁定没有限制,因为限制是锁的2147483647,而Server会进行锁升级(将页类型锁转换为分区或表锁)
这是MS SQL Server的常见行为,因为默认情况下,它在悲观的锁模型中工作。
自2005年版本以来,SQL Server是唯一能够同时使用lockink模型的RDBMS :悲观和乐观的.你也可以把它们混合..。好了!
https://dba.stackexchange.com/questions/325948
复制相似问题