Heim  >  Artikel  >  Datenbank  >  Was soll ich tun, wenn die SQL-Abfrage zu viele Daten enthält und der Speicher überläuft?

Was soll ich tun, wenn die SQL-Abfrage zu viele Daten enthält und der Speicher überläuft?

(*-*)浩
(*-*)浩Original
2019-10-28 09:53:497017Durchsuche

Normalerweise wird diese Situation nicht auftreten, es gibt jedoch keine Garantie, dass diese Situation gelegentlich auftreten wird:

Was soll ich tun, wenn die SQL-Abfrage zu viele Daten enthält und der Speicher überläuft?

Verwenden Sie Paging-Abfrageanweisungen. (Empfohlenes Lernen: MySQL-Lernen )

Da die Paging-Abfrage jedes Mal nur eine kleine Datenmenge abfragt, beansprucht sie nicht zu viel Speicher und die Menge Die Datenmenge ist groß. Manchmal sparen Paging-Abfragen etwas Zeit.

String sql = " SELECT uid,uname  FROM t_user LIMIT ?,? " ;
        PreparedStatement  ps = con.prepareStatement(sql) ;
        int pageSize = 10000; 
        int pageId = 0; 
        do { 
            pst.setInt(1, pageId * pageSize); 
            pst.setInt(2, pageSize); 
            ResultSet rs = pst.executeQuery();

            boolean isEmpty = true; 
            while (rs.next()) { 
                 isEmpty = false; 
                 id = rs.getInt(1); 
                 name = rs.getString(2); 
            } 
            if (isEmpty) { 
                break; 
            } 
            pageId++; 
        } while (true); 
        con.close(); 
    } catch (SQLException e) { 
        e.printStackTrace(); 
    }

URL-Parameterkonfiguration hinzufügen

Fügen Sie zwei Parameter zur JDBC-URL hinzu, dann ist alles in Ordnung und das Speicherüberlaufproblem wird erfolgreich gelöst.

"jdbc:mysql://localhost:3306/db3?useCursorFetch=true&defaultFetchSize=100";

( Erklären Sie Fetch: Wenn wir eine SQL-Abfrageanweisung ausführen, müssen wir einen Cursor sowohl auf dem Client als auch auf dem Server öffnen und jeweils einen Speicherplatz zum Speichern der Abfragedaten beantragen . Ein Puffer. Die Anzahl der in diesem Speicherbereich gespeicherten Daten wird durch fetchsize bestimmt. Gleichzeitig werden fetchsize-Datensätze an den Client übertragen

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die SQL-Abfrage zu viele Daten enthält und der Speicher überläuft?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:db2 Feldlänge ändernNächster Artikel:db2 Feldlänge ändern