常见需求开发解决方案
Posted GeorgeLin98
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见需求开发解决方案相关的知识,希望对你有一定的参考价值。
常见需求开发解决方案
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 COLUMN_A, COLUMN_B, COLUMN_C FROM YOU_TABLE LIMIT %s, %s", offset, size);
@Cleanup ResultSet rs = stmt.executeQuery(sql);
long count = loopResultSet(rs);
if (count == 0) break;
offset += size;
log.info(" 分页查询耗时 :: ", System.currentTimeMillis() - start);
以上是关于常见需求开发解决方案的主要内容,如果未能解决你的问题,请参考以下文章
?需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?
需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?