gpt4 book ai didi

mysql - mysql执行时间差异很大: minimum 2 secs - maximum 120 secs

转载 作者:行者123 更新时间:2023-11-30 00:17:30 25 4
gpt4 key购买 nike

情况:我使用(php)cronjob 来保持我的数据库最新。受影响的表包含大约 40,000 条记录。基本上,cronjob 会删除所有条目并随后插入它们(具有不同的 ofc 值)。我必须这样做,因为它们真的都在改变,因为它们都是相互关联的。

问题:事实上,一切都很好。 cronjob 在 1.5 到 2 秒内完成他的工作(同样,对于大约 40k 插入 - 我认为这已经足够了)。大多数情况下..但有时,查询需要长达 60、90 甚至 120 秒!

我为我的数据库建立了索引。我认为查询效果很好,因为它只需要 2 秒的时间。我通过 mysql_close() 关闭连接;

你有什么想法吗?如果您需要更多信息,请告诉我。提前致谢。

编辑:嗯,看起来插入没有问题。这是一个复杂的 SELECT 查询,造成了一些麻烦。谢谢所有回答的人!

最佳答案

[抱歉,显然我还没有掌握格式]

根据我的阅读,我可以得出结论,您的 cronjob 正在使用批量插入语句。如果您知道 cronjob 何时工作,我建议您启动 Database Engine Tuning Advisor session 并查看 cronjob 执行其操作时正在运行的其他进程。批量插入对字段数和一次行数有一些限制。你可以阅读这个msdn http://technet.microsoft.com/en-us/library/ms188365.aspx的字幕

Performance Considerations

If the number of pages to be flushed in a single batch exceeds an internal threshold, a full scan of the buffer pool might occur to identify which pages to flush when the batch commits. This full scan can hurt bulk-import performance. A likely case of exceeding the internal threshold occurs when a large buffer pool is combined with a slow I/O subsystem. To avoid buffer overflows on large machines, either do not use the TABLOCK hint (which will remove the bulk optimizations) or use a smaller batch size (which preserves the bulk optimizations). Because computers vary, we recommend that you test various batch sizes with your data load to find out what works best for you.

关于mysql - mysql执行时间差异很大: minimum 2 secs - maximum 120 secs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com