在MySQL中并发创建索引

在MySQL中并发创建索引,mysql,sql,multithreading,parallel-processing,Mysql,Sql,Multithreading,Parallel Processing,我在pl/sql中发现了一个过程,该过程使用多线程创建索引: declare l_job number; begin dbms_job.submit( l_job, 'execute immediate ''alter index idx1 rebuild'';' ); commit; dbms_job.submit( l_job, 'execute immediate ''alter index idx2 rebuild'';' ); commit; end;

我在pl/sql中发现了一个过程,该过程使用多线程创建索引:

declare l_job number;
begin
    dbms_job.submit( l_job, 'execute immediate ''alter index idx1 rebuild'';' );
    commit;
    dbms_job.submit( l_job, 'execute immediate ''alter index idx2 rebuild'';' );
    commit;
end;
此过程将并行执行


我可以在MySQL中编写这样的过程吗?MySQL可以在单独的线程中执行过程吗?

在MySQL中,每个客户端连接有一个线程。为了使这个并行化,您需要为希望重建的每个索引启动一个客户机实例,并并行运行这些客户机。此链接讨论了当前的限制:

您通常在一次性事件中设置数据库。那么为什么需要多线程呢?只需设置数据库(创建表/帐户/索引/存储过程等)。使用EXPLAIN检查SQL。那么事情就这样好了。顺便说一句-忘了提到限制因素是IO。@EdHeal故事是我有一个包含300000000条记录的表,我想对其执行update语句。我更喜欢将记录插入到没有索引的新表中,并在将记录插入到新表中后,向其添加索引。现在我想用并行线程向新表添加索引。这是一次性事件吗?如果我答对了你的问题,当然可以按顺序执行,但我需要并行执行。我读到,按顺序为1mln记录建立索引需要76秒,并行执行大约需要40秒。如果这是一次性事件,为什么要担心喝一杯咖啡的时间?而建立一个数据库是一次性的事情,否则有些事情就误入歧途了。