好了,伙计们,我们从mySQL中的一些表分区开始。有几种不同的方法描述了这一点,但我找不到更实用的方法。-每种分区方法对哪种类型的数据有最好的效果?
或者这真的不重要?
参考:http://dev.mysql.com/tech-resources/articles/performance-partitioning.html
好了,伙计们,我们从mySQL中的一些表分区开始。有几种不同的方法描述了这一点,但我找不到更实用的方法。-每种分区方法对哪种类型的数据有最好的效果?
或者这真的不重要?
参考:http://dev.mysql.com/tech-resources/articles/performance-partitioning.html
2条答案
按热度按时间oipij1gg1#
这完全取决于您遇到的性能问题。
MySQL 5.1的分区只允许你对主键的第一位进行分区。这意味着如果你想使用任何有用的分区形式,通常都希望有一个复合主键。
最常见的用例之一是过期旧数据,这在非分区情况下可能非常昂贵。在这种情况下,您必须使主键以日期/时间和分区开始。
然后,您可以通过编程方式删除旧分区来使行过期。
在其他情况下,您的常见查询可以从分区修剪中受益。
请记住,您不能用分区解决每个性能问题;这并不是魔术。对于那些不能从分区修剪中受益的查询,每个分区都必须被查询。MySQL不会并行地做这件事,所以它通常和使用非分区表一样慢。
1.准确地确定您的性能问题所在
1.决定多少改进将足以修复它们
1.决定在其他用例中您可以容忍多少性能退化
1.在各种不同的设置下,在生产级硬件上对生产规模的数据进行测试、测试、测试和再次测试
1.重复,直到你满意为止。
1.进行相关功能测试;放开!
yyyllmsg2#
让我和你分享一下this关于基于时间/日期的分区和巨大数据流的子分区的好文章,它展示了分区如何成为可伸缩架构的一个很好的解决方案。