我正在尝试将具有 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;