@echo désactivé
cls
définir CLASSPATH=../api/jogre.jar
définissez CLASSPATH=%CLASSPATH%;.
set CLASSPATH=%CLASSPATH%;classes
définir CLASSPATH=%CLASSPATH%;lib/dom4j.jar
java org.jogre.server.JogreServer
Créer un tableau
Copiez le code comme suit :
créer une base de données con_test ;
utilisez con_test ;
créer un test de table (id int non nul, txt varchar (70), clé primaire (id), index (id));
Juste deux champs, identifiant plus index.
Utilisez un programme Java pour parcourir la table 100 000 fois afin d'insérer des enregistrements, l'identifiant (nombre de boucles) et le contenu (cet enregistrement est le =xx)
InsérerTestMysql.java
Copiez le code comme suit :
importer java.lang.* ;
importer java.sql.* ;
classe publique InsertTestMysql{
public static void main(String [] arguments){
java.util.Date now_start = new java.util.Date();
long start_time=now_start.getTime();
int st = 100 000 ;
Chaîne str,info ;
Chaîne db="org.gjt.mm.mysql.Driver";
Chaîne hôte="jdbc:mysql://192.168.1.35/test";
Chaîne user="root";
Chaîne passwd="root";
Connexion con=null ;
essayer{
Class.forName(db).newInstance();
}
attraper(Exception e){
System.out.println("Échec du chargement du pilote :"+db);
}
essayer{
con=DriverManager.getConnection(hôte,utilisateur,passwd);
con.setAutoCommit(false);//Désactiver la soumission automatique des transactions
pour (int i=1;i<=st;i++){
info = "Cet enregistrement est le =";
info = info.concat(java.lang.Integer.toString(i));
str = "insérer dans les valeurs de test (id,txt) (?,?);";
PreparedStatement pstmt = con.prepareStatement(str);
pstmt.setInt(1,i);
pstmt.setString(2,info);
pstmt.executeUpdate();
}
con.commit();//Une fois l'instruction exécutée, soumettez cette transaction
con.close();
}
capture (Exception e) {
System.out.println(e);
}
java.util.Date now_end = new java.util.Date();
long end_time=now_end.getTime();
long use_time=end_time-start_time ;
System.out.println("<<---La génération de cette page a pris ["+use_time+"] millisecondes ("+((double)use_time)/1000+" secondes)--->>");
System.out.println("/n<<---Un total d'enregistrements insérés "+st+"-->>");
}
}
Les performances sont différentes selon les différentes versions de jdbc.
jdbc 3.1.7, 12770,12778 Lorsque ce numéro est inséré, le programme se termine et la langue chinoise est normale.
jdbc 3.1.12 12000 Lorsque ce numéro est inséré, le programme se termine et le chinois est normal.
Les invites suivantes s'affichent :
"Exception dans le thread "main" java.lang.OutOfMemoryError : espace de tas Java"
"Java Heap Space Error" peut être dû au fait que ma machine ne dispose pas de suffisamment de mémoire. Mais c'est normal lors de l'utilisation de jdbc de la série 3.10.
jdbc 3.0.16-ga 100 000 enregistrements sont normaux et le chinois est normal.
jdbc 3.0.10 a enregistré avec succès 100 000 enregistrements, mais contenait des erreurs en chinois.
En utilisant jdbc série 3.1, une fois le programme exécuté, la mémoire physique restante de la machine devient rapidement 40xx Ko.
Cela peut être dû au fait que la série jdbc3.1 nécessite une mémoire importante et que ma machine n'a pas suffisamment de mémoire.
Je vais le tester demain sur la machine AMD64 512M RAM de mon camarade de classe.
jdbc 3.0.16-ga est le seul qui est normal. Les résultats des tests sont :
Copiez le code comme suit :
D:/Program Files/test/db_test>java InsertTestMysql
<<---La génération de cette page prend [98582] millisecondes (98,582 secondes)--->>
<<---Un total de 100 000 enregistrements ont été insérés-->>
Je l'ai testé à nouveau il y a quelques jours, en utilisant le jdts jdbc open source pour me connecter au serveur ms-sql 2000 sp3. Les autres sont les mêmes que ci-dessus, et les résultats des tests sont terribles :
Copiez le code comme suit :
D:/dev/java/src/ts/Ms-Sql>java InsertTestMssql
<<---La génération de cette page a pris [1746681] millisecondes (1746,681 secondes)--->>
<<---Un total de 100 000 enregistrements ont été insérés-->>
1 23Lire le texte intégral à la page suivante