繁体   English   中英

慢 SQL 插入 OracleDB/EDB

[英]Slow SQL inserts OracleDB/EDB

这是测试场景,我在 JavaScript 应用程序中有多个异步请求:

  1. 创建一个 object 并将其保存在数据库中。
  2. 查询 object 并对其进行更改并将其保存到数据库中(此步骤执行 2 或 3 次以向对象添加新项目)

对每个新的 object 重复第 1 步和第 2 步,以实现长时间的测试场景。

经过调查,事实证明,一些选择和插入最多需要 11 秒,并且随着时间的推移会更多,当您为同一个表执行那么多插入时,这可能是预期的,并且每个插入都必须等待另一个插入完成的。

我的问题是,如何在不失去异步能力的情况下缓解这个问题,甚至摆脱它?

我知道多值插入比单个插入要快得多,但是您将如何在异步应用程序中做这样的事情?

你可能想重构你做事的方式。 而不是一次插入一个,将一组对象发布到您的后端,然后一次将它们全部插入。 就像是

https://livesql.oracle.com/apex/livesql/file/content_BM1LJQ87M5CNIOKPOWPV6ZGR3.ZFC35FDC70D5FC69D269883A8EZC7

INSERT INTO people (person_id, given_name, family_name, title) 
  WITH names AS ( 
    SELECT 4, 'Ruth',     'Fox',      'Mrs'    FROM dual UNION ALL 
    SELECT 5, 'Isabelle', 'Squirrel', 'Miss'   FROM dual UNION ALL 
    SELECT 6, 'Justin',   'Frog',     'Master' FROM dual UNION ALL 
    SELECT 7, 'Lisa',     'Owl',      'Dr'     FROM dual 
  ) 
  SELECT * FROM names

您可能还想查看它可以更新的合并语句,并使用一条语句插入到单个表中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM