Probleme SQL trop lent - SQL/NoSQL - Programmation
Marsh Posté le 24-04-2006 à 16:31:53
quel SGBD ? quel machine ? quel commande SQL ? rapport entre le langage SQL et le SGBD qui l'évalue ?
Marsh Posté le 24-04-2006 à 16:36:16
- Le SQL est pas nul donc c'est toi. Ingénieur base de données c'est un métier, ca s'apprends pas en 5 minutes.
- La base de données consome forcément plus de place que le fichier brut de données, car la base de données utilise plus de place, par exemple pour stoquer les index
- Si entre les données brutes et le sockage dans la base de donées tu consome 52 mo en plus, c'est peut etre que ton shéma est très mal concu, c'est quoi ton shéma ?
- Si c'est lent en insert, fait des bulks inserts. Si c'est lent en lecture, met des index, etc...
C'est quoi ta base de données ? c'est quoi ta machine ? C'est quoi ton shéma ? c'est lent quand tu fais quoi ?
Marsh Posté le 24-04-2006 à 18:14:22
C'est une base de donnée pour un jeux, ma machine est un 3Ghz HT 1Go (DDR 3200) de Ram sous XP Pro SP2.
C'est avec la commande INSERT et et SELECT mais c'est fais automatiquement c'est avec Visual Studio Net et je n'est pas créé d'index sachant que je dois charger toute la base de donnée en mémoire, mais je débute donc je sais pas s'il faut que je fasse un index, je me sert de la clef primaire pour identifier.
Pour le schéma je ne l'ai pas créé (mais je peux le faire) car je n'ai qu'une seule table et je pensait que c'etait juste pour représenter visuellement la base de donnée et les relations entre les tables.
V'rdt lent en lecture et en ecriture et c'est quoi des bulks inserts ?
Je precise que je n'est aucune connaissance des base de donnée je connais uniquement les commande INSERT SELECT DELETE UPDATE, et tout se fait automatiquement avec Visual Studio Net.
Marsh Posté le 25-04-2006 à 12:00:12
oh putain...
encore un pro de dreamweaver qui tente la programmation lourde... c'est pas gagné
un conseil : apprend à développer, achète un bouquin. et apprends à programmer proprement. vs.NET c'est pas "klik & play"
Marsh Posté le 25-04-2006 à 12:03:10
tiens, voilà.
t'achète "klik & play" pour 4,30 ou tu apprends à programmer
http://www.priceminister.com/offer [...] eu-Pc.html
Marsh Posté le 25-04-2006 à 17:02:42
Je sais programmer mais je ne me suis pas interressé aux base de donnée et je ne veux pas apprendre le SQL et j'ai deja des livres de programmation.
Marsh Posté le 25-04-2006 à 17:05:59
ReplyMarsh Posté le 25-04-2006 à 17:15:13
orafrance a écrit : faire des requêtes SQL sans l'apprendre ça risque d'être compliqué |
le probleme c'est que ce que tu dis est de moins en moins vrai :-(
Marsh Posté le 25-04-2006 à 18:18:48
En VB.Net j'ai pas besoin tout ce fait automatiquement je connais juste les commandes de bases et ca me suffit ce qui me convient pas c'est la vitesse je pensai que le SQL etait super rapide et tout et tout en tout cas les base Access sont plus rapide.
Marsh Posté le 25-04-2006 à 20:14:21
betsamee & eviljojo > hmmmm, un truc simple...
vous avez déjà fait des sites web je suppose.
vous avez déjà utilisé FrontPage ou DreamWeaver ?
vous savez coder en HTML (ne serait-ce qu'en 4.01) et en JavaScript ?
vous avez vu ce que ces deux softs font ?
si vous avez répondu à "oui" à toutes les questions, alors vous avez la réponse évidente qui vient à l'esprit de n'importe qui : abandonnez les idées reçues qu'on n'a pas besoin de connaître le SQL pour attaquer une base de données depuis un programme, quelquesoit l'IDE utilisée.
je pense qu'il vaut mieux ne rien connaître à VB.NET, mais maîtriser le SQL, on a plus de chances de faire un truc qui fonctionne correctement que l'inverse. quand aux ressources et performances... surtout dans ton cas eviljojo... tu dis que c'est pour faire un jeu. oublie les bases de données si tu ne veux pas te mettre au SQL.
(ceci dit, pour un jeu, tu peux oublier le SQL aussi, je ne vois pas comment tu vas oser imaginer avoir des perfs correctes en te basant sur un serveur de base de données pour lire et écrire les informations de ton jeu).
y'a que les jeux du type "kochonland" qui peuvent vraiment tirer partie d'une base de données, et encore, à condition de s'y mettre sérieusement (jobs, pl/sql, etc.)
si c'est juste pour faire des select et des insert monotable, avec des jointures faites en mémoire avec des boucles imbriquées, autant attaquer en direct un fichier "plat", ce sera infiniment plus performant, et au moins on sait exactement ce qu'on fait, surtout quand on ne sais pas ce que font les requêtes générées automatiquement.
Marsh Posté le 25-04-2006 à 20:20:34
un autre point eviljojo : tu compares une application access avec un programme qui utilise des requêtes générées automatiquement pour attaquer une base. déjà, ça n'a rien à voir. Access est capable de générer des requête automatiquement vraiment complexes, qui savent notamment tirer partie des optimisations et fonctionnalités du moteur MSJET. ensuite, il faut savoir qu'Access, s'il repose en effet sur un moteur de base de données, ne repose pas sur un serveur de base de données (un serveur, c'est pas une machine, c'est juste une architecture). grace à ça, il permet, si on l'utilise directement depuis une application access, de faire abstraction de toutes les couches haut niveau qui plombent effectivement les performances.
si t'as pas à gérer des connexions concurrentes, des transactions, des règles d'intégrités ou règles de gestion complexes, il n'y a absolument aucun besoin d'utiliser un SGBD. au contraire.
Marsh Posté le 25-04-2006 à 21:33:58
Juste une remarque j'ai pas encore tout lu mais c'est POUR un jeu, c'est une simple base de donnée ou je mettrai des rapports et des coordonnées.
Je n'ai jamais fait de vrai site web juste avec mon pc de bureau que j'ai transformé en serveur avec FTP, dns et une page d'acceuille et j'utilise FrontPage quelque fois vite fais mais je n'ai pas de réelle connexion au net (longue histoire), je ne fais en général que modifié a ma sauce des gros projets sinon j'ai fait des programmes mais je ne bosse pas dessus plus d'un mois (pas le temps je suis au lycée).
Ma base de donnée dans mon cas est sur un ordinateur local pas besoin de la partagé c'est juste pour moi.
Et comme je les dis avant je ne connai pas grand chose au base de donnée.
Marsh Posté le 26-04-2006 à 15:49:19
comme je disais : si c'est pour un jeu, oublie les BDD.
et en attendant de faire des études qui te permettent de te mettre pour de bon à l'info, utilise klick & play, ou achète des revues avec des jeux en démo, ça t'occupera
Marsh Posté le 26-04-2006 à 17:05:58
C'est pas une base que je mettrai dans un jeu c'est une base qui va me permettre de stocker des rapports pour un jeu mais je crois que je vais mettre cette base sur un serveur pour que les membre de mon equipe puisse y accéder via le net, le programmme ne consiste qu'a accéder a la base de donnée c'est pas un jeux qui utilisera une base, le jeu existe deja et pour mettre et stocker des donner en commun je veut faire une base mais ne vous inquiété pas j 'ai achété un livre pour le SQL, je pense pouvoir m'en sortir maintenant.
Marsh Posté le 26-04-2006 à 19:00:14
n'hésite pas à poser tes questions sur la syntaxe ou la structure de la base.
en effet, même si j'imagine que ta base est relativement simple, je doute que ton bouquin traîte de la conception de la base à proprement parler (ça occupe les étudiants en informatique pendant 2 ans, et c'est une des matières où il y a le plus d'heure).
quand tu auras avancé un peu, n'hésite pas à poster ton modèle et tes requêtes, qu'on te dise comment les améliorer, et quels index créer.
Marsh Posté le 26-04-2006 à 21:29:39
Ok, le temps que je lise mon bouquin (qui est niveau debutant/intermediaire).
Marsh Posté le 26-04-2006 à 21:59:30
betsamee a écrit : le probleme c'est que ce que tu dis est de moins en moins vrai :-( |
suffit de regarder phpBB
Marsh Posté le 27-04-2006 à 00:27:35
Le probleme en fait c'est que j'avai pas d'index pour moi la clef primaire etait une sorte d'index, mais il parait que la clef primaire utilise un index implicite est ce qu'il est possible de se servir de cette index pour eviter d'en créé un ? Et je appris a me servir des vues c'est pas mal utile mais par contre je vois pas l'interet des synonymes.
Marsh Posté le 27-04-2006 à 08:11:00
une clef ou un index c'est synonyme, donc oui la primary key est déjà un index
Marsh Posté le 27-04-2006 à 09:38:36
les synonymes, ça sert surtout pour clarifier le code.
mettons que dans une table tu as des "tiers". Un tiers, ça peut être un client, comme un fournisseur.
dans ton code, tu peux décidé de voir les nom des fournisseurs chez qui un client s'est approvisionné.
et là, tu vas avoir plusieurs appels à la table tiers, et celui qui va relire ton code (ou même toi) va avoir du mal à comprendre ce que tu fais.
avec des synonymes, tu appelles un coup le synonyme "client", et un coup le synonyme "fournisseur", et hop ! tout à coup, le code devient lisible.
ça sert à rien d'autre qu'à ça
Marsh Posté le 24-04-2006 à 16:10:54
oila je ne savai pas trop ou mettre ce topic alors je le post ici, je voulais créé une base de donnée contenant 1 table de 48 champs avec environ 70000 enregistrement, le probleme c'est que en voulant effacé toute la base de donnée je me suis rendu compte de la lenteur, je ne sais pas si c'est moi qui suis incapable de configurer une base de donnée sql mais au depart dans mon projet j'avais fait cette base de donnée avec un fichier texte deja il ne faisai que 8Mo alors que la base SQL en fait 60Mo et de plus il ne me faut que quelques seconde pour y avoir acces alors que pour la base SQL il me faut beaucoup plus de temps. Voila si quelqu un peu m'aidé a me dire si c'estmoi ou si c'est le SQL qui est nul.
Meci