Bonjour,
Je suis entraint de faire des tests sur PostgreSQL et j'essaie de comprendre pourquoi postgre est 6 fois plus long que MySQL et 4 fois plus long que H2.
Le test est réalisé en java (+JDBC), et consiste à envoyer 86400 lignes sur 300 tables (Une ligne est composé de 2 colonnes, BIGINT PRIMARY KEY et DOUBLE PRECISION).
Ce sont 4 Threads qui sont chargés d'exécuter les INSERT dans des requêtes préparées (prepareStatement)le code est plus bas.
J'ai lu http://www.postgresql.org/docs/8.1/s...me-config.html pour pouvoir modifier certain paramètre du serveur mais j'ai ne sais pas quel paramètres pourront avoir un impact sur les perfs pendant l'insert.
Si vous pouvez m'orienter pour rendre ma requêtes plus rapide.
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 @Override public void run() { double value = 0; int insertNb = 50; String query = "INSERT INTO Table%d VALUES"; for( int i = 0; i < insertNb; ++i ) { query += "(?, ?),"; } query = query.substring( 0, query.length() - 1 ); try { Connection conn = DriverManager.getConnection( dbURL ); while( begin++ != end ) { long time = System.currentTimeMillis(); PreparedStatement stat = conn.prepareStatement( String.format( query, begin ) ); int count = 3600 * 24; //second dans une heure * heure * jours while( count > 0 ) { int index; for( int i = 1; i <= insertNb; ++i ) { index = i * 2; stat.setLong( index - 1, count-- ); stat.setDouble( index, value += 0.5 ); } stat.executeUpdate(); } } conn.close(); } catch( SQLException ex ) { Logger.getLogger( Main.class.getName() ).log( Level.SEVERE, null, ex ); } }
Partager