我已经实现了一个基准测试来测试 10 个不同表上的读写持久性。
我有 10 个 java 线程,每个线程只对其表执行查询:
线程 1 对 Table1 执行操作,线程 2 对 Table2 执行操作,
我比较了在非分区表 [1-10] 上并行运行这些线程的性能,与将每个 TableX 分区为 9 个相等分区时相同基准测试的性能(每个代表一周的测量,总共 9 周数据的)。
我收到了有趣且无法解释的结果:
单线程的单个操作的性能对于非分区表来说是两倍,而对于所有线程的所有操作的总时间对于分区表来说是快 5 倍。
我检查了日志,发现分区表可以并行执行更多操作,虽然单个操作更长,但不同线程的多个操作是并行的,因此完成速度更快。
我不明白为什么会这样,因为每个线程只在自己的表上执行操作???
我只对所有表和分区使用 MyISAM 引擎。