公司项目没人带 只能自己摸索 来问大佬们一个问题

2018-03-11 10:42:57 +08:00
 Linxing
公司做的是一个交易系统后台信息的展示 交易量每个月大概会有几百万笔 不排除后期会有几千万条记录甚至上亿的交易记录 目前几十万笔交易的查询展示我都觉得还好 把 sqlalchemy 查到的 resultset 遍历一遍 放到一个列表中 然后转换成 json 返回给前台 用 jq 的 datatables 的去展示 但是如果几千万条的记录 我中间要怎么处理吗 程序卡在了把结果集放到列表的这个过程中 求大佬们指教下 没写过这么大数据量的东西
2083 次点击
所在节点    Python
4 条回复
loongwang
2018-03-11 12:46:24 +08:00
不做分页吗
xpresslink
2018-03-11 14:32:24 +08:00
说心理话没明白你的需求。
使用的数据库的原则就是,尽量减小 IO 交互。
方案一、一次性把要用的数据全部取出,放在内存缓存,以后不再访问数据库。
方案二、每次只取用到的最小集合。

为了支持方案二,所有数据库都支持 where 子句和 limit 语法。
select * from table limit m,n
其中 m 是指记录开始的 index,从 0 开始,表示第一条记录
n 是指从第 m+1 条开始,取 n 条。

在常见 ORM 中:
SA 用的是.filter().limit().offset() 来实现对应的 SQL
Django 的 ORM 更简洁一些,Model.objects.filter()[m:n]
Linxing
2018-03-11 16:11:16 +08:00
@loongwang sqlalchemy 执行 SQL 语句生成的 RowProxy 要自己写分页吧??
Linxing
2018-03-11 16:12:53 +08:00
@xpresslink 研究了大半天 我大概摸清套路了

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

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

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

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

© 2021 V2EX