mysql - 同一服务器上两个相同的数据库具有不同的运行时间

标签 mysql performance

我有两个相同的数据库,只是其中一个数据库有大约 500.000 个条目(分布在多个表中),而另一个数据库为空。

如果我在空数据库中运行程序,则执行大约需要 10 分钟,而在具有 500k 条目的数据库中,执行大约需要 40 分钟。我现在删除了一些条目(大约 250k 条目),它使执行速度加快了大约 10 分钟。奇怪的是,这些表没有被大量查询(只是一些非常简单的插入),所以我想知道这如何对执行产生如此大的影响。

此外,我执行的所有 SQL 语句(我运行了很多)都非常简单(没有复杂的连接,主要是插入),所以我想知道为什么一些具有 250k 条目的表会对性能产生如此大的影响。有什么想法可能是什么原因吗?

最佳答案

以下原因可能是原因,但出于实际原因,您应该查看并分析您的查询,

  1. 虽然您认为您正在进行简单的插入,但从数据库角度来看,这并不是一个简单的操作。 (对于您插入的每个条目,以下内容可能会更改和更新

    1. 索引
    2. 限制
    3. 数据库的完整性(PK-FK),有很多事情需要考虑。上述事情看起来很简单,但如果数量很大,则需要时间
  2. 检查查询量(如果执行的插入查询数量较多,则可能知道插入是独占操作,即它锁定表以进行更新,并且查询量较高,这意味着更多的锁定时间和等待时间。 ) 为了避免这种情况,您可能可以尝试链接或批量操作 Is bulk update faster than single update in db2?

  3. 数据分发也发挥着重要作用。如果您正在访问负载很重的表,那么从这些表中解析/访问/获取数据也将花费时间(这对于单个查询来说并不重要,但对于大量类似的查询来说确实很糟糕)。尝试通过调整查询来尽量减少这种情况。

关于mysql - 同一服务器上两个相同的数据库具有不同的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22297587/

相关文章:

Python;实现逐元素向量乘法的最有效方法

performance - Windows Mobile 6/6.5 性能监控

mysql - 如何使用 bash 脚本写入 mysql 表

mysql - 在左连接上别名列名

java - 确定点的象限

javascript - 什么更快?两次比较还是一次比较加一次逻辑检查?

c++ - 编译器能内联这个方法吗?

mysql 过程不返回任何行

mysql - 如何正确编写此 SQL 语句

mysql - 查询后替换内容