2013-03-06 70 views
1

ORACLE并行查询是否有mysql的任何等同方法来运行相同ORACLE相当于在MySQL

ORACLE WAY

select /*+ FULL(emp) PARALLEL(emp, 35) */ 
     emp_name 
     from 
     emp; 

并行查询在MySQL

/* + FULL(emp)PARALLEL(emp,35)*/

将被视为评论

回答

0

有在MySQL支持开箱即没有PARALLEL关键字,但你可以以类似的方式实现它:

#!/bin/bash 
date 
for y in {1988..2013} 
do 
    sql="select yeard, count(*) from ontime where yeard=$y" 
    mysql -vvv ontime -e "$sql" &>par_sql1/$y.log & 
done 
wait 
date 

看文章:Increasing slow query performance with the parallel query execution

+0

需要明确的是,这是使用bash来产生多个MySQL进程(注意mysql行末尾的&)。它可以工作,但是比Oracle解决方案在三个方面效率低下:(a)它使用完整的MySQL进程而不是线程(b)它在客户端执行并行操作,所以更多的通信开销和更少的优化机会(c)它往往需要进一步的工作,因为你最终会得到一个结合了所有结果并且以任意顺序的文件。 (不幸的是,当涉及到MySQL并行性时,解决方法不幸是必需的,但它并不是内置的。) – mahemoff 2018-02-18 09:29:54