数百万行の大きなテーブルでパーティションを作成する際に問題があります。
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
多数の行を挿入して繰り返しをチェックする必要があるため、一意である必要があります。パーティションにはすべての一意の列を含める必要があり、整数以外の値にすることはできません。パーティションの理由の 1 つは、.ibd が 50G を超えて大きくなり、それらを分割したいので、より管理しやすいサイズに縮小することです。主キーとしてのurlIDは、挿入が行われるたびに行が並べ替えられるのを防ぐためのものです。エントリの重複を防ぐために一意の URL ハッシュを使用します。主キーを削除せずにテーブルを分割する方法を探しています。