V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Trinity888
V2EX  ›  程序员

SpringMVC 项目, MySQL 数据库,在这种配置的机器上,最多能承受多少条数据?

  •  
  •   Trinity888 · May 3, 2020 · 4983 views
    This topic created in 2186 days ago, the information mentioned may be changed or developed.

    计算机配置: Windows10 企业版 处理器: Intel(R) Core(TM) i5-7500 CPU @ 3.4GHz 3.41GHz 内存 : 16GB 系统类型: 64 位

    有的界面:当数据库表中,达 1 万 6 千多数据,界面就卡了。

    大家谁知道,除了优化程序代码、优化数据表查询效率外,这样的配置,能支撑多少条数据,有一范围就行

    39 replies    2020-05-08 11:29:28 +08:00
    youxiachai
        1
    youxiachai  
       May 3, 2020   ❤️ 1
    1w 多数据就卡了。。。。你这程序得多烂啊。。
    看着明显内存泄漏了啊。。
    youxiachai
        2
    youxiachai  
       May 3, 2020
    不过话说回来。。。
    如果硬盘不是 ssd 的话。。卡的话,其实很正常。。。
    mosliu
        3
    mosliu  
       May 3, 2020   ❤️ 1
    一条数据 1k 大小 和一条数据 10M 大小完全不一样啊
    Trinity888
        4
    Trinity888  
    OP
       May 3, 2020
    @youxiachai 老兄,一般我们项目安装在阿里云服务器上,但现在这个 kh 是在一个计算机电脑上,我这程序优化、表查询索引等都优化了,如果他不听建议,硬要安装在这上面,数据量大概能支撑多少条呀?
    Trinity888
        5
    Trinity888  
    OP
       May 3, 2020
    @mosliu 普通的一条告警数据,仅文字。1 条数据很小
    mosliu
        6
    mosliu  
       May 3, 2020
    linux ? windows ?
    按 1k 一条计算 1.6w 条 mysql 放在内存里面也才 16M 算上多种索引 也就 30M?
    这个数据量。感觉真的太小了。。。
    建议直接把数据加进内存里面 从内存内部计算得了。。。怎么会这么慢。
    dingyaguang117
        7
    dingyaguang117  
       May 3, 2020
    什么叫界面就卡了?
    stefanaka
        8
    stefanaka  
       May 3, 2020 via Android
    界面卡确定是卡数据库吗?哪个语句?
    PIAPIAPIA
        9
    PIAPIAPIA  
       May 3, 2020 via Android
    接口响应 5 秒以上吗
    Trinity888
        10
    Trinity888  
    OP
       May 3, 2020
    @dingyaguang117 kh 说在他们内网访问时卡,关键我现在在本地访问速度可以。
    @nieqibest 告警列表功能,打开后有个按告警类型统计、告警级别统计,下面是告警列表数据( 2 表关联)
    Trinity888
        11
    Trinity888  
    OP
       May 3, 2020
    @PIAPIAPIA @nieqibest
    @dingyaguang117 我在造数据看看。就是不清楚这种配置到底多少条数据可以支撑呀,假如客户要求 100w 数据,这种配置可以吗?
    hangszhang
        12
    hangszhang  
       May 3, 2020
    不科学,直接查库呢?跳过 server,我感觉你都没定位问题
    PIAPIAPIA
        13
    PIAPIAPIA  
       May 3, 2020 via Android
    @Trinity888 我本地 i58g,只测过 10 来万的数据,接口返回差不多 5 秒,没测并发的情况
    yongjing
        14
    yongjing  
       May 3, 2020
    @PIAPIAPIA 贴 sql
    nockyQ
        15
    nockyQ  
       May 3, 2020
    “卡了”。这描述也太模糊了,建议先找到症结再来发帖询问。
    fixend
        16
    fixend  
       May 4, 2020 via Android
    这种机器,撑几千万条数据肯定没问题的,关键还是你程序怎么写的
    sprite82
        17
    sprite82  
       May 4, 2020 via Android
    是不是客户把服务器当个人电脑使用?我第一家公司,公司配的电脑是机械盘,本地数据库,ide 启动,页面 jsp,渲染挺慢的,但是数据库如果连到其他同事电脑上就快了很多。
    cian
        18
    cian  
       May 4, 2020
    设计合理 ,亿级别的数据都没问题
    shakoon
        19
    shakoon  
       May 4, 2020
    amd athlon 240,4g ddr2 内存,十几年前的机器,现在最大的表有两千万数据,几年重启一次。总结:你的代码太烂
    lg106
        20
    lg106  
       May 4, 2020
    数据库用的是阿里云的 rds 吗?如果不是地址换成 127.0.0.1 看看
    martinqian
        21
    martinqian  
       May 4, 2020
    就题主的数据类型和机器配置,100 万条那都不是事。你得先分析问题出在哪里,是网络原因(题主提到本地访问速度可以)?程序逻辑方面的原因(比如有并发就慢了很多)?数据库方面的原因(索引、关联)? API 进出打下日志看下时间耗费; MySQL 查看下日志,看一下耗时比较高的 SQL 执行花了多久,花在了哪些地方。把问题圈定在尽量小的范围内,这样才好想对策,V 友才能帮你。
    Varobjs
        22
    Varobjs  
       May 4, 2020 via Android
    8h16g,上亿数据也没卡啊
    zjqzxc
        23
    zjqzxc  
       May 4, 2020
    盲猜:楼主没命中索引导致频繁扫表了
    sadfQED2
        24
    sadfQED2  
       May 4, 2020 via Android
    一万多条数据,就算全表扫我觉得慢不到哪里去吧,可能根本不是数据库的问题,贴 sql ?慢日志?
    xizismile
        25
    xizismile  
       May 4, 2020 via Android
    自己先界定一下问题的范围,你这是让人大海捞针呀
    daozhihun
        26
    daozhihun  
       May 4, 2020
    什么叫做卡了?是单条 sql 执行过长还是别的地方占了 CPU ?
    你这提问不像是程序员
    rogwan
        27
    rogwan  
       May 4, 2020 via iPhone
    毫无疑问是程序写的有问题,这机器应付这点数据量毛毛雨
    GBdG6clg2Jy17ua5
        28
    GBdG6clg2Jy17ua5  
       May 4, 2020 via iPhone
    你说,你是不是偷偷在程序里写了几个 sleep,每次反馈卡就减少一个
    Trinity888
        29
    Trinity888  
    OP
       May 4, 2020
    @martinqian 您好 V 友,目前我们有个表:存的是告警数据(多个设备的告警数据,每个设备的告警用户是不同的)。
    1 )告警数据是由另一个终端插入进去的;
    2 )我这边是服务端: 需要查表才能知道,有新的告警数据了(且表中有原来已有的 3 种告警级别的 数据)再加上新插入的告警
    3 ) 我要遍历表,才能知道:现有总共有多少条告警,紧急级别的数量是多少,一般级别的数据是多少,普通级别的数量是多少。

    本人确实经验不足,也感觉 V 友们给提的建议
    请问像这种的有更好的设计,能否告诉一二,会认真学习地,谢谢
    Trinity888
        30
    Trinity888  
    OP
       May 4, 2020
    @mosliu 您好 V 友,目前我们有个表:存的是告警数据(多个设备的告警数据,每个设备的告警用户是不同的)。
    1 )告警数据是由另一个终端插入进去的;
    2 )我这边是服务端: 需要查表才能知道,有新的告警数据了(且表中有原来已有的 3 种告警级别的 数据)再加上新插入的告警
    3 ) 我要遍历表,才能知道:现有总共有多少条告警,紧急级别的数量是多少,一般级别的数据是多少,普通级别的数量是多少。

    本人确实经验不足,也感觉 V 友们给提的建议
    请问像这种的有更好的设计,能否告诉一二,会认真学习地,谢谢
    Trinity888
        31
    Trinity888  
    OP
       May 4, 2020
    @PIAPIAPIA 您好 V 友,目前我们有个表:存的是告警数据(多个设备的告警数据,每个设备的告警用户是不同的)。
    1 )告警数据是由另一个终端插入进去的;
    2 )我这边是服务端: 需要查表才能知道,有新的告警数据了(且表中有原来已有的 3 种告警级别的 数据)再加上新插入的告警
    3 ) 我要遍历表,才能知道:现有总共有多少条告警,紧急级别的数量是多少,一般级别的数据是多少,普通级别的数量是多少。

    本人确实经验不足,也感觉 V 友们给提的建议
    请问像这种的有更好的设计,能否告诉一二,会认真学习地,谢谢
    Trinity888
        32
    Trinity888  
    OP
       May 4, 2020
    V 友们,谢谢大家回复我,我的情况具体是这样的,希望能看到的朋友,帮我看下怎么设计合理些,本人确实经验不足,也感觉 V 友们可以回复给个建议。

    目前我们有个表:存的是告警数据(多个设备的告警数据,每个设备的告警用户是不同的)。
    1 )告警数据是由另一个终端插入进去的;
    2 )我这边是服务端: 需要查表才能知道,有新的告警数据了(且表中有原来已有的 3 种告警级别的 数据)再加上新插入的告警
    3 ) 我要遍历表,才能知道:现有总共有多少条告警,紧急级别的数量是多少,一般级别的数据是多少,普通级别的数量是多少。


    请问像这种的有更好的设计,能否告诉一二,会认真学习地,谢谢
    luckylo
        33
    luckylo  
       May 4, 2020 via Android
    对于你这个,不就是 group by 一下就好了么?很好奇你是怎么实现的? select * from xx,然后一把拿到内存,然后循环在内存搞?
    wqhui
        34
    wqhui  
       May 5, 2020
    1W 多数据正常来讲不会卡的啊,我试过查几百万数据的表,用索引查也是毫秒级的响应时间。1W 多数据就算没索引应该也用不了 1 秒,界面响应时间长就要看看每个步骤的耗时是多少了,可能是 SQL 有问题,也可能是程序有问题。看你这需求也不是很复杂的东西,根本花不了什么时间。
    hbolive
        35
    hbolive  
       May 5, 2020
    @Trinity888 以前搞过电信设备的告警监控显示,数据量比你这个大多了,因为当时不是码代码的,所以具体表结构没去分析过,但是大概的流程知道(系统为 C/S 结构)。
    有新的告警(暂且称客户端吧),直接将告警推送到某个地方(比如 MQ ),显示告警的服务端读取 MQ 数据显示并删除。客户端推数据的同时,将对应告警数据写入表。
    至于显示告警列表,不管是统计各类告警的数量 count(*) where level=,还是显示告警列表,就你这个配置,几百万数据都不是问题,常规操作就是。
    yinzhili
        36
    yinzhili  
       May 5, 2020
    我觉得,你这样的硬件配置,单表 100w 条数据都不至于卡。如果卡,说明程序写得有问题。
    mosliu
        37
    mosliu  
       May 6, 2020
    @Trinity888
    1. 建好索引
    2. 记录一个当前 id (考虑自增主键), 下次按 id 查询增加
    3. 告警条数,经常使用可以考虑单独存在另一张表里面。每次入库时更新,减少扫全表。
    mosliu
        38
    mosliu  
       May 6, 2020
    电脑配置,感觉撑到百万没问题。
    heavyrainn
        39
    heavyrainn  
       May 8, 2020
    遍历表?为啥要遍历表?你的告警级别应该是一个单独的字段吧?正常来说一个 sql 就出来的东西啊。举个例子,select count(*) as total_alert,sum(case when alert_level = '1' then 1 else 0 end) lvl1_alert,sum(case when alert_level = '2' then 1 else 0 end) lvl2_alert from your_table where timestamp >= ? 嘎巴一下就出来了啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1058 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 98ms · UTC 22:35 · PVG 06:35 · LAX 15:35 · JFK 18:35
    ♥ Do have faith in what you're doing.