我有一个大 (40GB) 的表,我想对其进行分区。这些行基本上是一次写入多次读取。目前我正在使用带有 file_per_table 的 mysql 5.5 innodb。由于重建整个文件需要很长时间,因此很难优化此表。
我希望对表进行分区,以便只写入一个分区;我认为这意味着优化表将花费更少的时间,因为每个非当前文件只会优化一次,不需要再次触及。
我是 mysql 中的表分区的新手,我不确定解决这个问题的正确方法是什么。我知道没有“文件大小”分区方案,所以下一个最好的方法是在行范围内进行 SWAG,这将导致我更喜欢的文件大小(3-4GB 似乎不错 - 所以我们每年大约有 3-4 个文件)当前利率)。我的想法是范围分区,id
但这不能满足文件分区的技术要求(“分区表的分区表达式中使用的所有列必须是表可能具有的每个唯一键的一部分。”)。那么解决这个问题的正确方法是什么?以下是精简为重要部分的表定义:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| TransactionId | int(11) | NO | MUL | NULL | |
| Parent | int(11) | NO | MUL | 0 | |
| Headers | longtext | YES | | …
Run Code Online (Sandbox Code Playgroud)