常见需求开发解决方案与思路
Dao层
如何查询千万数据量:
- 查询大数据量用途:
①迁移数据
②导出数据
③批量处理数据 - 查询大数据量方式:
①常规查询,一次性读取 500w 数据到 JVM 内存中,或者分页读取
②流式查询,建立长连接,利用服务端游标,每次读取一条加载到 JVM 内存
③游标查询,和流式一样,通过 fetchSize 参数,控制一次读取多少条数据 - 常规查询:
①假设单表 500w 数据量,没有人会一次性加载到内存中,一般会采用分页的方式。因为将全部数据一次性查询到内存中的话数据量太大会爆掉内存。
②上述方式比较简单,但是在不考虑LIMIT 深分页优化
情况下,线上数据库服务器就凉了,亦或者你能等个几天时间检索数据。
@SneakyThrows
@Override
public void pageQuery() {
@Cleanup Connection conn = dataSource.getConnection();
@Cleanup Statement stmt = conn.createStatement();
long start = System.currentTimeMillis();
long offset = 0;
int size = 100;
while (true) {
String sql = String.format("SELECT