
1 whoosy 2023-05-12 18:20:08 +08:00 做成后台任务的形式 |
2 xiaoHuaJia 2023-05-12 18:48:55 +08:00 via iPhone 采用异步任务,在采用多线程处理数据 |
3 ClericPy 2023-05-12 20:25:04 +08:00 先 trace 一下哪儿慢啊... 几十万行你放的超大 text 么, 我导出几百万也就几秒的事 另: 页面查询导出策略一般都很少用同步模型吧, 几乎都是返回一个 task id 然后等 ready 以后把文件地址给出来下载... 502 感觉是你查询太久了, 不然已经产生流量不太会 502, 顶多 60 秒把 nginx 默认超时给弄起来 |
4 调用数据库客户端直接执行命令导出。 |
5 findlisa 2023-05-12 20:36:32 +08:00 之前做过,后台线程池异步就行了,导出文件上传到服务器,加个文件下载界面,查询语句优化下,500W 我都导出过 |
6 taogen 2023-05-12 20:46:06 +08:00 数据量大,不建议实时下载 |
7 wuwukai007 2023-05-12 21:37:14 +08:00 做一个下载中心 |
8 chi1st 2023-05-12 21:47:15 +08:00 异步,文件上传到对象存储 |
9 dode 2023-05-12 22:05:19 +08:00 写成 excel ,带压缩功能,几十万也轻松 |
10 crazyweeds 2023-05-13 00:26:16 +08:00 两个方案: 1.技术方案:数据可以做分页处理(需要考虑排序稳定性),分而治之,拿到流后就能快速写入,写完了再撒手。 2.业务方案:每次导出创建一个任务后台执行,前端页面提供任务查询,完成后提供下载。(比较推荐,稳定又靠谱,但是如果真是巨量的话,需要考虑服务端内存以及限制客户端并发,避免 OOM ) |
11 opengps 2023-05-13 09:26:00 +08:00 via Android 这么大的数据量,一般方案并不是实实下载,往往采用生成后短信或者邮箱或者站内信通知下载链接已准备完成 |
12 cz5424 2023-05-13 11:50:01 +08:00 rabbitmq+celery 异步处理是的,加个轮询告诉客户导出完成,或者邮件通知 |
13 Andrew1996 2023-05-14 19:30:32 +08:00 via iPhone 异步 多线程 亲测一百万一分钟左右 |
14 sunmlight 2023-05-16 10:58:51 +08:00 几十万数据量的导出算不上大数据量。可以使用流式逐条导出为 csv 格式 |