java如何读取1千万级别的数据
答案:1 悬赏:20 手机版
解决时间 2021-03-25 23:12
- 提问者网友:一抹荒凉废墟
- 2021-03-25 05:10
java如何读取1千万级别的数据
最佳答案
- 五星知识达人网友:老鼠爱大米
- 2021-03-25 05:38
如果数据很庞大的情况,估计没有人会直接使用
select * from table ;
select * from table limit 1000000;12
之类的SQL语句,这样的操作别说数据库的操作很慢了,在网络IO传输也是一个很大的问题,
把一千万的数据读取出来在网络进行传输,这样性能消耗也会有瓶颈。
所以,读取大批量的数据一般都是采用分批次的读取方式。
(一)通过测试,一万条数据一次性读取出来所花费的时间要比分十次,每次读1千数据的速度要慢很多。
(二),主键是uuid,可以进行排序,利用排序和比较值的大小来分批读取数据。
SELECt * FROM `kw_seo_keyword` as t
WHERe t.id > '31baf874-0fc5-4bb0-82ff-7bc77c6b63f5'
ORDER BY t.id
LIMIT 10001234
每一次,读取一千条数据,然后取这一千条数据的有序集合的最后一条数据的id,在进行大小的比较。如此反复,直到数据读取完为止。
(三),安全性的考虑,执行上千万的数据,有时候程序出现异常,结果修改异常后再重新这上千万的数据,那就太蛋疼了。所以我们分批次处理数据的时候。
比如说,我们每次读取一千条数据,等集合的数据超过100万的时候,就处理数据,然后通过一个redis的key来保存最后一次的id。
select * from table ;
select * from table limit 1000000;12
之类的SQL语句,这样的操作别说数据库的操作很慢了,在网络IO传输也是一个很大的问题,
把一千万的数据读取出来在网络进行传输,这样性能消耗也会有瓶颈。
所以,读取大批量的数据一般都是采用分批次的读取方式。
(一)通过测试,一万条数据一次性读取出来所花费的时间要比分十次,每次读1千数据的速度要慢很多。
(二),主键是uuid,可以进行排序,利用排序和比较值的大小来分批读取数据。
SELECt * FROM `kw_seo_keyword` as t
WHERe t.id > '31baf874-0fc5-4bb0-82ff-7bc77c6b63f5'
ORDER BY t.id
LIMIT 10001234
每一次,读取一千条数据,然后取这一千条数据的有序集合的最后一条数据的id,在进行大小的比较。如此反复,直到数据读取完为止。
(三),安全性的考虑,执行上千万的数据,有时候程序出现异常,结果修改异常后再重新这上千万的数据,那就太蛋疼了。所以我们分批次处理数据的时候。
比如说,我们每次读取一千条数据,等集合的数据超过100万的时候,就处理数据,然后通过一个redis的key来保存最后一次的id。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