我刚刚浏览了this tutorial,幻灯片39上的子弹突出了:“不要在同一台服务器中混合分区和非分区表格”我不知道作者所指的是什么。这仅适用于基准测试吗?是否有一些要求在分区时应对所有表进行分区?即使它仅适用于基准测试,我仍然想知道为什么必须对它们进行分区以获得良好的基准测试结果。
答案 0 :(得分:5)
幻灯片39具有以下标题:
Benchmarking partitions - ISOLATION
- Try to reproduce working conditions
- no other services running while benchmarking
- restart the server before each test
- Do NOT mix partitioned and unpartitioned tables in the same server
- Use MySQL sandbox
请注意,基准测试时,此幻灯片仅指的是隔离问题!
它不是指运行您的服务器
如果您有一个表A和一个表B具有相同的数据和布局,则两者都应该被分区,否则您将得到不同的结果。
它没有指的是你有一个分区的大表链接到没有的较小表的情况,因为分区小表是没有意义的。
是否有一些要求在分区时应对所有表进行分区?
不
在数据库中混合分区表和普通表时绝对没有问题 事实上,只有几个关键表应该被分区,其余的不应该被分区。
@Mike Purcell:分区不意味着保护数据,它旨在通过允许更容易地从搜索中排除非相关数据来加速对数据的访问。
考虑按月分区的日志文件 通常,您只对日志文件的窄时间片感兴趣,因此分区将允许MySQL在查看特定时间段的日志时考虑更小的数据部分。
分区的优缺点
分区通常会加快速度,但代价是增加磁盘空间的使用(在极少数情况下会使速度再降低)
分区只对具有 lot 行的表有意义。