0

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

0 回答 0