1
13192262269 OP 有没有老哥,给个好的思路?愁死我了
|
2
dangyuluo 2019-03-11 12:58:09 +08:00
你也不说数据库结构,有没有健可以利用,或者是根据什么进行查询。给不出建议。
|
3
dangyuluo 2019-03-11 12:58:22 +08:00
健 => 键
|
4
ilyh 2019-03-11 13:02:55 +08:00 2
百万怎么也称不上海量... 随便什么数据库都能 hold 住吧...
|
5
kxjhlele 2019-03-11 13:04:34 +08:00 via Android
百万随便查询一下就出来了吧,数据量也不大
|
6
ysweics 2019-03-11 13:13:08 +08:00
要相信 oracle 的能力
|
7
13192262269 OP |
8
cholerae 2019-03-11 13:17:09 +08:00
原来百万级就是海量了
起码定义下你说的高性能是多高吧 |
9
hellojinjie 2019-03-11 13:19:24 +08:00
你要说明你的查询要在多少时间内完成啊?
如果只要在十秒内完成的话,不是很简单的事情嘛? |
10
13192262269 OP @cholerae #8 部门要求是,秒查出来想要的几十万信息,我想问一下,如何做到 ,菜鸟一枚请教一下
|
11
13192262269 OP @hellojinjie #9 十秒内可以接受
|
12
thesharjah 2019-03-11 13:24:17 +08:00
直接写 sql 查就行了 10s,扫个全表够了
|
13
jingxyy 2019-03-11 13:26:00 +08:00 1
千万级只要索引建得合理也是妥妥的,用在 oltp 业务上都没啥问题,更合况你这听起来更像是 olap 业务,如果确实是 olap (比如制卡商一天查一次,不需要实时),那就更容易了,每天在旧表跑一遍过滤出结果放新表里,让查询请求查新表。
这个数据对于商业数据库来说真不算什么,你要不先用直接的思路试试,看看能不能达到要求,如果不能把问题说一下(比如用了 10 秒,你希望 1 秒以内,或者机器查不出来内存爆了之类的),具体的操作说一下(比如表的 schema,查询使用的 sql )大家才好帮你研究瓶颈在哪以及解决方案。 |
14
13192262269 OP @thesharjah #12 @jingxyy #13 我这边扫到 67 万就出现了 out of memory 已经设置最大内存
|
15
jingxyy 2019-03-11 13:32:08 +08:00
方便直接上代码么 关键字段脱个敏啥的 你现在说的完全没法定位问题= =
|
16
blless 2019-03-11 14:57:26 +08:00 via Android
几十 W 数据是带宽跟 IO 问题了吧…
|
17
JamesR 2019-03-11 15:02:02 +08:00
才区区百万级,搞笑,不行把数据导入到性能好的本机台式电脑上再处理。
|
18
no1xsyzy 2019-03-11 15:12:02 +08:00
百万级不是 Excel 都能处理?
|
19
1762628386 2019-03-11 15:13:27 +08:00
没啥问题 不加索引都没问题
|
20
daozhihun 2019-03-11 15:16:11 +08:00 via Android
百万级直接关系数据库加索引就行了
|
21
0ZXYDDu796nVCFxq 2019-03-11 15:19:26 +08:00 via Android
千万级只能算小小小小小数据
|
22
smeraldo 2019-03-11 15:26:10 +08:00
@13192262269 java 导出 oom ?分批吧
|
23
iphper993 2019-03-11 15:34:32 +08:00
百万千万都是小数据啦
@13192262269 你把数据都查出来用代码处理吗?不能用条件过滤呀? |
24
opengps 2019-03-11 15:56:55 +08:00 via Android
数据量确实不算大,难在索引上,合理的索引,搭配 SSD 提高速度,应该够用
|
25
jadec0der 2019-03-11 16:01:51 +08:00
|
26
zarte 2019-03-11 16:29:06 +08:00
现在服务器上建索引试下,再来发帖求助。。。
|
27
Shynoob 2019-03-11 16:30:30 +08:00
百万级 如果固态的话 简单的索引 很快的
|
28
Navee 2019-03-11 16:35:20 +08:00
百万级 Mysql 处理起来小儿科
更不要谈 Oracle 了 |
29
sigup 2019-03-11 16:37:44 +08:00
百万行用 txt 读到内存里都能处理。。。
|
30
taaaang 2019-03-11 16:48:53 +08:00
固态硬盘, 索引, 你先跑一下试试再说
|
31
oneonesv 2019-03-11 16:52:59 +08:00
千万也不多啊 有个索引 10 秒足够
你一下全读内存肯定不够,追加写即可 |
32
lauix 2019-03-11 16:56:22 +08:00
建个索引 百万 跟玩一样。
|
33
Joyboo 2019-03-11 17:09:40 +08:00
百万。。我怀疑楼主少了一个“亿”字
|
34
mkeith 2019-03-11 17:41:37 +08:00 via iPhone
数据库 oom,还是你的程序啊?
|
35
wmhx 2019-03-11 18:25:43 +08:00
你就不会写个 for 循环分 N 次么?
|
36
wind3110991 2019-03-11 19:16:34 +08:00 2
上面有些回答真是要奔溃,很讨厌回答打个反问号,又不给实际解决方案和思路。。
( 1 )要理解 Mysql 恰恰就是适合处理百 /千万级别以下的数据量; ( 2 )检查你的表是什么存储引擎的,是 InnobDB 还是 Mysiam。查询效率上 Mysiam 支持全文索引,查询时性能也要强于 InnobDB,如果你们的数据是一次性的导入,基本都是批量更新的话,可以使用 Mysiam。但是如果更新的比较频繁的话,且要使用事务时,考虑使用 InnobDB。 ( 3 )对于慢查询问题:show create table, 查看你表当前的索引,并且是否有主键。看你的情景,是要在百万中选出坏的,那么大致会有状态字段,看一下这个字段是否是作为单列索引存在于你的表中,如果没有,新建一个同样的表,加上索引,然后把数据拷贝过去,然后变更换表(千万不要在老表加索引,容易导致雪崩)。 ( 4 )上 10W 数据的表,如果有频繁删除和更新,一定要记得定期做表的优化,Mysiam 的表可以用 optimize,InnobDB 的表用 ALTER TABLE table_name ENGINE = Innodb。因为表在删除数据必然会在数据文件中造成不连续的空白空间,而当再次插入数据时,这些空白空间则会被利用起来,数据的存储位置会不连续,导致大量空间碎片。因此要定期做表优化。 ( 5 )查看 DB 机器机型和配置,是否性能不足是机器配置不够高导致的,数据库操作的性能主要瓶颈在于 I/O。 ( 6 )尽量给 DB 做主从和集群( MariaDB )。 以上就是能想到的最基本的几个点。 |
37
wind3110991 2019-03-11 19:18:22 +08:00
笔误。。是 MyISAM 不是 MySiam
|
38
gz911122 2019-03-11 21:07:26 +08:00
@wind3110991 然而你说上面人回复的不对却没发现楼主根本不是 mysql...而是 oracle
百万级对于 oracle 随便搞也能在 10 秒内完成,单表 |
39
gz911122 2019-03-11 21:08:11 +08:00
@wind3110991 至于为什么不给解决方案与思路
因为楼主根本没说清楚自己的问题 |
40
jzmws 2019-03-11 21:25:23 +08:00
有什么好的 oracle 分表方案吗? 一个上亿的数据
|
42
wangluofansi 2019-03-11 22:47:02 +08:00
给你几个建议:
out of memory 从两方面优化:①只查询所需字段而不是 select *,如 select card_info from card_table ;②分批,假设每次查询一万条记录,如果有自增 id,那么可以这样查询,select id, card_info from card_table where id > last_id limit 10000,其中 last_id 是上次查询出来的最大 id ; 索引方面优化:这个本来需要根据表结构和查询条件来,但是可以先简单粗暴地对 where 涉及字段建索引,explain 一下看看效果。 |
43
beggarvip 2019-03-11 22:56:01 +08:00 via Android
几百万导内存里,自建数据结构,哈希,或堆,或建树...等等,几十万查询,应该在一秒内
|
44
wangluofansi 2019-03-11 22:56:22 +08:00 via Android
对了,分批的时候需要 order by id
|
45
hhhzccc 2019-03-12 10:38:58 +08:00
直接写 sql 干起来!
|
46
moxunpw 2019-03-12 10:56:43 +08:00
百万的数据,没啥压力吧。。。我现在 3000w+数据用 MySQL 查 SQL 也好好的。。。
|