AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 80334
Accepted
jack
jack
Asked: 2009-11-01 00:40:20 +0800 CST2009-11-01 00:40:20 +0800 CST 2009-11-01 00:40:20 +0800 CST

MyISAM 表中超过 10 亿行

  • 772

根据您的经验,MyISAM 表中的行的上限是多少,MySQL 可以在具有 Q9650 CPU(4 核,3.0G)和 8G RAM 的服务器上有效处理。

我目前有一个包含 1500 万行的表。它非常快。如果规模增加到 10 亿行,是否需要将其划分为 10 个表,每个表有 1 亿行?

mysql
  • 4 4 个回答
  • 4529 Views

4 个回答

  • Voted
  1. Best Answer
    memnoch_proxy
    2009-11-01T02:04:13+08:002009-11-01T02:04:13+08:00

    我不会担心在可以将索引保留在内存中的机器上有 10 亿行的应用程序性能。如果你真的想达到 10 亿行,你首先必须做一些数学运算:

    • 你的记录大小是多少,乘以 10 亿?
    • 接下来,您需要计算索引的大小(我猜不止一个索引),然后将其添加。
    • 您是否有想要对其进行行级锁定的事务性需求?
    • 这是追加重表还是读取重表?

    接下来,进入您的应用程序正常运行时间要求。

    • 你打算如何备份 1B 行?
    • 您将如何处理损坏的 1B 行表?
    • 您需要多久运行一次 OPTIMIZE TABLE?
    • 您将如何处理针对 1B 行表的架构更改?(最近在 2gb ram 的 2gh 双核机器上为 3500 万行表添加索引花了我 45 分钟。)

    在担心性能之前,我会更多地担心数据生命周期和这么大的数 GB 表文件的数据管理。使用复制,可以弥补很多性能。保持数据健全并从即使是小灾难(如坏 ram 引起的损坏)中恢复更有可能首先给您带来麻烦。

    我还鼓励您使用您拥有的表格 - 并向其中添加 1B 行测试数据。这对于观察您的系统发生的事情非常有洞察力。针对这个新的庞大数据集对您的查询运行一些 EXPLAIN。记录备份和恢复所需的时间。您可能需要调整一些要求。

    这是一篇关于 mysql 中 10 亿行的有趣文章。

    • 15
  2. Alex
    2009-11-02T18:11:24+08:002009-11-02T18:11:24+08:00

    只是为了补充上面的一些评论,我之前在 quad-xeons 上拥有十亿行表,尽管使用 32Gb RAM,而不仅仅是 8 个。

    为了确保我们的性能良好,表被尽可能地简化和规范化以保持它们的精简,然后在它们上只有几个索引。对我来说,那些非常大的表的主要目的只是写下时间序列数据。大量写入,全部按顺序进行,而读取很少。必要的读取总是针对另一列或 2 列搜索特定时间,因此索引可以解决这个问题。

    存储在 SAN 上的表由 SRDF 自动备份,有时确实出现问题(磁盘已满等),修复需要大约 4 小时。

    • 2
  3. ceejayoz
    2009-11-01T01:24:19+08:002009-11-01T01:24:19+08:00

    取决于您正在运行的查询。如果您正在这样做SELECT * FROM table,它通常会比使用 10 秒的查询运行得快得多JOIN。

    • 1
  4. pfote
    2009-11-01T02:05:07+08:002009-11-01T02:05:07+08:00

    取决于您的硬件、数据、您运行的查询以及您认为的快速。对于简单的 ( "select * from table where foo='bla'") 查询,计算很容易:如果您的查询使用索引并且该索引适合您的操作系统的文件系统缓冲区,那么它会很快。如果不合适,则查询运行速度较慢(慢多少取决于 mysql 必须读取的数据量和磁盘的速度)

    但是,我会使用符合 ACID 的数据库,例如带有此类表的 postgres,您不想修复具有十亿行的表

    • 0

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve