ORACLE并行查询是否有mysql的任何等同方法来运行相同ORACLE相当于在MySQL
ORACLE WAY
select /*+ FULL(emp) PARALLEL(emp, 35) */
emp_name
from
emp;
并行查询在MySQL
/* + FULL(emp)PARALLEL(emp,35)*/
将被视为评论
ORACLE并行查询是否有mysql的任何等同方法来运行相同ORACLE相当于在MySQL
ORACLE WAY
select /*+ FULL(emp) PARALLEL(emp, 35) */
emp_name
from
emp;
并行查询在MySQL
/* + FULL(emp)PARALLEL(emp,35)*/
将被视为评论
MySQL不是Oracle(尽管属于Oracle)。它does not support parallel queries。
但是,您可以使用shard-query这是支持它们的第三方数据库引擎。查看来自Percona的Justin Swanhart的this blog post了解更多信息。
有在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
需要明确的是,这是使用bash来产生多个MySQL进程(注意mysql行末尾的&)。它可以工作,但是比Oracle解决方案在三个方面效率低下:(a)它使用完整的MySQL进程而不是线程(b)它在客户端执行并行操作,所以更多的通信开销和更少的优化机会(c)它往往需要进一步的工作,因为你最终会得到一个结合了所有结果并且以任意顺序的文件。 (不幸的是,当涉及到MySQL并行性时,解决方法不幸是必需的,但它并不是内置的。) – mahemoff 2018-02-18 09:29:54