代码之家  ›  专栏  ›  技术社区  ›  xpepermint

MySQL数据库表中的最大记录数

  •  154
  • xpepermint  · 技术社区  · 15 年前

    MySQL数据库表的记录上限是多少?我在想自动递增场。如果我加上数百万条记录会发生什么?如何处理这种情况? 谢谢!

    8 回复  |  直到 7 年前
        1
  •  54
  •   KM.    15 年前

    mysql int类型可以做很多行: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

    未签名的 int 最大值是 4,294,967,295
    未签名的 bigint 最大值是 18,446,744,073,709,551,615

        2
  •  213
  •   Bill Karwin    7 年前

    整数的最大值与表中可以存储的最大行数几乎没有关系。

    的确,如果使用in t或bigint作为主键,那么在主键的数据类型中只能有与唯一值数目相同的行,但是不必使主键成为整数,也可以将其设置为char(100)。也可以在多个列上声明主键。

    除了行数之外,表大小还有其他限制。例如,您可以使用具有文件大小限制的操作系统。或者你可以有一个300GB的硬盘驱动器,如果每行大小为1KB,它只能存储3亿行。

    数据库大小的限制非常高:

    http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html

    Myisam存储引擎支持2 三十二 每个表的行数,但可以使用 --with-big-tables 最多支持2个 六十四 每个表行。

    http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

    InnoDB存储引擎似乎对行数没有限制,但对表大小有64兆字节的限制。多少行适合这一点取决于每一行的大小。

        3
  •  12
  •   Matical    11 年前

    我建议永远不要删除数据。不要说表是否超过1000,截断表的结尾。您的计划中需要有真正的业务逻辑,比如这个用户处于非活动状态的时间。例如,如果时间超过1年,则将它们放在不同的表中。在一个缓慢的过程中,维护脚本每周或每月都会发生这种情况。

    当您在表中遇到多行时,您应该开始分割表或分区,并按年份将旧数据放入旧表中,如用户_2011年1月、用户_2011年2月或使用月份的数字。然后更改您的编程以使用此模型。也许可以创建一个信息较少的新表,将数据汇总到较少的列中,然后仅在需要更多信息(如用户查看其配置文件时)时才引用较大的分区表。所有这些都应该仔细考虑,因此在未来重新考虑并不太昂贵。您也可以只将一直访问您站点的用户放在一个表中,而将从未进入存档表集中的用户放在一个表中。

        4
  •  6
  •   Xylo    12 年前

    在InnoDB中,表大小限制为64兆字节,MySQL行大小限制为65535,可以有1073741824行。这将是使用最大行大小限制的最小记录数。但是,如果行大小较小,则可以添加更多记录。

        5
  •  2
  •   Data    12 年前

    根据中的可扩展性和限制部分 http://dev.mysql.com/doc/refman/5.6/en/features.html , 对大型数据库的MySQL支持。他们使用的mysql服务器数据库包含5000万条记录。有些用户使用的MySQLServer有20万个表和大约50亿行。

        6
  •  1
  •   Saurabh Chandra Patel cskwg    8 年前

    Row Size Limits

    The maximum row size for a given table is determined by several factors:
    
    • mysql表的内部表示具有最大行大小 限制为65535字节,即使存储引擎能够 支持较大的行。blob和文本列只占9到12 字节数接近行大小限制,因为它们的内容是存储的 与其他行分开。

    • InnoDB表的最大行大小,适用于数据 存储在本地数据库页中,略小于半页。例如,默认16kb innodb页面大小的最大行大小略小于8kb,由innodb_page_size配置选项定义。艾斯 Limits on InnoDB Tables 艾斯。

    • 如果包含可变长度列的行超过InnoDB最大行大小,InnoDB将选择可变长度列进行外部页外存储,直到该行符合InnoDB行大小限制。 本地存储的可变长度列的数据量 存储的页外内容因行格式而异。有关详细信息,请参阅 艾斯 InnoDB Row Storage and Row Formats 艾斯。
    • 不同的存储格式使用不同数量的页首和尾部数据,这会影响行的可用存储量。
        7
  •  1
  •   Md Nazrul Islam    8 年前

    链接 http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html

    行大小限制

    给定表的最大行大小由以下几个因素决定:

    MySQL表的内部表示法的最大行大小限制为65535字节,即使存储引擎能够支持较大的行。BLOB和文本列只对行大小限制贡献9到12个字节,因为它们的内容与行的其余部分分开存储。

    InnoDB表的最大行大小适用于本地存储在数据库页中的数据,对于4Kb、8Kb、16Kb和32Kb InnoDB_页大小设置,该值略小于半页。例如,对于默认的16kb innodb页面大小,最大行大小略小于8kb。对于64KB的页面,最大行大小略小于16KB。参见第15.8.8节,InnoDB表的限制。

    如果包含可变长度列的行超过InnoDB最大行大小,InnoDB将选择可变长度列进行外部页外存储,直到该行符合InnoDB行大小限制。对于页外存储的可变长度列,本地存储的数据量因行格式而异。有关更多信息,请参见第15.11节,innodb row storage and row formats。

    不同的存储格式使用不同数量的页首和尾部数据,这会影响行的可用存储量。

    有关innodb行格式的信息,请参见第15.11节、“innodb row storage and row formats”和第15.8.3节、“innodb tables”的物理行结构。

    有关myisam存储格式的信息,请参见第16.2.3节,myisam表存储格式。

    http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

        8
  •  -2
  •   9jamkt    13 年前

    没有限制。它只取决于您的可用内存和系统最大文件大小。但这并不意味着在处理数据库中的内存使用时不应该采取预防措施。始终创建一个脚本,该脚本可以删除不使用的行,或者保留特定数字(比如1000)中的行总数。