J'ai un programme qui cr=E9e une m=E9moire tampon et qui au bout d'un
moment veut la vider... il s'agit de triplets (a1, a2, val) d'entiers
pour simplifier... et pour le cot=E9 pas simple, ils sont de l'ordre de
plusieurs centaines de milliers...
Quand mon ptit prog java fait ca en JDBC, il aime pas les 1000000
insert successifs... pire, quand ce sont des updates ou je veux
ajouter =E0 la 3ieme valeur du triplet la nouvelle valeur...
Du coup, je cherche un moyen de faire ca vite et je me pose la
question suivante :
- est il possible de passer par un fichier, et faire une sorte de
loaddata qui est tr=E8s rapide en pr=E9cisant que :
- si (a1,a2) est pr=E9sent, alors il faut ajouter la nouvelle valeur
- si le couple est absent il faut ajouter le triplet avec la meme
valeur....
- sinon, en faisant un loaddata de ce fichier dans une table
temporaire et en rajoutant des updates, pensez vous que je vais y
gagner du temps ?
- avez vous d'autres suggestions ?
sinon, quand je fais des d=E9l=E9tions de tuples, c'est plutot lent... des
id=E9es autre que d=E9sactiver les index ?
Merci !
NB : je suis sous MySQL, mais si la solution pouvait =EAtre portable =E0
PG module quelques diff=E9rences de codes uniquement, ca serait un
plus ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
mordicus
Pif wrote:
Bonjour...
J'ai un programme qui crée une mémoire tampon et qui au bout d'un moment veut la vider... il s'agit de triplets (a1, a2, val) d'entiers pour simplifier... et pour le coté pas simple, ils sont de l'ordre de plusieurs centaines de milliers...
Quand mon ptit prog java fait ca en JDBC, il aime pas les 1000000 insert successifs... pire, quand ce sont des updates ou je veux ajouter à la 3ieme valeur du triplet la nouvelle valeur...
Du coup, je cherche un moyen de faire ca vite et je me pose la question suivante :
- est il possible de passer par un fichier, et faire une sorte de loaddata qui est très rapide en précisant que : - si (a1,a2) est présent, alors il faut ajouter la nouvelle valeur - si le couple est absent il faut ajouter le triplet avec la meme valeur....
- sinon, en faisant un loaddata de ce fichier dans une table temporaire et en rajoutant des updates, pensez vous que je vais y gagner du temps ?
- avez vous d'autres suggestions ?
sinon, quand je fais des délétions de tuples, c'est plutot lent... des idées autre que désactiver les index ?
Merci !
NB : je suis sous MySQL, mais si la solution pouvait être portable à PG module quelques différences de codes uniquement, ca serait un plus ...
Salut,
Il faudrait peut être un peu plus d'infos...
a1 et a2 c'est quoi ? des integer ? des varchar ou plutôt char(quelque chose) ? de meme pour val
Cela prends combien de temps avec MySQL ?
Pif wrote:
Bonjour...
J'ai un programme qui crée une mémoire tampon et qui au bout d'un
moment veut la vider... il s'agit de triplets (a1, a2, val) d'entiers
pour simplifier... et pour le coté pas simple, ils sont de l'ordre de
plusieurs centaines de milliers...
Quand mon ptit prog java fait ca en JDBC, il aime pas les 1000000
insert successifs... pire, quand ce sont des updates ou je veux
ajouter à la 3ieme valeur du triplet la nouvelle valeur...
Du coup, je cherche un moyen de faire ca vite et je me pose la
question suivante :
- est il possible de passer par un fichier, et faire une sorte de
loaddata qui est très rapide en précisant que :
- si (a1,a2) est présent, alors il faut ajouter la nouvelle valeur
- si le couple est absent il faut ajouter le triplet avec la meme
valeur....
- sinon, en faisant un loaddata de ce fichier dans une table
temporaire et en rajoutant des updates, pensez vous que je vais y
gagner du temps ?
- avez vous d'autres suggestions ?
sinon, quand je fais des délétions de tuples, c'est plutot lent... des
idées autre que désactiver les index ?
Merci !
NB : je suis sous MySQL, mais si la solution pouvait être portable à
PG module quelques différences de codes uniquement, ca serait un
plus ...
Salut,
Il faudrait peut être un peu plus d'infos...
a1 et a2 c'est quoi ? des integer ? des varchar ou plutôt char(quelque
chose) ?
de meme pour val
J'ai un programme qui crée une mémoire tampon et qui au bout d'un moment veut la vider... il s'agit de triplets (a1, a2, val) d'entiers pour simplifier... et pour le coté pas simple, ils sont de l'ordre de plusieurs centaines de milliers...
Quand mon ptit prog java fait ca en JDBC, il aime pas les 1000000 insert successifs... pire, quand ce sont des updates ou je veux ajouter à la 3ieme valeur du triplet la nouvelle valeur...
Du coup, je cherche un moyen de faire ca vite et je me pose la question suivante :
- est il possible de passer par un fichier, et faire une sorte de loaddata qui est très rapide en précisant que : - si (a1,a2) est présent, alors il faut ajouter la nouvelle valeur - si le couple est absent il faut ajouter le triplet avec la meme valeur....
- sinon, en faisant un loaddata de ce fichier dans une table temporaire et en rajoutant des updates, pensez vous que je vais y gagner du temps ?
- avez vous d'autres suggestions ?
sinon, quand je fais des délétions de tuples, c'est plutot lent... des idées autre que désactiver les index ?
Merci !
NB : je suis sous MySQL, mais si la solution pouvait être portable à PG module quelques différences de codes uniquement, ca serait un plus ...
Salut,
Il faudrait peut être un peu plus d'infos...
a1 et a2 c'est quoi ? des integer ? des varchar ou plutôt char(quelque chose) ? de meme pour val
Cela prends combien de temps avec MySQL ?
mordicus
Je viens de faire un petit test avec derby (puisque on en parlait il y a quelque temps)
drop table test;
create table test ( a1 integer, a2 integer, val varchar(128) );
create unique index test_index on test(a1,a2);
Pour 100 000 insert, 13 secondes pour la connexion, les inserts et le shutdown de la base.
a+
Je viens de faire un petit test avec derby (puisque on en parlait il y a
quelque temps)
drop table test;
create table test (
a1 integer,
a2 integer,
val varchar(128)
);
create unique index test_index on test(a1,a2);
Pour 100 000 insert, 13 secondes pour la connexion, les inserts et le
shutdown de la base.
Je viens de faire un petit test avec derby (puisque on en parlait il y a quelque temps)
drop table test;
create table test ( a1 integer, a2 integer, val varchar(128) );
create unique index test_index on test(a1,a2);
Pour 100 000 insert, 13 secondes pour la connexion, les inserts et le shutdown de la base.
a+
Pif
mordicus a écrit :
a1 et a2 c'est quoi ? des integer ? des varchar ou plutôt char(quelque chose) ?
des entiers qui sont les extremités de mes aretes (identifiants pour lesquels je n'ai cependant pas défini de contrainte foreign key...).
de meme pour val
va c'est une valeur entière.... ce que je représente, c'est des coupes entier - valeur...
Cela prends combien de temps avec MySQL ?
j'avais calculé qu'en localhost je fesais dans les 2000 modifications par seconde... je sais qu'un fichier que aller 10 à 100 fois plus vite pour un chargement de table...
mordicus a écrit :
a1 et a2 c'est quoi ? des integer ? des varchar ou plutôt char(quelque
chose) ?
des entiers qui sont les extremités de mes aretes (identifiants pour
lesquels je n'ai cependant pas défini de contrainte foreign key...).
de meme pour val
va c'est une valeur entière.... ce que je représente, c'est des coupes
entier - valeur...
Cela prends combien de temps avec MySQL ?
j'avais calculé qu'en localhost je fesais dans les 2000 modifications
par seconde... je sais qu'un fichier que aller 10 à 100 fois plus vite
pour un chargement de table...
a1 et a2 c'est quoi ? des integer ? des varchar ou plutôt char(quelque chose) ?
des entiers qui sont les extremités de mes aretes (identifiants pour lesquels je n'ai cependant pas défini de contrainte foreign key...).
de meme pour val
va c'est une valeur entière.... ce que je représente, c'est des coupes entier - valeur...
Cela prends combien de temps avec MySQL ?
j'avais calculé qu'en localhost je fesais dans les 2000 modifications par seconde... je sais qu'un fichier que aller 10 à 100 fois plus vite pour un chargement de table...
Pif
ma table peut compter de l'ordre de 100 000 000 de tuples... donc les inserts sont plus longs (index plus gros... )
mordicus a écrit :
Je viens de faire un petit test avec derby (puisque on en parlait il y a quelque temps)
drop table test;
create table test ( a1 integer, a2 integer, val varchar(128) );
create unique index test_index on test(a1,a2);
Pour 100 000 insert, 13 secondes pour la connexion, les inserts et le shutdown de la base.
a+
ma table peut compter de l'ordre de 100 000 000 de tuples... donc les
inserts sont plus longs (index plus gros... )
mordicus a écrit :
Je viens de faire un petit test avec derby (puisque on en parlait il y a
quelque temps)
drop table test;
create table test (
a1 integer,
a2 integer,
val varchar(128)
);
create unique index test_index on test(a1,a2);
Pour 100 000 insert, 13 secondes pour la connexion, les inserts et le
shutdown de la base.
ma table peut compter de l'ordre de 100 000 000 de tuples... donc les inserts sont plus longs (index plus gros... )
mordicus a écrit :
Je viens de faire un petit test avec derby (puisque on en parlait il y a quelque temps)
drop table test;
create table test ( a1 integer, a2 integer, val varchar(128) );
create unique index test_index on test(a1,a2);
Pour 100 000 insert, 13 secondes pour la connexion, les inserts et le shutdown de la base.
a+
Pif
saurais tu me donner le titre du fil ? Je connaissais pas tous ces systèmes, ou ne soupçonnait pas de telles différences de perfs...
As-tu sinon des refs vers des benchmarks ou des comparatifs ? Il semble que derby et berkeley DB soient les alternatives les plus intéressantes en Java et Open Source ?
Sais tu si pour Oracle Berkeley DB on peut utiliser la même syntaxe SQL ? Peux-t-on utiliser les memes outils de génie logiciel ? La syntaxe de derby est elle assez standard ? (proche de PG, MySQL ou Oracle par exemple ? )
Merci.
On 7 fév, 20:11, mordicus wrote:
Jderby (puisque on en parlait il y a quelque temps)
saurais tu me donner le titre du fil ?
Je connaissais pas tous ces systèmes, ou ne soupçonnait pas de telles
différences de perfs...
As-tu sinon des refs vers des benchmarks ou des comparatifs ? Il
semble que derby et berkeley DB soient les alternatives les plus
intéressantes en Java et Open Source ?
Sais tu si pour Oracle Berkeley DB on peut utiliser la même syntaxe
SQL ? Peux-t-on utiliser les memes outils de génie logiciel ? La
syntaxe de derby est elle assez standard ? (proche de PG, MySQL ou
Oracle par exemple ? )
Merci.
On 7 fév, 20:11, mordicus <mordi...@free.fr> wrote:
Jderby (puisque on en parlait il y a quelque temps)
saurais tu me donner le titre du fil ? Je connaissais pas tous ces systèmes, ou ne soupçonnait pas de telles différences de perfs...
As-tu sinon des refs vers des benchmarks ou des comparatifs ? Il semble que derby et berkeley DB soient les alternatives les plus intéressantes en Java et Open Source ?
Sais tu si pour Oracle Berkeley DB on peut utiliser la même syntaxe SQL ? Peux-t-on utiliser les memes outils de génie logiciel ? La syntaxe de derby est elle assez standard ? (proche de PG, MySQL ou Oracle par exemple ? )
Merci.
On 7 fév, 20:11, mordicus wrote:
Jderby (puisque on en parlait il y a quelque temps)
mordicus
Pif wrote:
saurais tu me donner le titre du fil ?
Houlala, c'est vieux, mais tu me l'avais demander a l'époque, j'avais eu la flemme de tester :)
Je connaissais pas tous ces systèmes, ou ne soupçonnait pas de telles différences de perfs... As-tu sinon des refs vers des benchmarks ou des comparatifs ? Il semble que derby et berkeley DB soient les alternatives les plus intéressantes en Java et Open Source ?
Oui, c'est le cas. Pour les benchs, je crois que j'ai vu passer ça quelque part, je vais essayer de retrouver, BDB etant plus rapide que derby, mais il n'utilise pas le langage SQL.
Sais tu si pour Oracle Berkeley DB on peut utiliser la même syntaxe SQL ?
Non, BDB c'est key->value, pas de sql et tout ce qui va avec...
Peux-t-on utiliser les memes outils de génie logiciel ? La syntaxe de derby est elle assez standard ? (proche de PG, MySQL ou Oracle par exemple ? )
La syntaxe de derby est standard, de plus, très proche de DB2, le but d'IBM a l'époque étant de facilité la migration vers DB2. Je l'utilise souvent comme alternatif à Oracle ou Postgresql quand j'ai besoin d'une base embarqué, rapide et que je peux attaquer avec Jdbc .
a+
Pif wrote:
saurais tu me donner le titre du fil ?
Houlala, c'est vieux, mais tu me l'avais demander a l'époque, j'avais eu la
flemme de tester :)
Je connaissais pas tous ces systèmes, ou ne soupçonnait pas de telles
différences de perfs...
As-tu sinon des refs vers des benchmarks ou des comparatifs ? Il
semble que derby et berkeley DB soient les alternatives les plus
intéressantes en Java et Open Source ?
Oui, c'est le cas.
Pour les benchs, je crois que j'ai vu passer ça quelque part, je vais
essayer de retrouver, BDB etant plus rapide que derby, mais il n'utilise
pas le langage SQL.
Sais tu si pour Oracle Berkeley DB on peut utiliser la même syntaxe
SQL ?
Non, BDB c'est key->value, pas de sql et tout ce qui va avec...
Peux-t-on utiliser les memes outils de génie logiciel ? La
syntaxe de derby est elle assez standard ? (proche de PG, MySQL ou
Oracle par exemple ? )
La syntaxe de derby est standard, de plus, très proche de DB2, le but d'IBM
a l'époque étant de facilité la migration vers DB2. Je l'utilise souvent
comme alternatif à Oracle ou Postgresql quand j'ai besoin d'une base
embarqué, rapide et que je peux attaquer avec Jdbc .
Houlala, c'est vieux, mais tu me l'avais demander a l'époque, j'avais eu la flemme de tester :)
Je connaissais pas tous ces systèmes, ou ne soupçonnait pas de telles différences de perfs... As-tu sinon des refs vers des benchmarks ou des comparatifs ? Il semble que derby et berkeley DB soient les alternatives les plus intéressantes en Java et Open Source ?
Oui, c'est le cas. Pour les benchs, je crois que j'ai vu passer ça quelque part, je vais essayer de retrouver, BDB etant plus rapide que derby, mais il n'utilise pas le langage SQL.
Sais tu si pour Oracle Berkeley DB on peut utiliser la même syntaxe SQL ?
Non, BDB c'est key->value, pas de sql et tout ce qui va avec...
Peux-t-on utiliser les memes outils de génie logiciel ? La syntaxe de derby est elle assez standard ? (proche de PG, MySQL ou Oracle par exemple ? )
La syntaxe de derby est standard, de plus, très proche de DB2, le but d'IBM a l'époque étant de facilité la migration vers DB2. Je l'utilise souvent comme alternatif à Oracle ou Postgresql quand j'ai besoin d'une base embarqué, rapide et que je peux attaquer avec Jdbc .
a+
Pif
mordicus a écrit :
Pif wrote:
Non, BDB c'est key->value, pas de sql et tout ce qui va avec...
peut on quand meme utiliser de multiples clés pour accéder ? Meme un tit jointure c'est po possible ? :(
La syntaxe de derby est standard, de plus, très proche de DB2, le but d'IBM a l'époque étant de facilité la migration vers DB2. Je l'utilise souvent comme alternatif à Oracle ou Postgresql quand j'ai besoin d'une base embarqué, rapide et que je peux attaquer avec Jdbc .
et sqllite, tout le monde en dit du bien en effet ? et tu as des infos sur hsqlddb ? il semble souvent considéré comme très rapide et il est par ailleurs utilisé par beaucoup de middleware de persistance en java.. ?
merci pour les infos...
a+
mordicus a écrit :
Pif wrote:
Non, BDB c'est key->value, pas de sql et tout ce qui va avec...
peut on quand meme utiliser de multiples clés pour accéder ?
Meme un tit jointure c'est po possible ? :(
La syntaxe de derby est standard, de plus, très proche de DB2, le but d'IBM
a l'époque étant de facilité la migration vers DB2. Je l'utilise souvent
comme alternatif à Oracle ou Postgresql quand j'ai besoin d'une base
embarqué, rapide et que je peux attaquer avec Jdbc .
et sqllite, tout le monde en dit du bien en effet ?
et tu as des infos sur hsqlddb ? il semble souvent considéré comme très
rapide et il est par ailleurs utilisé par beaucoup de middleware de
persistance en java.. ?
Non, BDB c'est key->value, pas de sql et tout ce qui va avec...
peut on quand meme utiliser de multiples clés pour accéder ? Meme un tit jointure c'est po possible ? :(
La syntaxe de derby est standard, de plus, très proche de DB2, le but d'IBM a l'époque étant de facilité la migration vers DB2. Je l'utilise souvent comme alternatif à Oracle ou Postgresql quand j'ai besoin d'une base embarqué, rapide et que je peux attaquer avec Jdbc .
et sqllite, tout le monde en dit du bien en effet ? et tu as des infos sur hsqlddb ? il semble souvent considéré comme très rapide et il est par ailleurs utilisé par beaucoup de middleware de persistance en java.. ?