Sybase JConnect: ENABLE_BULK_LOAD utilisation
N'importe qui peut y donner un exemple d'insertions par JConnect (avec ENABLE_BULK_LOAD
) de Sybase ASE?
Je ai parcouru l'internet et n'a rien trouvé.
OriginalL'auteur Chris Kannon | 2010-01-21
Vous devez vous connecter pour publier un commentaire.
Je suis entré en contact avec l'un des ingénieurs de Sybase et ils m'ont fourni un exemple de code. Donc, je réponds à ma propre question.
Fondamentalement, c'est un aperçu, comme le code de l'échantillon est assez grand... Ce qui suppose beaucoup de pré initialisé les variables, mais sinon, elle serait de quelques centaines de lignes. Toute personne intéressée doit obtenir l'idée. Cela peut donner jusqu'à 22K insertions une deuxième dans un monde parfait (comme par Sybase de toute façon).
Salut Stephen, oui, nous avons réussi à le faire fonctionner. Au dernier décompte, j'ai pu avec des lots autour de 50 en taille, pour presque augmenter le débit d'une grandeur par rapport ligne par ligne.
Incroyable, la performance a augmenté de 1,5 minutes, à 1 seconde!
OriginalL'auteur Chris Kannon
Afin d'obtenir l'échantillon fourni par Chris Kannon de travail, n'oubliez pas de désactiver le mode validation automatique d'abord:
Et placez la ligne suivante avant dbConn.commit():
Sinon cette technique est uniquement ralentissement de l'insertion.
OriginalL'auteur DmitryA
Après la suite de la plupart de vos conseils, nous n'avons pas vu d'amélioration par rapport à la simple création d'un massif de chaîne et de l'envoi que dans les lots de ~100-1000rows entouré d'une transaction. nous avons eu autour de:
*Grande Chaîne de la Méthode [5000rows dans 500batches]: 1716ms = ~2914rows par seconde.
(c'est de la merde!).
Notre db, est assis sur un hôte virtuel avec un CPU (i7-dessous) et le schéma de table est:
avec quatre indices sur account_transaction_id (pk), id_compte, DATE, contract_id.
Juste pensé que je pourrais poster quelques commentaires d'abord, nous nous connectons à l'aide de:
nous avons aussi essayer le .addBatch syntaxe décrite ci-dessus, mais il est légèrement plus lent que juste à l'aide de java StringBuilder pour construire le lot dans sql manuellement, puis il suffit de pousser à travers dans une instruction execute. En supprimant les noms de colonnes dans l'instruction insert nous a donné une surprise de grandes performances, il semblait être la seule chose qui en fait procédé à la performance. Comme le Enable_bulk_load param ne semblent pas à l'effet qu'il ni a la EnableBatchWorkaround nous avons également tenté de DYNAMIC_PREPARE=false qui semblait prometteur, mais aussi ne semble pas faire quoi que ce soit.
Tout obtenir de l'aide de ces paramètres de fonctionnement serait génial! En d'autres termes, y a-tests, nous avons pu exécuter pour vérifier qu'ils sont en effet? Je suis toujours convaincu que cette performance n'est pas près de repousser les limites de sybase mysql hors de la boîte n'est plus comme 16 000 lignes par seconde à l'aide de la même "chaîne de caractères à la méthode" avec le même schéma.
Cheers
Tige
OriginalL'auteur rod howard
Ne sais pas comment le faire en Java, mais vous pouvez en vrac-charger des fichiers texte avec la TABLE de CHARGEMENT de l'instruction SQL. Nous l'avons fait avec Sybase ASA plus de JConnect.
L'ENTRÉE EN est une alternative à la TABLE de CHARGEMENT, mais encore une fois, je n'ai utilisé que de l'AAS et ne sais pas si il est disponible en ASE.
OriginalL'auteur Yardena
Support pour les Mises à jour par Lot
Mises à jour par lot permettent une Déclaration de l'objet de présenter de multiples commandes de mise à jour
comme une seule unité (lot) à un sous-jacent de la base de données pour le traitement de l'ensemble.
Remarque: À utiliser les mises à jour par lots, vous devez actualiser les scripts SQL dans le répertoire sp
sous votre jConnect répertoire d'installation.
CHAPITRE
Voir BatchUpdates.java dans l'exemple de (jConnect 4.x) et sample2 (jConnect
5.x) sous-répertoires pour un exemple d'utilisation de mises à jour par lot avec la Déclaration,
PreparedStatement, et CallableStatement.
jConnect prend également en charge dynamique PreparedStatements dans le lot.
Référence:
http://download.sybase.com/pdfdocs/jcg0420e/prjdbc.pdf
http://manuals.sybase.com/onlinebooks/group-jcarc/jcg0520e/prjdbc/@ebt-link;hf=0;pt=7694?target=%25N%14_4440_START_RESTART_N%25#X
.
Autre Lot De Mise À Jour Des Ressources
http://java.sun.com/j2se/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame6.html
http://www.jguru.com/faq/view.jsp?EID=5079
OriginalL'auteur Gladwin Burboz