【问题标题】:Sql server vs MS Access performanceSql 服务器与 MS Access 性能
【发布时间】:2011-04-13 01:30:31
【问题描述】:

我有一个使用 Sql Server 2005 作为后端的现有应用程序。它包含大量记录,我需要加入包含 50K-70K 的表。客户端m/c是较低的硬件。

那么,我可以通过使用 MS Access 作为后端来提高其性能吗?我还需要对 Access 文件进行搜索操作。那么,哪个性能更好?

查询 Access 比查询低硬件的 SQL 更好?

【问题讨论】:

  • 您需要提供更多信息。硬件规格将是一个开始

标签: performance ms-access sql-server-2005 oledb


【解决方案1】:

SQL Server 将始终为您提供更好的性能,因为查询是在服务器上执行的。后端访问没有帮助,因为您的客户端应用程序需要从表中提取所有数据,然后在本地执行连接。

【讨论】:

  • 对于高端系统,这当然是一个安全的假设。我当然见过一些设置,其中仅 SQL Server 的开销就足以使系统负担沉重,因此使用 MS Access 或 XML 之类的东西和 Jet 数据库驱动程序之类的东西会更有效。低端系统似乎是当前问题的焦点。
  • 我认为这个答案对于 Access 客户端和 SQL Server 在同一工作站上运行的单台机器是不正确的。如果您将 SQL Server 与将 Access 数据表存储在文件服务器上进行比较,那么如果 SQL Server 位于工作站连接的专用服务器上,它通常会(但并非总是)更快。换句话说,网络对 Jet/ACE 后端的惩罚比对 SQL Server 的惩罚要大得多。两者都在同一台机器上,我希望 SQL Server 在很多情况下会更慢(或不会更快)。
【解决方案2】:

因为 SQL Server 确实作为一个单独的进程运行、缓存结果、在不被查询时使用 ram 和处理能力等,如果另一台计算机的 RAM 非常少或处理器非常慢(或者更重要的是单个-core 处理器),我可以看到 SQL Server 实际上比 MS Access 使用慢的情况。

如果没有关于你的硬件设置的信息,你的应用程序大约有多少百分比依赖于查询数据库等等,我不确定这个问题是否可以很容易地回答。

