首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以在DB /表级别对所有命中数据库/TBL的查询不应用锁?

是否可以在DB /表级别对所有命中数据库/TBL的查询不应用锁?
EN

Stack Overflow用户
提问于 2016-07-18 13:52:32
回答 3查看 171关注 0票数 0

我甚至不确定这个问题是否正确。但我会解释我的情况,很可能会得到像你这样的专家的回答。

我们已经安装了primes MS Dynamic。我们正在观察非常缓慢的表演。我们正在查看应用程序日志服务器。我们注意到每秒4-5条关于“查询执行时间超过10.秒阈值”的警告消息,

下面是一个错误和相关查询的示例。查询执行时间为27.7秒,超过了10秒的阈值。线程: 109;数据库: Main_MSCRM;

代码语言:javascript
运行
复制
select 
top 5001 "systemuser0".QueueId as "queueid"
, "systemuser0".CreatedBy as "createdby"
, "systemuser0".Address1_Latitude as "address1_latitude"
, "systemuser0".Address2_StateOrProvince as "address2_stateorprovince"
, "systemuser0".Address1_County as "address1_county"
, "systemuser0".Address2_Country as "address2_country"
, "systemuser0".Address2_PostOfficeBox as "address2_postofficebox"
, "systemuser0".PreferredPhoneCode as "preferredphonecode"
, "systemuser0".new_RegistrationNumer as "new_registrationnumer"
, "systemuser0".YammerUserId as "yammeruserid"
, "systemuser0".Title as "title"
, "systemuser0".SetupUser as "setupuser"
, "systemuser0".FirstName as "firstname"
, "systemuser0".EmployeeId as "employeeid"
, "systemuser0".Address1_Line2 as "address1_line2"
, "systemuser0".Address1_City as "address1_city"
, "systemuser0".YomiFirstName as "yomifirstname"
, "systemuser0".ExchangeRate as "exchangerate"
, "systemuser0".Address1_ShippingMethodCode as "address1_shippingmethodcode"
, "systemuser0".YomiMiddleName as "yomimiddlename"
, "systemuser0".Address2_Line2 as "address2_line2"
, "systemuser0".DefaultFiltersPopulated as "defaultfilterspopulated"
, "systemuser0".ModifiedOnBehalfBy as "modifiedonbehalfby"
, "systemuser0".Address2_Line3 as "address2_line3"
, "systemuser0".DefaultMailboxName as "defaultmailboxname" 
from
 SystemUser as "systemuser0" 
where
 (("systemuser0".IsDisabled = 0)) order by
 "systemuser0".SystemUserId asc

现在,当我在SQL级别上运行这个查询时,结果在不到2秒内就会出现。所以我的困惑是为什么它需要更多的时间在客户关系管理前端方面?除了,它需要的时间,在客户关系管理前端的数据渲染,我想不出任何其他事情。

我的第二个困惑是,当我运行这个查询和其他没有锁定查询本身的警告消息时,它比2秒都快得多。

我正在考虑的是编写在DB级别上应用的逻辑,而在默认情况下,数据库中的任何查询都将没有锁。

有可能吗?请告诉我如何处理这些警告信息。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2016-07-18 13:59:40

通过运行查询at SQL level,我不知道您是否是指直接从Server控制台运行它,但我想我可以提供一些关于为什么在运行on CRM Front end side时需要更长时间的见解。当直接从Server运行查询时,大多数情况下,您已经具有到数据库的活动连接。这意味着您不必等待建立连接,两个大的延迟将等待查询的执行,并等待接收结果集。

但是,当您从CRM前端运行查询时,您可能必须在开始查询之前建立一个连接。建立连接的时间可能比您想象的要长。

因此,运行的一个好的测试是:从CRM前端连续执行两次查询,并对每个查询的运行时间进行计时。如果第二个查询运行得快得多,您可能会发现与Server建立连接的成本。

票数 0
EN

Stack Overflow用户

发布于 2016-07-18 14:41:01

也许这是我们通常在ado.net中命令超时时遇到的同样著名的问题,但在Management中工作得很好。我认为有几个解决方案,但是由于您没有对查询的控制权,所以在所讨论的DB上尝试以下两个命令

代码语言:javascript
运行
复制
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
票数 0
EN

Stack Overflow用户

发布于 2016-07-18 15:58:37

我强烈建议运行一个查询执行计划,这样它就可以告诉您是否可以通过添加索引来改进任何查询。

另外,你为什么要立刻调出5k的记录?这是自定义代码生成的吗?CRM视图要少得多,即50-200条记录。通过同时提取这么多记录,您增加了拥有数据库锁的可能性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38438532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档