Domanda

Sto cercando di spostare una tabella che contiene miliardi di righe in una nuova directory in MySQL 5.6. Sto provando a copiare la tabella 1 nella tabella 2 e lì lasciando cadere la tabella 1 e quindi rinominando la tabella 2 nella tabella1.

    CREATE TABLE `table2` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `col1` int(11) DEFAULT NULL,
  `col2` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_col1_col2` (`col1`,`col2`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 DATA DIRECTORY='/mysql_data/';

Sto usando la procedura seguente per eseguire la copia.

DROP PROCEDURE IF EXISTS copytables;
CREATE PROCEDURE `copytables`()
begin
DECLARE v_id INT(11) unsigned  default 0;
declare maxid int(11) unsigned  default 0;
select max(id) into maxid from table1;
while v_id < maxid  do
insert into table2(col1,col2)
select fbpost_id,fbuser_id from table1 where id >= v_id and id <v_id+100000 ;
set v_id=v_id+100000;
select v_id;
select max(id) into maxid from table1;
select maxid;
end while;
end;

Ma ora ricevo lacune nella colonna ID dopo ogni lotto di 100000 nella Tabella 2 (dopo l'ID ID 19999 il prossimo ID è 262141). La tabella 1 non contenga spazi vuoti nella colonna ID.

È stato utile?

Soluzione

Chiedi a Google: https://www.google.com/search?q=auto_increment+mysql+gaps+innodb Il primo risultato spiega questo problema.

In generale, devi essere in grado di dire così alle persone cosa hai provato finora e perché non funziona. In questo caso, questa è solo una caratteristica/caratteristica del motore InnoDB che lo consente di funzionare rapidamente a volumi elevati.

Altri suggerimenti

I campi di incremento automatico non sono garantiti per essere densi, sono solo garantiti per darti valori unici. Di solito Lo farà dandoti valori densi (consecutivi), ma non è necessario. Si riserva una serie di valori, che possono essere scartati se non utilizzati. Vedere http://dev.mysql.com/doc/refman/5.6/en/example-auto-increment.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top