avo*_*rma 15 mysql innodb scalability rows max
注意:我在这里搜索过其他类似的Q,并且没有其他回答的问题甚至是远程相似的......有了这个...
我有一个关于MySql表的问题(更准确地说,来自表中的特定字段 - 即tweets或者updates).
那么问题是:InnoDB表上的最大行数是多少?也就是说,如果MyIsam,InnoDB和其他人可以持有的金额之间存在很大差异,那么一般来说,如果没有.其次,如果表格变得非常大,那么存储数据的最佳实践是什么(相同的一个表格,还是分割/多个表格/ dbs)?
我读到Twitter每天都有1亿条推文.在同样的背景下,我的第二个问题如何适用于像twitter这样的东西?
900*_*000 15
http://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html将允许您根据密钥大小计算限制.
但我谦虚地建议您不要在具有参照完整性和InnoDB的其他功能的事务引擎中存储推文等信息,并且您绝对不会将它们全部存储在单个数据库实例中的一个表中.您将它们放入许多独立的非SQL数据库中,这些数据库允许您快速追加,然后将元信息(如主题标签,RT等)提取到更复杂的数据库中.关于Twitter数据库架构的演示文稿很容易谷歌(例如http://www.slideshare.net/nkallen/q-con-3770885).
如果您必须在一个表中存储大量数据,则分区是您的朋友,并且Postgres可能更好地支持它.分区表实际上是几个逻辑上看起来像一个表的表.您将这些子表(分区)放在不同的磁盘上,独立地对它们进行维护等.此外,"星型模式"包含一个非常长的表,其中只包含必要的列和许多存储较大但可选列的表救命.
表的 64TB 限制有以下例外:
innodb_page_size = 16K(默认)。这可以设置为 4K 和 64K 之间的 2 的幂,按比例更改表空间限制。PARTITIONed表本质上是一堆“子表”组织在一起并充当一个大表。5.6.7 之前的分区数限制是 1024。之后是 8192。所以乘以 64TB。好的,那只会给你一个字节限制。此外,它还包括开销和索引。然后,您需要除以平均记录的大小以获得最大行数。
(计算平均记录大小并不容易。)
简单回答:
您可能可以轻松地在 InnoDB 表中获得 1 万亿条“小”记录。通过一些努力,您可能会达到 1000 万亿。但我怀疑在此之前您的磁盘驱动器预算会耗尽。此外,完成所有这些工作需要数年时间INSERTs才能填满它!
所以,现实的答案:MySQL 可以处理“无限”数量的行。
现实生活?我听说过一些表的行数超过 10 亿,甚至高达 150 亿。
见我的限制,但它没有说更多关于行的问题。
| 归档时间: |
|
| 查看次数: |
39965 次 |
| 最近记录: |