我正在尝试将一个包含100万行的非常简单的数据集加载到MySQL表中。
我使用LOAD DATA INFILE从5-6个不同的文件加载数据,这些文件都包含相同结构的相同数据,只是在不同的日子里。
加载前2个文件后,加载过程开始变得非常慢,考虑到文件的大小(每个文件大约100MB,100k行)...加载100mb文件需要10多分钟! ..
我认为问题可能与我加载数据和索引的方式有关,但我意识到这是我的MySQL的整体问题..例如,我运行了以下查询:
select count(*) from DataTable;
并且MySQL花了301秒才回复!!! (答案是78万)
我必须做一些非常根本错误的事情。我检查了变量,例如innodb缓冲池等,但没有什么看起来不寻常......
我确实意识到我提出了一个非常基本的问题,但是找不到任何关于抱怨类似基本问题的帖子。
非常感谢你的帮助..
请在下面找到我用于创建数据表的代码..
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`addata`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`addata` (
`idAdData` INT NOT NULL,
`Field1` VARCHAR(30) NOT NULL,
`Field2` VARCHAR(30) NULL,
`Field3` VARCHAR(50) NULL,
`Field4` VARCHAR(50) NULL,
`Field5` VARCHAR(50) NULL,
`Field6` INT NULL,
`Field8` VARCHAR(50) NULL,
`Field9` VARCHAR(50) NULL,
`Field10` VARCHAR(50) NULL,
`Field11` INT NULL,
`Field12` VARCHAR(50) NULL,
`Field13` VARCHAR(50) NULL,
`Field14` VARCHAR(50) NULL,
`Field15` VARCHAR(30) NULL,
`Field16` VARCHAR(30) NULL,
`Field17` VARCHAR(30) NULL,
`Field18` VARCHAR(30) NULL,
`Field19` VARCHAR(30) NULL,
`Field20` VARCHAR(30) NULL,
`Field21` VARCHAR(30) NULL,
`Field22` VARCHAR(300) NULL,
`Field23` VARCHAR(100) NULL,
`Field24` INT NULL,
PRIMARY KEY (`idAdData`, `Field2`))
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;