Estoy trabajando con una tabla enorme que tiene más de 250 filas. El esquema es simple.El rendimiento de inserción de MySQL se degrada en una tabla grande
CREATE TABLE MyTable (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
oid INT NOT NULL,
long1 BIGINT NOT NULL,
str1 VARCHAR(30) DEFAULT NULL,
str2 VARCHAR(30) DEFAULT NULL,
str2 VARCHAR(200) DEFAULT NULL,
str4 VARCHAR(50) DEFAULT NULL,
int1 INT(6) DEFAULT NULL,
str5 VARCHAR(300) DEFAULT NULL,
date1 DATE DEFAULT NULL,
date2 DATE DEFAULT NULL,
lastUpdated TIMESTAMP NOT NULL,
hashcode INT NOT NULL,
active TINYINT(1) DEFAULT 1,
KEY oid(oid),
KEY lastUpdated(lastUpdated),
UNIQUE KEY (hashcode, active),
KEY (active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 MAX_ROWS=1000000000;
El rendimiento de la inserción ha disminuido significativamente. Hasta 150 millones de filas en la tabla, solía tardar de 5 a 6 segundos para insertar 10.000 filas. Ahora ha aumentado entre 2 y 4 veces. El archivo ibdata de Innodb ha crecido a 107 GB. Los parámetros de configuración de Innodb son los siguientes.
innodb_buffer_pool_size = 36G # Machine has 48G memory
innodb_additional_mem_pool_size = 20M
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_file_size = 50M
innodb_log_buffer_size = 20M
innodb_log_files_in_group=2
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
expire_logs_days = 4
IO ha pasado el tiempo de espera como se ve con top
. He intentado cambiar el método de descarga a O_DSYNC, pero no ayudó. El disco está tallado en la configuración RAID 10 de hardware. En una configuración anterior con un solo disco, IO no era un problema.
¿Particiona solo la opción de tabla? ¿Puede ayudar a dividir archivos individuales de 100G en archivos "más pequeños"? ¿Hay alguna variable que deba ser ajustada para RAID?
Actualización: Este es un sistema de prueba. Tengo la libertad de hacer los cambios necesarios.
Gracias, Mark.This es un sistema de prueba. –
Su consejo sobre el tamaño del índice es útil. Estoy trabajando en la indexación. –