我们有许多不同的服务器来管理这些会话的tcp连接会话和聚合统计信息。每隔一段时间,它会将这些会话报告给集中式系统,以便存储在数据库中(供其他系统查询和报告)。
报告会话统计信息是次要问题,这意味着如果无法访问我们的集中式系统,我们的服务器无法使用新会话。因此,服务器本身需要生成全局唯一的会话ID,以便可以跨服务器日志和集中式系统跟踪会话。
现在我正在使用Guid.NewGuid()
生成这些会话ID。但是,由于其随机性,GUID会导致Sql Server中的索引中的页碎片。通常情况下,您可以使用NewSequentialId()
作为默认值来控制SQL生成,允许SQL以更友好的方式生成ID。
我可以通过调用Sql Server执行的相同win32调用(UuidCreateSequential)在机器上生成顺序GUID,但显然不是全局顺序的,因为每台机器都生成自己的id。
在这种情况下生成顺序ID作为数据库优化是否仍然值得,或者碎片的可能性是否足够高以至于它不会产生影响?