Pregunta

Estoy tratando de mover una mesa que contenga miles de millones de filas a un nuevo directorio en MySQL 5.6. Estoy tratando de copiar la Tabla1 a la Tabla 2 y allí al lanzar la Tabla1 y luego renombrar la Tabla 2 a la Tabla1.

    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/';

Estoy usando el siguiente procedimiento para hacer 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;

Pero ahora estoy obteniendo brechas en la columna ID después de cada lote de 100000 en la Tabla2 (después de la ID 199999 La siguiente identificación es 262141). La Tabla1 no contiene huecos en la columna ID.

¿Fue útil?

Solución

Pregúntele a Google: https://www.google.com/search?q=auto_incement+mysql+gaps+innodb los primer resultado explica este problema.

En general, debe poder decirle a la gente lo que ha intentado hasta ahora y por qué no está funcionando. En este caso, esto es solo una característica/característica del motor innoDB que le permite funcionar rápidamente a altos volúmenes.

Otros consejos

Los campos de incremento automático no se garantizan que sean densos, solo se garantiza que le brindarán valores únicos. Normalmente Lo hará dándole valores densos (consecutivos), pero no tiene que hacerlo. Reservará una serie de valores, que se pueden descartar si no se usan. Ver http://dev.mysql.com/doc/refman/5.6/en/example-auto-crement.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top