1
我在使用几百万行的大型表上创建分区时出现问题。使用Md5唯一密钥对表进行分区的表Mysql
CREATE TABLE `searcheg`.`pages` (
`urlId` int(9) NOT NULL AUTO_INCREMENT,
`url` varchar(1024) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`urlhash` binary(16) NOT NULL,<< MD5 unhex.
PRIMARY KEY (`urlId`),
UNIQUE KEY `urlhash` (`urlhash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
如何对此进行分区? urlhash
必须是唯一的,因为我需要插入大量的行并检查重复。由于分区必须包含所有唯一列,并且不能为非整数值。分区的一个原因是将.ibd缩小为更易于管理的大小,因为它增长超过50G,我想分割它们。 作为主键的urlID是为了防止每次插入行时重新排序。 urlhash是唯一的以防止重复输入。 我正在寻找一些方法来拆分表而不必删除主键。
我不会使用md5进行分区,因为它是一个非常强大但缓慢的哈希函数。这是为了不同的目的。 – usr