3

我已经实现了一个基准测试来测试 10 个不同表上的读写持久性。

我有 10 个 java 线程,每个线程只对其表执行查询:

线程 1 对 Table1 执行操作,线程 2 对 Table2 执行操作,

我比较了在非分区表 [1-10] 上并行运行这些线程的性能,与将每个 TableX 分区为 9 个相等分区时相同基准测试的性能(每个代表一周的测量,总共 9 周数据的)。

我收到了有趣且无法解释的结果:

单线程的单个操作的性能对于非分区表来说是两倍,而对于所有线程的所有操作的总时间对于分区表来说是快 5 倍。

我检查了日志,发现分区表可以并行执行更多操作,虽然单个操作更长,但不同线程的多个操作是并行的,因此完成速度更快。

我不明白为什么会这样,因为每个线程只在自己的表上执行操作???

我只对所有表和分区使用 MyISAM 引擎。

4

1 回答 1

3

查看给定的文章,了解分区如何帮助提高服务器性能

如何决定是否应该使用表分区

专家也回答了几乎相同的问题

堆栈溢出问题

于 2012-12-27T12:38:24.950 回答