MySQL大数据集

时间:2015-05-01 15:44:58

标签: mysql large-data bigdata

我有大量的数据。超过我在MySQL表中加载的40GB。我正在尝试执行像select * from tablename这样的简单查询,但它需要花费数十亿分钟才能运行并最终超时。如果我设置了限制,那么执行速度相当快:select * from tablename limit 1000。 该表有超过2亿条记录。

  • 尝试在某些列上创建索引,但在执行3小时后也失败了。

有关使用这些类型的数据集的任何提示吗?

1 个答案:

答案 0 :(得分:2)

对于大型数据库,应考虑使用Apache Spark等替代解决方案。 MySQL从磁盘读取数据,这是一个缓慢的操作。没有什么能像基于MapReduce的技术一样快速地工作。看看this answer。确实,对于大型数据库,查询变得非常具有挑战性。

无论如何,假设你想坚持使用MySQL,首先如果你使用的是MyISAM,请确保将数据库存储转换为InnoDB。如果您有大量的读/写操作,这一点尤其重要。

分区也很重要,可以将表减少到更易于管理的小表。它还将提高索引的性能。

添加索引不要太慷慨。明智地定义索引。如果索引不需要UNIQUE,请不要将其定义为一个。如果索引不需要包含多个字段,则不包含多个字段。

最重要的是开始监控您的MySQL实例。使用SHOW ENGINE INNODB STATUS来调查MySQL实例的性能。