Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Obsługa dużych rekordów w aplikacji Java EE

Najlepiej nie przechowuj dane w pamięci Javy w dowolny sposób, ale po prostu zapisz uzyskane dane w odpowiedzi natychmiast w miarę napływania danych. Należy również skonfigurować sterownik MySQL JDBC do obsługi wyników wiersz po wierszu przez Statement#setFetchSize() zgodnie z dokumentacją sterownika MySQL JDBC , w przeciwnym razie zapisze całość w pamięci.

Zakładając, że znasz serwlety, oto przykład wprowadzający, który uwzględnia to wszystko:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/plain");
    response.setHeader("Content-Disposition", "attachment;filename=numbers.txt"); // Force download popup.

    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
    Writer writer = response.getWriter();

    try {
        connection = database.getConnection();
        statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        statement.setFetchSize(Integer.MIN_VALUE);
        resultSet = statement.executeQuery("SELECT number FROM phonenumbers");

        while (resultSet.next()) {
            writer.write(resultSet.getString("number"));
            if (!resultSet.isLast()) {
                writer.write(",");
            }
        }
    } catch (SQLException e) {
        throw new ServletException("Query failed!", e);
    } finally { 
        if (resultSet != null) try { resultSet.close; } catch (SQLException logOrIgnore) {}
        if (statement != null) try { statement.close; } catch (SQLException logOrIgnore) {}
        if (connection != null) try { connection.close; } catch (SQLException logOrIgnore) {}
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL usuwa niektóre klucze obce

  2. Najlepsze praktyki dotyczące przechowywania nazw użytkowników i haseł w bazach danych MySQL

  3. Zaktualizuj wszystkie wartości kolumny do małych liter

  4. Czy klucze podstawowe bazy danych muszą być liczbami całkowitymi?

  5. Zapytanie MySQL działające w phpmyadmin, ale nie w php