我们在 SQL Server 中遇到了一个有趣的错误,我想向您描述一下。我希望找出它是否真的是一个错误,如果是,我可以在哪里找到有关它的更多信息。如果它不是一个错误,我希望有人可以向我解释为什么它不是,以及我们在不知不觉中做错了什么。我似乎找不到类似问题的描述,我不确定我们是否应该向 Microsoft 报告错误或其他内容。我将首先简要描述问题,然后提供详细信息。
简而言之,问题似乎是当被连接的表的某些(大?)部分(抱歉,这里不能更具体地用数字表示)为空时,SQL Server 会阻塞包含许多连接的语句。扼杀,我的意思是它在查询中搅动和搅动,永远不会完成,这导致 SQL Server 完全停止响应。实际上,运行一次查询会导致 CPU 跳到 25% 并保持在那里。再次尝试,CPU 跳到 50%。有时,CPU 会达到 75% 或 100%,但在 50% 标记处,您甚至无法再登录到数据库服务器。
问题发生在我们使用 Hibernate(通过 Coldfusion ORM)并且有一个实体(文档)的应用程序中,该实体(文档)被细分为许多不同类型的文档。当我们在基类 Document 上运行查询(例如“FROM Document WHERE Locked=1”)时,有问题的 SQL 查询是由 Hibernate 生成的。这会导致一个很长的 SQL 查询,它将所有子类表连接在一起(下面的示例),有时会杀死服务器。
我在测试时发现了一些有趣的事情:
因此,基于上述内容,我推测 SQL Server 中存在一个错误(或一个我不知道的已知事实),其中连接导致过多的空值会导致问题。我认为这可能是一个错误而不是已知的限制,因为它不会导致错误消息(例如,如果您尝试在 IN 子句中查询超过 2100 个项目,您会得到),而是挂起服务器。服务器进入la-la土地几乎就像连接导致cartesion产品一样,但事实恰恰相反-我没有数据,而不是大量数据。
有没有其他人遇到过这样的问题?是否有一些已知的 SQL 服务器限制,我正在摩擦?我很难用谷歌搜索这个问题,因为它很难定义。我应该为此向 Microsoft 提交错误吗?
任何见解都非常感谢。如果需要我提供更多信息,请告诉我。
谢谢。
示例查询如下(为简洁起见,我删除了大部分选定的列):
select
top 1 document0_.ID as ID715_,
document0_.CreatedOn as CreatedOn715_,
document0_.UpdatedOn as UpdatedOn715_, …Run Code Online (Sandbox Code Playgroud) 设置几个新的Coldfusion 2018服务器,并将首次使用群集,并遇到一些问题.
我遇到会话复制问题.基本上,会话变量似乎在群集中的节点之间复制,但在一段时间后随机被杀死.
一点设置信息:
这是我做过/经历过的事情:
我无法解释为什么会这样.我们考虑过使用Redis作为会话商店,看看它是否有用,但坦率地说,我们的团队没有使用它的经验,在Windows中工作是笨重的,如果我们可以提供帮助,我们真的不希望在我们的基础设施中有任何移动的部分它.
任何关于正在发生的事情的见解以及关于如何在幕后进行对等的建议以及查看会话复制的内容都将非常感激.
谢谢
添加一些代码和截图.屏幕截图显示了每次刷新页面后的会话状态以及当前为该页面提供服务的实例.最后两个图像代表刷新11和13 - 会话变量在11中丢失,我转到13,这样我们就可以看到变量在另一个实例上也丢失了.还有一些集群/会话设置的图片.
以下是简单的测试脚本.第一行在第一次运行时未注释,以创建会话变量,并为每次后续运行注释掉.
<!--- <cfset Session.svar="cake!"> --->
<cfdump var="#Session#" />
<cfscript>
hostaddress = createObject("java", "java.net.InetAddress").localhost.getHostAddress();
</cfscript>
<cfoutput>
<h3>
Instance: #createobject("component","CFIDE.adminapi.runtime").getinstancename()#
</h3>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我们遇到ColdFusion 2018和/或Hibernate 5.2的问题.
我们有一系列模型可以在没有ColdFusion 2016问题的情况下生成DDL,但是在ColdFusion 2018中失败了.我们不确定哪个(ColdFusion或Hibernate)对我们看到的问题负最终责任.
有几个问题:
property name="CompanyName" fieldtype="column" ormtype="string" default="Acme Inc." dbdefault="Acme Inc.";CompanyName varchar(255) default Acme Inc.缺少引号)HIBERNATE DEBUG - alter table my_db.dbo.Group add DeletedByID int
HIBERNATE DEBUG - alter table my_db.dbo.User add DeletedByID int
HIBERNATE DEBUG - alter table [Group] add constraint FKfpa9ddoqu39xeskmmdg2pe3tq foreign key (DeletedByID) references [User]
HIBERNATE DEBUG - alter table [User] add constraint FKj4hy4k4el0vvds8s8itfo2b04 foreign key (DeletedByID) references [User]我知道有人会权衡并说我们的表名中不应该有点,我们不应该为关键字命名.注意,但最重要的是我们这样做,已经多年没有问题,并且在正确处理时它们是有效的名称. …