SQL Server:基本设计问题?

时间:2011-11-01 15:15:28

标签: sql-server

我工作的公司董事在一次聚会上遇到了一家软件公司的另一位董事(这不是开玩笑!)。

第二位导演告诉我的导演,

'他花了一大笔钱放弃了SQL Server'因为'如果有几个人以不同的方式查询同一个表,数据库就会被锁定'。此外,这是SQL Server的一个“已知基本设计问题,其中每个查询争用最大资源,直到SQL Server在对同一个表进行大约7次并发查询后锁定”。

现在我对SQL Server锁定和IO有所了解,这对我来说是个新闻。 AFAIK SQL Server架构中没有任何固有导致此类问题。 SQL Server在TPC基准测试中表现良好,尤其是价格/性能。

感到尴尬的问,但我必须确定 - 他说的话有什么真相吗?

编辑 - 在阅读了一些评论后,我认为我明确表示我同意它可以在Sql Server中编写性能不佳的sql,就像在任何数据库平台上一样。询问是否有任何固有的体系结构在某些高并发条件下阻止它,而不管你的db / sql的制作程度如何?

3 个答案:

答案 0 :(得分:6)

这绝对没有道理,其他导演显然在他的IT部门中有以下两种情况之一,可以在非常许多公司找到:

  1. 没有DBA,或者(白痴)导演是DBA,或者没有DBA资格的人被迫担任DBA
  2. 一位不称职的DBA或不称职的IT员工,他们创建了数据库模式,并在给定这些模式的情况下以无能的方式查询数据库。另外,请参阅下面的TomTom对此答案的评论,该评论进一步扩展和阐述了该项目。
  3. 此外,在得出任何无法做某事的结论之前,请先了解SQL Server的市场主导地位。

    这并不是说SQL Server是完美的并且没有“基本设计问题”,例如在使用标识列时可能遇到的令人难以置信的错误,实际上每个人都为代理键做了这些:

    SCOPE_IDENTITY() sometimes returns incorrect value

答案 1 :(得分:2)

我知道你可能会意外地锁定SQL或者编写一些写得不好的查询,但我不认为这是SQL Server本身的设计缺陷。

我曾经在将要部署在英国各地的软件上工作,80多家商店都在查询相同的表格,从未遇到过任何问题。我们公司还生产了一个基于SQL数据库的大型软件,这个数据库有100个商店,其中有10到100个应用程序都查询/更新相同的表,我们遇到了一些死锁问题,但它们都已解决。

拥有合适的人员和知识SQL是一个了不起的工具,当你得到任何老程序员并让他们成为DBA时,你会遇到我怀疑在这里发生的问题。

当我听到这样的故事时,除非有人告诉我正在开发一些巨大的企业级应用程序,我总是认为如果大企业可以设法使用这个应用程序而不会给他们带来巨大的问题,那么我说我不能在我的小应用程序中使用SQL只是我做错了。

知道他们迁移到了什么而不是SQL会很有趣。

答案 2 :(得分:1)

写得不好的查询可能导致他正在谈论的行为。这不是放弃SQL Server的理由,但这是寻找更好的开发人员/ DBA的理由。

任何技术在使用不当时都会出现问题。有许多基于SQL Server构建的大型项目(包括StackOverflow)。如果他描述的是SQL Server而不是开发人员的结果,那么SQL Server很可能甚至不会出现......