不皇宫SQL提供更快的响应时间比使用ado.net 和oledb?
-
09-06-2019 - |
题
皇宫简化数据库编程毫无疑问的,但它有一个缺点吗?内联SQL需要一个与数据库以某种方式打开了数据库,以注射。内联SQL还必须语法检查,有计划建造,然后执行,这需要宝贵的循环。存储程序也已有一个坚实的标准,在很大的数据库应用程序。许多编程人员,我知道利用一个数据层,简化了发展,但是,不到该程度的皇宫。是时候放弃对SP是去皇宫?
解决方案
皇宫SQL实际上提出了一些令人震惊的表现问题的数据库。基本上,它创建了多个执行计划基础上的长度参数。我发布的关于这一同时后在我的博客 皇宫SQL可能会导致性能的问题.
现在,就是说,皇宫并没有一个地方吗?几乎没有。皇宫肯定有一个地方的发展工具箱,就像存储程序。最终,你想使用的储存程序时的表现是绝对必要的,使用一个奥姆工具在任何其他情况。
尽内联SQL去,有办法执行联SQL因此该计划仅仅是建成一次,并且永远不会重新编译。大多数中应该照顾的这一方面的绩效优化,以及和使用这些方法通常是最安全的方式执行你的SQL因为它迫使你使用的参数化的询问。
最喜欢的数据库解决方案,正确的答案取决于该问题你想到解决。如果你有利于发展的速度超过数据库/应用程序的性能,则可使用皇宫或另一DAL/奥姆工具是最好的路要走。如果你有利于绩效的便于发展,然后使用存储的过程和纯净的数据集将是你最好的选择。LLBLGen甚至提供了一个皇宫来LLBLGen层,所以你可以使用皇宫查询LLBLGen的目的和有LLBLGen实际上把手建立查询和避免一些挫折的皇宫.
其他提示
你的基本前提是有缺陷的..
内联SQL需要一个与数据库以某种方式打开了数据库,以注射。
没有它没有。硬盘编码用户输入的价值观成SQL statement不,但你可以这样做,与存储程序。
参数化您的查询,防止注射攻击,但联SQL可参数化只是作为容易,因为储存的程序。
内联SQL还必须语法检查,有计划建造,然后执行。
所有Sql(SPs和内联)必须是法检查,并有计划建立在他们的第一个电话。此后,的确切文字的请求和执行计划是缓存。如果另一个请求完全相同的文本(不计算参数)接收、缓存的执行计划使用。
所以,如果你硬代码价值观纳入联SQL,该文本不会相匹配,以及它将必须重新解析的查询。然而,如果使用的参数,查询文本将符合,并且您将得到一个高速缓冲击。在这种情况下,它不会问题,如果查询在内联SQL或SP。
换句话说,唯一的问题与联SQL是,它很容易做到的东西缓慢和不安全。但是,使联SQL快速和安全是没有更多的工作,使用一个SP。
这给我们带来了皇宫,这总是使用的参数,甚至如果你硬代码的价值进入皇宫的声明,使"快速和安全"的内联SQL微不足道的。
皇宫,也有优势SPs的所有代码在一个地方,而不是分散在两个不同的机器。
如果你有兴趣制定基准,波多黎各Mariani有一个 优良的5部分组成的研究 这涵盖了在质量和数量上的差异。
他可以MS的家伙,但他的被称为一个绩效母-他基准是透彻和深思熟虑。
这是一个绩效运行,通过马克西米利安贝勒。据他说,皇宫是很慢得多。读他的全面的研究
只是想改变一个列名字-现在改变(n)SPs和(x)景。
做的一切,是昂贵的数据库(如检索、分拣等)和你就不会注意到一个问题。
此外,如果你想要显示大的电网,而不寻呼...然后用一个数据集是一个速度更快。
计算器也使用linq2sql-你看到一个问题:)?
使用一个奥姆-这是去上大多数应用程序。
PS:此外,关于微型基准的-像是..让我们选择10.000行与奥姆-不要这样做。这就是为什么你不用一个奥姆.如果你要选择10.000行使用ADO.
这取决于你在做什么。皇宫会的效率较低的实际数据组的操纵不是一个真正的数据库。但是你会省很多不具有与数据库连接在一个网络。
如果你的数据库是在同一台机器上或形式上是'良好的连接',你可能更好地使用它。
但如果你要回大量结果从一个远程db这可能意味着重要的传送时间,或者如果它是一个非常短的查询不会证明的开销,皇宫会有可能更好。
因为结构的皇宫到SQL,没有任何可能的方法可以 速度更快 比使用原始SQL,无论是你自己的以及形成查询或作为一个存储的过程。什么皇宫买你是不是速度,但类型的安全和组织;在最短的好处中一般授予你。
皇宫SQL是不是速度,这是关于建立一个更易于维护的软件系统。这是关于所有东西的专用软件工程师和建筑师的关心,这样的东西松散耦合和分层
这并不是说,你不能建立一些很不可维护的代码皇宫--没有人让你搬起石头砸自己的脚但是你-但是做得好,皇宫可以极大地帮助。我不是说皇宫是一种"银弹",但是。它有一个主的问题,使它难以用在很多企业的情况--这就是为什么MS提供的实体的框架(ADO.NET 3.0).当然,即使是不完美鉴于最近的EF表决的没有信心。
是皇宫SQL或甚至EF比原SQL?我会说一个巨大的地狱啊。还有没有其他的解决方案的可能工作得更好?也许。