4

在 oracle 中,我们可以创建一个表并插入数据并使用并行选项选择它。

mysql中有没有类似的选项。我正在从 oracle 迁移到 mysql,我的系统有更多的选择和更少的数据更改,所以任何并行选择的选项都是我正在寻找的。

例如:让我们考虑一下我的表有 100 万行,如果我使用 parallel(5) 选项,那么五个线程正在运行相同的查询,并且每个线程都获取大约 200K 的数据,最终结果是我在平时的 1/5 时间内获得了 100 万条记录.

4

2 回答 2

5

简而言之,答案是否定的。

MySQL 服务器旨在并行执行并发用户会话,而不是在多个部分中并行执行一个给定的用户会话。

这是个人意见,但我不想预先应用优化,对 RDBMS 的工作方式做出假设。最好先测量查询,看看响应时间是否是一个真正的问题,然后才调查可能的优化。

“过早的优化是万恶之源。” (唐纳德·克努斯)

于 2013-09-20T14:04:23.410 回答
2

MySQL 中的查询始终并行运行。但是,如果您想通过程序同时运行不同的查询,则需要通过程序可以异步访问的工作程序打开不同的连接。

您还可以通过创建事件或使用延迟插入来运行任务,但我认为这在这里不太适用。还有一点需要考虑:

通常,某些操作在各个查询会话(称为事务)之间受到保护。InnoDB 后端支持这些,但 MyISAM 表不支持(但它支持称为原子操作的概念)。有各种不同的隔离级别,它们的不同之处在于哪些操作相互保护(以及一个并行事务中的操作如何影响另一个)以及它们对性能的影响。-霍尔格·贾斯特

他还提到了 MySQL 事务页面,该页面简要介绍了 MySQL 可用的不同引擎类型(MyISAM 更快,但不那么可靠): MySQL Transcations

于 2013-09-26T20:18:35.557 回答