有一个关于数据库百万级的问题问一下

2019-03-11 12:45:45 +08:00
 13192262269
要将废卡,坏卡进行回收(要在海量(百万级)数据里进行查询,然后导出卡信息(过十万级)给制卡商,让制卡商制卡)

有没有老哥,给个好的思路方案,如何高性能实现上面要求?

公司项目说明:
1.一个手机卡资源管理系统,java 语言为主,使用 oracle 数据库
2.oracle 采用分级存储
4829 次点击
所在节点    程序员
46 条回复
0ZXYDDu796nVCFxq
2019-03-11 15:19:26 +08:00
千万级只能算小小小小小数据
smeraldo
2019-03-11 15:26:10 +08:00
@13192262269 java 导出 oom ?分批吧
iphper993
2019-03-11 15:34:32 +08:00
百万千万都是小数据啦
@13192262269 你把数据都查出来用代码处理吗?不能用条件过滤呀?
opengps
2019-03-11 15:56:55 +08:00
数据量确实不算大,难在索引上,合理的索引,搭配 SSD 提高速度,应该够用
jadec0der
2019-03-11 16:01:51 +08:00
http://www.sqlfiddle.com/

你能建个 fiddle 么,这空口说谁能给出优化建议
zarte
2019-03-11 16:29:06 +08:00
现在服务器上建索引试下,再来发帖求助。。。
Shynoob
2019-03-11 16:30:30 +08:00
百万级 如果固态的话 简单的索引 很快的
Navee
2019-03-11 16:35:20 +08:00
百万级 Mysql 处理起来小儿科
更不要谈 Oracle 了
sigup
2019-03-11 16:37:44 +08:00
百万行用 txt 读到内存里都能处理。。。
taaaang
2019-03-11 16:48:53 +08:00
固态硬盘, 索引, 你先跑一下试试再说
oneonesv
2019-03-11 16:52:59 +08:00
千万也不多啊 有个索引 10 秒足够
你一下全读内存肯定不够,追加写即可
lauix
2019-03-11 16:56:22 +08:00
建个索引 百万 跟玩一样。
Joyboo
2019-03-11 17:09:40 +08:00
百万。。我怀疑楼主少了一个“亿”字
mkeith
2019-03-11 17:41:37 +08:00
数据库 oom,还是你的程序啊?
wmhx
2019-03-11 18:25:43 +08:00
你就不会写个 for 循环分 N 次么?
wind3110991
2019-03-11 19:16:34 +08:00
上面有些回答真是要奔溃,很讨厌回答打个反问号,又不给实际解决方案和思路。。
( 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 )。

以上就是能想到的最基本的几个点。
wind3110991
2019-03-11 19:18:22 +08:00
笔误。。是 MyISAM 不是 MySiam
gz911122
2019-03-11 21:07:26 +08:00
@wind3110991 然而你说上面人回复的不对却没发现楼主根本不是 mysql...而是 oracle
百万级对于 oracle 随便搞也能在 10 秒内完成,单表
gz911122
2019-03-11 21:08:11 +08:00
@wind3110991 至于为什么不给解决方案与思路
因为楼主根本没说清楚自己的问题
jzmws
2019-03-11 21:25:23 +08:00
有什么好的 oracle 分表方案吗? 一个上亿的数据

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/543272

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX