MySQLTable占用太多space?

MySQL Table taking up too much space?

我有一个原始文本文件,大小为 8.1GB。 输入数据非常简单: Lab_A(字符串),Lab_B(字符串),距离(浮点数)

我尝试使用 LOAD DATA INFILE 将数据加载到 table,但是驱动器 运行 不在 space。

目的地 table 具有以下格式:

Id (INT)、Lab_A (VARCHAR)、Lab_B (VARCHAR)、距离 (FLOAT)。 主键为 Id,索引为 (Lab_A + Distance).

在下面创建语句:

CREATE TABLE 'warwick_word_suite'.'distances' (
  'id' INT NOT NULL AUTO_INCREMENT,
  'label1' VARCHAR(45) NOT NULL,
  'label2' VARCHAR(45) NOT NULL,
  'distance' FLOAT NOT NULL,
  PRIMARY KEY ('id'),
  INDEX 'LABEL_INDEX' ('label1' ASC, 'distance' ASC));

驱动器有 50GB 和 space 中的 运行。鉴于为系统预留了 10GB,我假设 table 为 table.

请求超过 32GB

我的问题是:

我应该为我的数据库服务器订购一个更大的驱动器吗?

编辑: 我追踪到 "ibdata1" 的数据存储在 /var/lib/mysql 中。此文件占用 30.3GB。

双重麻烦。

InnoDB 占用原始数据的 2-3 倍。这是一个粗略的近似值;有很多因素。

ibdata1 是放置 table 的默认位置。尝试将 table 放在那里后,该文件不会缩小。这可能是个问题。在 尝试加载文件之前让 innodb_file_per_table = ON 会更好。然后 table 会进入一个单独的 .ibd 文件,一旦失败,该文件就会消失。实际上,您的磁盘空间不足 space,没有简单的方法可以恢复它。 (恢复包括转储 所有其他 InnoDB tables、停止 mysqld、删除 ibdata1、重新启动,然后重新加载其他 tables。

回到终极问题……如何使用数据。首先,我们可以看到数据样本(几行)吗?可能会有一些线索。 table(或文件中的行)中有多少行?

这可能是加载到 MyISAM 而不是 InnoDB 的情况; table 的大小将接近 8.1GB,加上两个索引,这可能会再增加 5-10GB。仍然紧得令人不快。

标准化实验室名称可能会有很大的收获。假设您有 10K 个实验室和 100M 的距离(每个实验室到其他每个实验室)。其中一半是多余的?规范化实验室名称每行可能会节省 50 字节——可能是 space?

的一半

或者您可以获得更多磁盘 space。

想一想你想解决上面的哪些建议;让我们知道您还需要什么帮助。