代码之家  ›  专栏  ›  技术社区  ›  James Thompson

开放源代码数据库中行数的上限?

  •  3
  • James Thompson  · 技术社区  · 15 年前

    我有一个项目,我在其中进行数据挖掘一个大型数据库。我目前将所有数据存储在文本文件中,我试图了解存储数据关系数据库的成本和好处。要点如下:

    CREATE TABLE data (
        source1 CHAR(5),
        source2 CHAR(5),
        idx11   INT,
        idx12   INT,
        idx21   INT,
        idx22   INT,
        point1  FLOAT,
        point2  FLOAT
    );
    

    我能有多少个这样的点,性能合理?我目前有大约1.5亿个数据点,可能不会超过3亿个。假设我使用的是一个具有4个双核2GHz Xeon CPU和8GB RAM的机箱。

    3 回复  |  直到 15 年前
        1
  •  2
  •   RC.    15 年前

    MySQL不仅能满足您的需求,而且能满足Alex对PostgreSQL的建议。合理的性能不应该很难实现,但是如果表将被大量访问并拥有大量DML,那么您将希望了解更多有关最终选择的数据库所使用的锁的信息。

    我相信PostgreSQL可以使用开箱即用的行级锁定,MySQL将依赖于您选择的存储引擎。myisam只在表级别锁定,因此并发性会受到影响,但是InnoDB for MySQL等存储引擎可以并且将使用行级别锁定来增加吞吐量。我的建议是从myisam开始,只有当您发现需要行级锁定时才转到innodb。Myisam在大多数情况下都能很好地工作,而且非常轻。我使用myisam在mysql中有超过10亿行的表,并且有良好的索引和分区,您可以获得很好的性能。您可以在mysql中阅读有关存储引擎的更多信息 MySQL Storage Engines 关于表分区 Table Partitioning . 这是一篇关于 partitions in practice on a table of 113M rows 你也会觉得有用。

    我认为将数据存储在关系数据库中的好处远远大于成本。一旦您的数据在数据库中,您可以做很多事情。时间点恢复,确保数据完整性、更细粒度的安全访问、数据分区、通过公共语言向其他应用程序提供可用性。(SQL)等

    祝你的项目好运。

        2
  •  7
  •   Peter Mortensen icecrime    15 年前

    PostgreSQL 应该能够充分地容纳您的数据——每个表最多32兆字节,等等。如果我理解正确的话,您现在谈论的是5兆字节,最大10兆字节(大约36字节/行,最多3亿行),所以几乎任何数据库实际上都应该能够轻松地容纳您。

        3
  •  3
  •   Roboprog    15 年前

    仅供参考:在多处理器/重叠请求方面,Postgres比MySQL的伸缩性更好,这是我几个月前读到的一篇评论文章(抱歉,没有链接)。

    我想从你的个人资料来看,这是某种生物特征(密码子序列,酶与蛋白质氨基酸序列,或者类似的)问题。如果你打算用并发请求攻击这个问题,我会和Postgres一起去。

    Otoh,如果要加载一次数据,然后用一个线程进行扫描,那么mysql在其“acid-not-required”模式下可能是最好的匹配。

    在选择“最佳”堆栈之前,您需要做一些计划,以防访问用例。