MS SQL Server 2005 Express 至少需要 512 MB RAM(请参阅http://www.microsoft.com/sqlserver/2005/en/us/system-requirements.aspx),因此如果您的低端硬件没有至少 512MB,我肯定会选择 MS Access 而不是 SQL Server。

我还应该补充一点,您可能需要考虑 SQLite(请参阅http://www.sqlite.org/),它的开销应该比 MS SQL Server 少得多。我不确定它会如何与 MS Access 对 Jet 之类的使用相提并论。我的直觉是它会以更少的开销表现更好。

【讨论】:

  • 我已经检查了 Sql 和 Access 的性能,没有各种记录。通常 ms 访问第一次运行速度比 sql 快。然后在第二次运行相同的搜索条件 sql 运行得更快并且每次运行查询时访问都需要相同的时间。
  • 同意。当没有网络、没有服务器和单个用户时,Access (JET) 通常比 sql server 快得多。 SQL 服务器通过一个涉及事务和基于套接字的(网络)连接的巨大额外层强制您完成所有工作。 Jet 只是从磁盘上直接删除数据,在从磁盘读取数据之间没有庞大的框架。 SQL server 或 Access (JET) 不会改变从磁盘驱动器读取文件的速度。因此,JET 的开销明显低于 sql server,而且我的测试表明,在不涉及网络的情况下,JET 通常会快 50%。
  • 没错,我也有同样的环境。我只需要根据 sql 数据库 /insert 记录创建访问数据库并阅读它们。我已经在上面创建了索引,并且比 SQL Server 快了 50% 以上。没有索引它不会给出这样的性能。并感谢您的想法。
【解决方案3】:

70,000 条记录对于 SQL 服务器(或访问权限)来说确实不是那么大。我会回应已经说过的话,并说所有事情都是平等的 SQL Server 将执行 Access。

我会回到您的查询并查看执行计划,看看为什么它如此缓慢,可能缺少索引、过时的统计信息或其他一大堆原因可以解释您当前的性能问题。

SQL Server 还为您提供了使用物化视图来帮助提高性能的选项。代价是插入/更新/删除性能较慢,但如果您读的比写的多,这可能是值得的。

【讨论】:

    【解决方案4】:

    我认为 Albert Kallal 的评论是正确的,事实是,如果您在单个工作站上运行单用户应用程序(Access 客户端与 SQL Server 与客户端在同一工作站上运行),则通常会如果该工作站上的设置是访问客户端到同一台机器上的 Jet/ACE 后端,则速度会慢一些。当客户端和 SQL Server 之间没有网络时,SQL Server 会增加很多开销。

    当涉及到网络时,性能等式就会翻转,即使对于单用户应用也是如此。如果 Access 客户端在工作站上运行,而 SQL Server 在网络连接另一端的服务器上(即使是快速连接),它可能会比将数据存储在 Jet/ACE 文件中的速度更快。文件服务器。

    但在我看来,这不是给定的。这完全取决于应用程序的工程设计和架构的卓越性。

    【讨论】:

      【解决方案5】:

      SQL Server 有更好的索引选项...过滤索引、包含列等 Access 查询比正确索引的 SQL Server 数据库查询更快的可能性为零。

      【讨论】:

      • 我不知道。只有 70k 记录,如果可能的服务器对于 SQL Server 的能力不足,那么在 Access 中可能会在某些查询中可能获得更好的性能。然而,更可能的问题肯定是数据库/索引配置。
      • 零机会。任何不同意的人都不够了解 SQL Server 索引。
      【解决方案6】:

      我尝试过使用 SQL Server Express 2005 VS MS Access 2010,很多人说 SQL Server 会比 MS Access 运行得更快(我也是这么认为的)。但随后发生的事情让我感到惊讶,使用 MS Access 运行查询比 SQL Server 更快,结果显着(具有相同的数据和结构,因为我之前从 Access 转换为 SQL Server)。

      但我还不知道它在插入、更新和删除等其他进程中的性能。

      【讨论】:

        【解决方案7】:

        本地 SQL Server Express 2014 1 分钟约 2200 条记录(2200x 连接数据库并检索 1 条记录)

        外部 SQL Server Express 2014(不同 IP) 1 分钟约 2200 条记录(2200x 连接数据库并检索 1 条记录)

        外部 SQL Server 2000(旧服务器) 1 分钟约 10000 条记录(10000x 连接到数据库并检索 1 条记录)

        语言环境访问数据库 1 分钟约 55000 条记录(55000x 连接数据库并检索 1 条记录)

        我们也很惊讶。

        【讨论】:

          【解决方案8】:

          我会直接回答这个问题,但首先了解一些关于 Access 和 SQL 的知识很重要。

          一般来说,我发现如果所有机器都有合理的硬件,那么一个包含多达 10K 记录的小型数据库在 Access 或 SQL 上的性能都一样好。访问的好处是对少数用户(最多 4 个)的简单性,但也有 2GB 的大小限制。因此,您需要注意数据库大小保持在此限制以下。一些数据库一开始很小,但随着时间的推移会有增长的方式。在规划程序和/或数据库的未来时要记住的事情。如果您可能接近 2GB 的限制,一种选择是使用 Microsoft SQL Server 2014 Express 版本,它的数据库大小限制为 10GB。 SQL Express 是完整的 SQL,但有大小限制。完整的 SQL Server 2014 的最大数据库大小为 524PB (524,000,000GB)。所以公平地说它没有实际限制。

          如果您的数据库有超过 10K 的记录,特别是对于 100K 或更多记录的大型数据库,SQL 可以显示出显着的性能提升。

          MS Access 的一些性能可以通过使用“传递查询”来实现,任何使用 SQL 优化查询的程序都可以。

          为什么?答案来自于技术如何在幕后工作。使用 Access,如果它不使用“通过查询”,它将读取整个表,找到它需要的记录,然后显示结果。对于使用 SQL 优化查询的程序,SQL 引擎以非常有效的方式只返回结果。

          归根结底,如果您有一个最多可供 4 人使用的小型(

          专门针对有关 50-70K 记录数据库的问题。我认为如果您拥有合理的硬件,通常 SQL 会执行得更好,如果您有独特的情况(例如 SQL 服务器上的硬件较低),迁移到 Access 可能会看到一些改进。

          【讨论】:

            【解决方案9】:

            我对这个话题的看法是,人们应该从皮卡车和 18 轮车的角度来考虑有效载荷。更好/更差/更快/更慢有点错过了重点。这是为有效载荷选择合适的车辆的问题。

            当今的 PC 可以轻松处理 7 万条记录。因此,最好还是坚持使用皮卡车,除非组织已经安装了 SQL Server 技能集,否则没有理由将它用于只有 70k 记录的本地 Windows 应用程序。显然,如果它是一个需要后端数据库技术的网络/移动应用程序,那么 Access 不是一个候选者。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多