【问题标题】:mysql Number of SQL Queriesmysql SQL 查询数
【发布时间】:2010-07-10 21:29:33
【问题描述】:

我刚刚将 Access Db 转换为 mysql(使用 Access 作为前端,使用 mysql 作为后端)
它是一个简单的 4 表数据库
我有一个主表和 3 个链接表 因此,Access 表单显示的数据来自:

  • 主表(主窗体)
    • Details1 表(子表单)
    • Details2 表(子表单)
    • Details3 表(子窗体)

主表始终为一行,但所有链接表(“明细”表)可以有任意数量的记录,通常每个主记录在每个明细表中大约有 10-30 行。

一切运行良好,但是在检查 Mysql Administrator Health>Connection Health>Number of SQL Queries 时,每次我在主记录页面之间移动时,查询数都会跳到 10(查询)。

我在自己的笔记本电脑上运行它,我担心当我将 100 多个用户放在工作服务器上同时工作时,这会成为一个问题(性能)。

谁能告知 Mysql Admin 报告的如此高的“查询数量”是否会成为问题?
出于性能目的,什么数字被认为是“危险的”?
这个想法是要有一个快速运行的系统,所以我想避免对数据库进行过多的查询。
我也不明白为什么(示例)当总共只有 4 个表时它会显示 7 个查询......每个表只显示一行

任何想法/cmets 将不胜感激
是否可以在 Access 前端进行一些更改以降低查询数量?

非常感谢

【问题讨论】:

  • 我们需要查看执行查询的代码以消除/识别问题。您提供给我们的信息只是一个开始。
  • 现阶段没有代码。这只是一个初步设计,看看它的表现如何。我只是简单地在 Access 中创建了 4 个表,然后是一个 Mainform 和 3 个子窗体,使用 QuoteId 字段作为链接字段。一旦它工作,我只是在 mysql 中创建表并将 mysql 表链接到 Access...ç

标签: mysql


【解决方案1】:

这 10 个查询可能不需要很长时间,而且很可能是连续的。我怀疑 100 个用户会有问题,因为他们不会同时运行查询。即使这样,mysql 也可以处理相当大的负载。

我不确定 Access 内部发生了什么。 “查询”几乎可以是任何东西(即元数据),而不仅仅是从表中查询记录。例如,获取表中的记录总数以显示类似“显示 23 of 1,000”的内容。如果访问对每个表都执行此操作,那么就需要额外的 4 个查询,只剩下 3 个来获取要显示的实际数据。

【讨论】:

  • 没错,这 10 多个查询并不需要很长时间,但是我担心它运行得很快,因为我在本地运行整个事情,只有一个用户。您可能对 Access 做一些事情来显示“显示 1000 个中的 23 个”是正确的,也许这会增加更多查询......如果有人知道如何摆脱这些“不必要的”额外查询,那就太好了
  • 如果你害怕,你必须测试一下。这里没有人可以给出答案,因为我们不知道您拥有的数据、您拥有的服务器、您如何调整您的 mysql 实例、查询运行等。请务必在已完成的查询上运行 EXPLAIN (您可以在 mysql 服务器上打开查询日志记录),因此您可以根据运行的查询将适当的索引添加到表中。通过适当的索引,mysql 可以处理大量负载。
  • 好的,我将做一些繁重的测试,无需任何进一步的开发。我不想浪费几个月的时间来完成完整的应用程序,却发现它只能同时处理几个用户......感谢您的意见
  • mysql 可以轻松处理一千个连接并同时运行几百个查询。在 mysql 中打开查询缓存,只要数据不发生变化,相同的查询将很快并且几乎免费。
【解决方案2】:

很难确定,因为它取决于很多因素,例如服务器的内存、CPU 和查询的复杂性,但是...... 假设子表单的查询直接链接到主表(带有索引 id 字段)并且不需要 join 与其他表(因为您只有 4 个表),我认为您可以毫无问题地运行因为查询的数量不是太多。

例如,几年前我有一台旧机器(Athlon XP1600,只有 512MB 或 1GGB RAM)运行 mysql 并为 20 个用户提供文件。大多数查询都是小型存储过程,主要使用 20 个表,但返回很多行(通常使用最多的查询大约为 2000 行)。一切都很快。这个旧系统在 2 个月内运行了 1400 万次查询(平均每分钟 > 700 次),所以我认为你会没事的。

无论如何,如果您有办法进行部分测试,那将是最佳选择。例如,您可以使用一个小脚本在多台机器上循环查询数据库。

【讨论】:

  • 感谢您的 cmets 以您自己的经验。我确实有一台比你提到的旧机器好得多的机器,所以如果你每分钟有超过 700 个查询(我认为在我的情况下它会比这高一点,但使用更好的机器),我只能假设它应该没问题。尽管如此,我还是会用一些脚本在几台机器上运行测试,看看它是如何执行的。问题是我不想浪费大量时间现在开发应用程序,只是发现它一次只能处理几个用户,因此我的问题。
  • 是的,今天的机器速度要快得多,我几乎可以肯定你不会遇到问题。无论如何,如果您从 Access 转换,结果将比我使用 Access (2003) 的经验快很多,当您添加超过 3 或 4 个查询数据库的用户时,其性能会迅速下降。 mysql不会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 2010-11-27
  • 2014-03-21
  • 1970-01-01
  • 2014-03-09
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多