常见需求开发解决方案

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);

以上是关于常见需求开发解决方案的主要内容,如果未能解决你的问题,请参考以下文章

常见需求开发解决方案与思路

?需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?

需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?

开发常见需求之js处理url汉字编码中的乱码

需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?

需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?