查看原文
其他

MySQL一张表最多能存多少数据?

程序猿DD 2022-05-19

MySQL本身并没有对单表最大记录数进行限制,这个数值取决于你的操作系统对单个文件的限制本身。业界流传是500万行。超过500万行就要考虑分表分库了。

阿里巴巴《Java 开发手册》提出单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。

一个简单的 test

通过循环给表中插入数据,记录插入条数,并输出到控制台。

结果:

private static void insertDataDemo() {
  DButil dButil = new DButil();
  myCon = dButil.getConnection();
  try {
   int i = 0;
   while(1==1) {
    i++;
    String sql = "insert into users (user_name,user_password)"
      + " value ('"+i+"','password')";
    sta = myCon.createStatement();
    sta.execute(sql);
    System.out.println(i);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }finally {
   dButil.close();
  }
 }

经过一晚上的运行,早晨发现已经插入了两百多万条数据, 尽管还可以插入数据,但通过控制台台输出发现插入数据的速度相对来说慢了很多,隔2-3秒插入一条,这速度是不能忍受的。

事实上,MySql数据库一张表中能存储的最大数据量和实际记录的条数无关,而与 MySQL 的配置以及机器的硬件有关。因为,MySQL 为了提高性能,会将表的索引装载到内存中。InnoDB buffer size 足够的情况下,其能完成全加载进内存,查询不会有问题。

但是,当单表数据库到达某个量级的上限时,导致内存无法存储其索引,使得之后的 SQL 查询会产生磁盘 IO,从而导致性能下降。当然,这个还有具体的表结构的设计有关,最终导致的问题都是内存限制。

来源:blog.csdn.net/weixin_40307206/article/details/105158912



------
我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。另外,如果你最近想跳槽的话,年前我花了2周时间收集了一波大厂面经,节后准备跳槽的可以点击这里领取

推荐阅读

··································

你好,我是程序猿DD,10年开发老司机、阿里云MVP、腾讯云TVP、出过书创过业、国企4年互联网6年。从普通开发到架构师、再到合伙人。一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你能坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。

点击领取2022最新10000T学习资料

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存