计算机配置: Windows10 企业版 处理器: Intel(R) Core(TM) i5-7500 CPU @ 3.4GHz 3.41GHz 内存 : 16GB 系统类型: 64 位
有的界面:当数据库表中,达 1 万 6 千多数据,界面就卡了。
大家谁知道,除了优化程序代码、优化数据表查询效率外,这样的配置,能支撑多少条数据,有一范围就行
1
youxiachai 2020-05-03 21:37:40 +08:00 1
1w 多数据就卡了。。。。你这程序得多烂啊。。
看着明显内存泄漏了啊。。 |
2
youxiachai 2020-05-03 21:40:35 +08:00
不过话说回来。。。
如果硬盘不是 ssd 的话。。卡的话,其实很正常。。。 |
3
mosliu 2020-05-03 21:43:37 +08:00 1
一条数据 1k 大小 和一条数据 10M 大小完全不一样啊
|
4
Trinity888 OP @youxiachai 老兄,一般我们项目安装在阿里云服务器上,但现在这个 kh 是在一个计算机电脑上,我这程序优化、表查询索引等都优化了,如果他不听建议,硬要安装在这上面,数据量大概能支撑多少条呀?
|
5
Trinity888 OP @mosliu 普通的一条告警数据,仅文字。1 条数据很小
|
6
mosliu 2020-05-03 22:01:01 +08:00
linux ? windows ?
按 1k 一条计算 1.6w 条 mysql 放在内存里面也才 16M 算上多种索引 也就 30M? 这个数据量。感觉真的太小了。。。 建议直接把数据加进内存里面 从内存内部计算得了。。。怎么会这么慢。 |
7
dingyaguang117 2020-05-03 22:11:01 +08:00
什么叫界面就卡了?
|
8
nieqibest 2020-05-03 22:39:45 +08:00 via Android
界面卡确定是卡数据库吗?哪个语句?
|
9
PIAPIAPIA 2020-05-03 22:47:39 +08:00 via Android
接口响应 5 秒以上吗
|
10
Trinity888 OP @dingyaguang117 kh 说在他们内网访问时卡,关键我现在在本地访问速度可以。
@nieqibest 告警列表功能,打开后有个按告警类型统计、告警级别统计,下面是告警列表数据( 2 表关联) |
11
Trinity888 OP |
12
hangszhang 2020-05-03 22:55:57 +08:00
不科学,直接查库呢?跳过 server,我感觉你都没定位问题
|
13
PIAPIAPIA 2020-05-03 23:00:56 +08:00 via Android
@Trinity888 我本地 i58g,只测过 10 来万的数据,接口返回差不多 5 秒,没测并发的情况
|
15
nockyQ 2020-05-03 23:42:52 +08:00
“卡了”。这描述也太模糊了,建议先找到症结再来发帖询问。
|
16
fixend 2020-05-04 00:26:25 +08:00 via Android
这种机器,撑几千万条数据肯定没问题的,关键还是你程序怎么写的
|
17
sprite82 2020-05-04 03:29:27 +08:00 via Android
是不是客户把服务器当个人电脑使用?我第一家公司,公司配的电脑是机械盘,本地数据库,ide 启动,页面 jsp,渲染挺慢的,但是数据库如果连到其他同事电脑上就快了很多。
|
18
cian 2020-05-04 07:08:46 +08:00
设计合理 ,亿级别的数据都没问题
|
19
shakoon 2020-05-04 08:40:53 +08:00
amd athlon 240,4g ddr2 内存,十几年前的机器,现在最大的表有两千万数据,几年重启一次。总结:你的代码太烂
|
20
lg106 2020-05-04 08:54:12 +08:00
数据库用的是阿里云的 rds 吗?如果不是地址换成 127.0.0.1 看看
|
21
martinqian 2020-05-04 09:03:45 +08:00
就题主的数据类型和机器配置,100 万条那都不是事。你得先分析问题出在哪里,是网络原因(题主提到本地访问速度可以)?程序逻辑方面的原因(比如有并发就慢了很多)?数据库方面的原因(索引、关联)? API 进出打下日志看下时间耗费; MySQL 查看下日志,看一下耗时比较高的 SQL 执行花了多久,花在了哪些地方。把问题圈定在尽量小的范围内,这样才好想对策,V 友才能帮你。
|
22
Varobjs 2020-05-04 09:08:26 +08:00 via Android
8h16g,上亿数据也没卡啊
|
23
zjqzxc 2020-05-04 09:24:48 +08:00
盲猜:楼主没命中索引导致频繁扫表了
|
24
sadfQED2 2020-05-04 09:58:51 +08:00 via Android
一万多条数据,就算全表扫我觉得慢不到哪里去吧,可能根本不是数据库的问题,贴 sql ?慢日志?
|
25
xizismile 2020-05-04 10:36:12 +08:00 via Android
自己先界定一下问题的范围,你这是让人大海捞针呀
|
26
daozhihun 2020-05-04 11:04:30 +08:00
什么叫做卡了?是单条 sql 执行过长还是别的地方占了 CPU ?
你这提问不像是程序员 |
27
rogwan 2020-05-04 11:34:56 +08:00 via iPhone
毫无疑问是程序写的有问题,这机器应付这点数据量毛毛雨
|
28
angryfish 2020-05-04 17:07:27 +08:00 via iPhone
你说,你是不是偷偷在程序里写了几个 sleep,每次反馈卡就减少一个
|
29
Trinity888 OP @martinqian 您好 V 友,目前我们有个表:存的是告警数据(多个设备的告警数据,每个设备的告警用户是不同的)。
1 )告警数据是由另一个终端插入进去的; 2 )我这边是服务端: 需要查表才能知道,有新的告警数据了(且表中有原来已有的 3 种告警级别的 数据)再加上新插入的告警 3 ) 我要遍历表,才能知道:现有总共有多少条告警,紧急级别的数量是多少,一般级别的数据是多少,普通级别的数量是多少。 本人确实经验不足,也感觉 V 友们给提的建议 请问像这种的有更好的设计,能否告诉一二,会认真学习地,谢谢 |
30
Trinity888 OP @mosliu 您好 V 友,目前我们有个表:存的是告警数据(多个设备的告警数据,每个设备的告警用户是不同的)。
1 )告警数据是由另一个终端插入进去的; 2 )我这边是服务端: 需要查表才能知道,有新的告警数据了(且表中有原来已有的 3 种告警级别的 数据)再加上新插入的告警 3 ) 我要遍历表,才能知道:现有总共有多少条告警,紧急级别的数量是多少,一般级别的数据是多少,普通级别的数量是多少。 本人确实经验不足,也感觉 V 友们给提的建议 请问像这种的有更好的设计,能否告诉一二,会认真学习地,谢谢 |
31
Trinity888 OP @PIAPIAPIA 您好 V 友,目前我们有个表:存的是告警数据(多个设备的告警数据,每个设备的告警用户是不同的)。
1 )告警数据是由另一个终端插入进去的; 2 )我这边是服务端: 需要查表才能知道,有新的告警数据了(且表中有原来已有的 3 种告警级别的 数据)再加上新插入的告警 3 ) 我要遍历表,才能知道:现有总共有多少条告警,紧急级别的数量是多少,一般级别的数据是多少,普通级别的数量是多少。 本人确实经验不足,也感觉 V 友们给提的建议 请问像这种的有更好的设计,能否告诉一二,会认真学习地,谢谢 |
32
Trinity888 OP V 友们,谢谢大家回复我,我的情况具体是这样的,希望能看到的朋友,帮我看下怎么设计合理些,本人确实经验不足,也感觉 V 友们可以回复给个建议。
目前我们有个表:存的是告警数据(多个设备的告警数据,每个设备的告警用户是不同的)。 1 )告警数据是由另一个终端插入进去的; 2 )我这边是服务端: 需要查表才能知道,有新的告警数据了(且表中有原来已有的 3 种告警级别的 数据)再加上新插入的告警 3 ) 我要遍历表,才能知道:现有总共有多少条告警,紧急级别的数量是多少,一般级别的数据是多少,普通级别的数量是多少。 请问像这种的有更好的设计,能否告诉一二,会认真学习地,谢谢 |
33
luckylo 2020-05-04 22:39:27 +08:00 via Android
对于你这个,不就是 group by 一下就好了么?很好奇你是怎么实现的? select * from xx,然后一把拿到内存,然后循环在内存搞?
|
34
wqhui 2020-05-05 10:56:04 +08:00
1W 多数据正常来讲不会卡的啊,我试过查几百万数据的表,用索引查也是毫秒级的响应时间。1W 多数据就算没索引应该也用不了 1 秒,界面响应时间长就要看看每个步骤的耗时是多少了,可能是 SQL 有问题,也可能是程序有问题。看你这需求也不是很复杂的东西,根本花不了什么时间。
|
35
hbolive 2020-05-05 11:42:12 +08:00
@Trinity888 以前搞过电信设备的告警监控显示,数据量比你这个大多了,因为当时不是码代码的,所以具体表结构没去分析过,但是大概的流程知道(系统为 C/S 结构)。
有新的告警(暂且称客户端吧),直接将告警推送到某个地方(比如 MQ ),显示告警的服务端读取 MQ 数据显示并删除。客户端推数据的同时,将对应告警数据写入表。 至于显示告警列表,不管是统计各类告警的数量 count(*) where level=,还是显示告警列表,就你这个配置,几百万数据都不是问题,常规操作就是。 |
36
yinzhili 2020-05-05 17:15:25 +08:00
我觉得,你这样的硬件配置,单表 100w 条数据都不至于卡。如果卡,说明程序写得有问题。
|
37
mosliu 2020-05-06 10:34:24 +08:00
|
38
mosliu 2020-05-06 10:34:57 +08:00
电脑配置,感觉撑到百万没问题。
|
39
heavyrainn 2020-05-08 11:29:28 +08:00
遍历表?为啥要遍历表?你的告警级别应该是一个单独的字段吧?正常来说一个 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 >= ? 嘎巴一下就出来了啊
|