gpt4 book ai didi

mysql - 优化 MySQL 插入以处理数据流

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

我正在使用高速数据流并执行以下步骤将数据存储在 MySQL 数据库中。对于每件新到货的商品。

  • (1) 解析传入的项目。
  • (2) 执行几个“INSERT ... ON DUPLICATE KEY UPDATE”

我用过INSERT ... ON DUPLICATE KEY UPDATE以消除一次额外的数据库往返。

在尝试提高整体性能的同时,我考虑过通过以下方式进行批量更新:

  • (1) 解析传入的项目。
  • (2) 生成带有“INSERT ... ON DUPLICATE KEY UPDATE”的 SQL 语句并附加到文件。

定期刷新文件中的SQL语句到数据库。

两个问题:

  • (1) 这会对数据库负载产生积极影响吗?
  • (2) 我应该如何将语句刷新到数据库中以便仅在完全刷新后重建索引? (使用交易?)

更新:我正在使用 Perl DBI + MySQL MyISAM。

提前感谢您的任何评论。

最佳答案

如果您的数据不需要立即进入数据库,您可以将插入数据缓存在某处,然后发出一个更大的插入语句,例如

插入到 table_name (x, y, z) 值 (x1, y1, z1), (x2, y2, z2), ... (xN, yN, zN) on duplicate update ...;

明确地说,我会维护一个待处理插入列表。在本例中是 (x,z,y) 三元组的列表。然后,一旦您的列表超过某个阈值 (N),您就会生成插入语句并发出它。

我没有准确的时间数据供您引用,但与单独插入每一行相比,这将性能提高了大约 10 倍。

我也没有玩过 N 的值,但我发现 1000 可以很好地工作。我预计最佳值会受到硬件和数据库设置的影响。

希望这会有所帮助(我也在使用 MyIsam)。

关于mysql - 优化 MySQL 插入以处理数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1774142/

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