【并发运行SQL语句】若所有索引都在同一个SQL文件中,那么如何并发的创建索引?(分解 拆分 并发操作)

0    81    2

Tags:

👉 本文共约1456个字,系统预计阅读时间或需6分钟。

问题

如果有一个sql文件,假设里边包含100条create index语句,一条SQL占用一行,现在我想用psql开10个job并行的跑这一个sql文件,该如何实现呢?

方法1:拆分小文件并执行


  1. 将 SQL 文件拆分为多个小文件

将包含 100 条 CREATE INDEX 语句的 SQL 文件拆分为 10 个小文件,每个文件包含 10 条语句。

使用 split 命令拆分文件

假设你的 SQL 文件名为 indexes.sql,可以使用以下命令将其拆分为 10 个文件:

  • -l 10:每 10 行拆分为一个文件。
  • index_part_:生成的文件名前缀(例如 index_part_aa, index_part_ab 等)。

  1. 并发执行拆分后的文件

使用 xargsGNU Parallel 并发执行这些拆分后的文件。

方法 1:使用 xargs

  • -n 1:每次处理一个文件。
  • -P 10:同时运行 10 个并发任务。
  • -I {}:将文件名传递给 psql

方法 2:使用 GNU Parallel

  • -j 10:同时运行 10 个并发任务。
  • ::::指定输入文件列表。

方法2:直接并发执行单文件中的语句(无需拆分)

如果你不想拆分文件,可以通过以下方式直接从单文件中并发执行 SQL 语句。

方法 1:使用 xargspsql-c 选项

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

发表回复