base de donnée enorme sur pc classique - SQL/NoSQL - Programmation
Marsh Posté le 20-12-2017 à 08:30:50
Pourquoi tu ne créé pas ton index avant de réaliser les insertions ?
Marsh Posté le 20-12-2017 à 08:36:54
toute mes recherche indiquait qu'il fallait creer l'index apres l'insertion sinon il se fragmentait.
Du coup dumper la base en fichier texte, creer une base vide avec index et inserer dans la nouvelle base par paquet de 100 000 via python?
Marsh Posté le 20-12-2017 à 08:57:16
C'est effectivement plus efficace de créer ton index après, le but de ma remarque était de te proposer une solution pour continuer à avancer dans ton projet.
Marsh Posté le 20-12-2017 à 09:54:54
Si le PC complet freeze c'est qu'il est instable, rien à voir avec SQLite.
Et SQLite c'est pas idéal pour les bases énormes (comme tu dis toi même) donc utilise un SGBDR plus robuste.
Marsh Posté le 20-12-2017 à 10:58:23
Citation : |
oui j'entend bien, mais quel est l'impact de creer un index avant d'inserer 430 million de ligne? l'index reste t-il utile?
Citation : |
Je vais faire passer un memtest alors.
Passer sous MySql?
Marsh Posté le 20-12-2017 à 11:08:29
Essaye une base de données un peu plus costaud : mysql/postgresql
efféctivement, il vaux mieux désactiver les index lors de gros insert et les réactiver ensuite. Si tu le laisse actif, l'insertion est beaucoup plus lente
Marsh Posté le 20-12-2017 à 11:36:33
sliders_alpha a écrit :
|
memtest et burnin CPU de ton choix (OCCT, etc).
Concernant le SGBDR MySQL, SQL Server, posgre ou n'importe quoi.
OSEF tant que c'est gratuit et que tu sais t'en servir. SQL Server la version gratos limite la taille de la bdd à 10Go de mémoire.
Marsh Posté le 21-12-2017 à 10:03:31
flo850 a écrit : Essaye une base de données un peu plus costaud : mysql/postgresql |
Sur Mysql, je confirme, le fait de laisser l'index lors de l'insert influe beaucoup sur les perfs.
Marsh Posté le 31-12-2017 à 15:23:13
Tu stoques quoi dans ta base ? Tu veux indexer que les adresses ? Si c'est le cas pars plutôt sur autre chose qu'un sgbd par exemple leveldb ou un truc du genre serait peut-être plus adapté ?
Marsh Posté le 20-12-2017 à 08:19:50
bonjour,
je voulais faire un explorateur de blockchain from scratch.
Pour ce faire j'ai parsé toute la blockchain bitcoin et j'ai stocker les info dans une base sqlite.
Ma table qui contient les adresse existante fait 430 million de lignes (avec doublons)
je fais tourner ça sur un SSD sata3 et avec 16GB de ram.
j'ai voulu creer un index sur la collone des addresse mais la ram monte a 100% puis le pc freeze
j'ai esseyer de faire un select distinct pour ecrire une table mais au bout de 72h la base mouline toujours.
pour info une addresse est en base 58 et ressemble a ça : 1Hz96kJKF2HLPGY15JWLB5m9qGNxvt8tH
Est-il impossible de creer un index? je croyais que les bdd se debrouillait pour fonctionner quel que soit la machine.
Je suis en train de me demander si je ne devrais pas realiser ma propre solution de stockage :
1/
faire un fichier texte par addresse avec l'adresse en nom de fichier dans un dossier "btc_addr"
si j'ai besoin d'avoir les info du adresse j'ai juste a ouvrir le fichier (transaction effectué, etc).
si j'ai besoin de savoir si une adresse existe, j'ai juste a tester si le fichier existe
je ne m'y connais pas trop en BDD, quelque chose m"echappe?
Merci.