我有一个非常大的表,目前大约有 7000 万行并且每天都在增长数千行,这个架构现在每天都在翻倒,所以我要转向分区表并重新设计 ddl。
该表基本上是 NOT NULL INTEGERS 的集合(一些中等一些 INT 一些小) 这需要对一组 7 列(表中的列更多)有一个唯一约束,每次插入计算都非常昂贵,并且会进一步增加索引文件的大小,因为我从不通过它检索我更愿意放下它并以某种方式 md5/maybe simple concat 值...还不知道。
问题是唯一可以容纳如此大的唯一数字的列类型是 varchar 我想知道这个 PK 是否真的会更好? 另外因为我将有一个主键'part_key'(site_id,id)我将不得不 在分区设计中采取唯一约束,总结...... 我确定这不是一个新问题,但我找不到任何比较这两者的基准/文件,有没有人对这个问题有任何经验? 问题是 PK 是否应该是整个 8 个字段(请记住这个表可能有超过 100M 行)当我从来没有通过 pk 或只是唯一字段的散列值检索时 P.S:检索主要由 7 列中的两列完成 磁盘大小不是问题 谢谢。
最佳答案
在 mysql 进行分区修剪之前,我建议 (gulp) 将您的表非规范化为伪分区。做一些事情,比如对你的第一个值取模 32 并制作 32 个表格。
更新:显然 mysql 5.1.6 及更高版本支持修剪(http://dev.mysql.com/doc/refman/5.1/en/partitioning-pruning.html)所以我更强烈的建议是升级,然后允许 mysql 为您处理分区,可能使用哈希值您的 7 列之一。
关于mysql 7列pk与1列md5唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1567814/