【问题标题】:Restructure huge unnormalized mysql database重构庞大的非规范化mysql数据库
【发布时间】:2012-09-28 23:22:21
【问题描述】:

您好,我有一个巨大的非规范化 mysql 数据库,其中包含(约 1 亿)个 url(约 20% 的重复)分为相同的拆分表,每个表有 1300 万行。

我想将 url 移动到同一个 mySql 服务器上的规范化数据库中。

旧的数据库表未规范化,并且 url 没有索引 它看起来像这样:

entry{id,data,data2, data3, data4, possition,rang,url}

我要把它分成多张桌子。

url{id,url}
data{id,data}
data1{id,data}
etc

我做的第一件事是

INSERT IGNORE INTO newDatabase.url (url)
SELECT DISTINCT unNormalised.url FROM oldDatabase.unNormalised

但是“SELECT DISTINCT unNormalised.url”(1300 万行)需要很长时间,我认为由于“INSERT IGNORE INTO”也进行比较,所以只做一个会很快

INSERT IGNORE INTO newDatabase.url (url)
SELECT unNormalised.url FROM oldDatabase.unNormalised

如果没有 DISTINCT,这个假设是否错误?

无论如何它仍然需要很长时间,我需要一些帮助,有没有更好的方法来处理如此大量的非规范化数据? 如果我在整个 1 亿行数据库上执行 SELECT DISTINCT unNormalised.url" 并导出所有 id,然后使用 php 脚本仅将这些 id 移动到新数据库中,那会更好吗?

欢迎所有想法,我不知道如何在不花一年时间的情况下移植所有这些日期!

ps 它托管在 rds 亚马逊服务器上。

谢谢!

【问题讨论】:

  • 在如此庞大的数据集上选择 distinct 需要很长时间

标签: mysql database database-design database-schema


【解决方案1】:

由于MySQL Manual statesLOAD DATA INFILE 快于INSERT,因此加载数据的最快方法是:

LOCK TABLES url WRITE;
ALTER TABLE url DISABLE KEYS;
LOAD DATA INFILE 'urls.txt'
    IGNORE
    INTO TABLE url
    ...;
ALTER TABLE url ENABLE KEYS;
UNLOCK TABLES;

但是由于您已经将数据加载到 MySQL 中,但只需要对其进行规范化,您可以尝试:

LOCK TABLES url WRITE;
ALTER TABLE url DISABLE KEYS;
INSERT IGNORE INTO url (url)
    SELECT url FROM oldDatabase.unNormalised;
ALTER TABLE url ENABLE KEYS;
UNLOCK TABLES;

我的猜测是 INSERT IGNORE ... SELECT 会比 INSERT IGNORE ... SELECT DISTINCT 快,但这只是猜测。

【讨论】:

  • 感谢您的意见,将尝试但是您能详细说明为什么我需要禁用键,它会使其更快吗?
  • 如果我禁用键,它不会忽略 uniqe 约束并开始插入重复条目吗?
  • 来自dev.mysql.com/doc/refman/5.6/en/alter-table.html:可以为 MyISAM 表显式激活此功能。 ALTER TABLE ... DISABLE KEYS 告诉 MySQL 停止更新非唯一索引。 ALTER TABLE ... ENABLE KEYS 然后应该用于重新创建丢失的索引。 MySQL 使用一种特殊算法来执行此操作,该算法比逐个插入键要快得多,因此在执行批量插入操作之前禁用键应该会大大加快速度。使用 ALTER TABLE ... DISABLE KEYS 除了前面提到的权限外,还需要 INDEX 权限。
  • 你的表是 MyISAM 还是 InnoDB?
猜你喜欢
  • 2012-09-25
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2011-12-16
  • 2013-07-17
  • 1970-01-01
相关资源
最近更新 更多