big mysql table 应该拆分,使用合并引擎,master/slave 还是其他?

should big mysql table be split, use merge engine, master/slave or something else?

我可能过早地走上了过度优化的道路而迷失了方向。我正在记录棋盘游戏的游戏树中所有可能的动作。我不太希望完成这棵树,因为它会变得如此之大 (10^28),但如果可能的话我想得到一个好的块。由于预期查询速度较慢,我将表分成约 50 个树的分支,并用后缀描述每个分支。

不幸的是,我的应用程序有很多读取、写入、更新和连接,所以在我将它们拆分之前,事情很快就变慢了。从那时起,我还添加了一些非常有用的索引,这些索引可能已经解决了最初的迟缓问题。然而,随着应用程序的开发,在具有更复杂连接的这么多表之间切换变得越来越复杂。我最近听说使用主从设置以及合并引擎来帮助处理大型表。我是选择了错误的解决方案还是应该坚持下去?

10^28行什么的,说白了,不可能。计算那么多磁盘的成本space;那应该吓到你。您需要关注 "pruning" 您的树木。

PARTITIONing 看起来很诱人,但它本身并没有提供任何性能优势(极少数例外)。手动分区到 50 个表的同上。 MERGE 只是 PARTITION 的旧变体。复制可能有助于 read 缩放。分片(在多台机器上拆分数据)可能会有所帮助,但会增加成本和复杂性——而且仍然不会让你达到 10^28 的任何东西。

如果您提供SHOW CREATE TABLE和一些查询,我们可以讨论优化、位、索引等技术。这些可能对你有帮助。

您是否使用 64 位 BIGINT UNSIGNED 来跟踪 8x8 板上的 一些 东西?并使用布尔算术来操纵它们?在某些情况下,这可以显着减少磁盘 space、所需的查询数量等