Chaque fois que je découvre que la performance de la récupération de données de ma base de données est lente. J'essaie de déterminer quelle partie de ma Strong> requête SQL forte> a le problème et j'essaie de l'optimiser et d'ajouter des indices Ma question est la suivante: p>
Y a-t-il d'autres astuces pour mieux rendre la performance SQL Server? P>
Quelles sont les autres raisons qui peuvent rendre la performance SQL Server pire? p>
5 Réponses :
Oh et il pourrait y avoir des autres aussi. P>
Lol peut-être demain je pourrais ajouter encore plus :)
Superbe liste, mais qui sont importants que les autres? + "Délai aller-retour entre SQL Server et Client"
@Dennis, cela dépend! Ajout de votre suggestion aussi :)
Cela résume à peu près tout ! En particulier les "trop nombreux indices" et "trop peu d'indices" ;-) Trouver les bons et le bon nombre d'indices est un art noir :-)
Heureux que vous mettiez d'abord de la conception de requête inefficace! C'est l'une des premières choses que je vérifie et la plupart du temps, je n'ai pas besoin d'aller plus loin que cela.
Si vous êtes nouveau dans la base de données et que vous avez accès au conseiller de syntonisation du moteur de base de données, vous pouvez régler votre base de données suristiquement. P>
Vous capturez essentiellement que les requêtes SQL sont exécutées contre votre DB dans le profileur SQL, puis nourrissez ceux qui sont deta. Deta exécute efficacement les requêtes (sans altération de vos données), puis évolue quelles informations sont manquantes de votre base de données (vues, index, cloisons, statistiques, etc.) pour mieux faire les requêtes. P>
Il peut ensuite les appliquer pour vous et les surveiller à l'avenir. Je ne dis pas de supposer que Deta a toujours raison ou de faire des choses sans comprendre, mais j'ai découvert que c'est certainement un bon moyen de voir ce que vos requêtes font, combien de temps ils prennent et comment vous pouvez indexer la DB de manière appropriée. p>
PS: avec tout ce qui dit, il est beaucoup préférable d'investir dans un bon DBA au début d'un projet afin d'avoir de bonnes structures et d'indexation pour commencer. Mais ce n'est pas la position que vous êtes en ce moment ... P>
Quand je parle à de nouveaux développeurs qui ont ce problème, je constate généralement que c'est à cause de l'un des deux problèmes. Les deux sont fixes si vous suivez ces 2 règles. p>
Premièrement, ne récupérez aucune donnée dont vous n'avez pas besoin. Par exemple, si vous faites une pagination, ne ramenez pas 100 rangées, puis calculez ceux-ci appartenant à la page. Demandez à la tâche stockée de la figure et ne récupérez que les 10 que vous avez besoin. P>
Deuxièmement, rien n'est plus rapide que le travail que vous ne faites pas. Par exemple, j'ai travaillé sur un système où les rôles et les droits complets d'un utilisateur ont été récupérés avec chaque page demandée - c'était 100 des lignes pour certains utilisateurs. Encore simplement cela à l'état de la session sur la première demande, puis l'utiliser à partir de là pour que les demandes ultérieures ont pris un poids significatif de la base de données. P>
Vous suggère d'obtenir un bon livre sur le réglage des performances pour la base de données que vous utilisez (c'est très spécifique à la base de données). C'est un sujet extrêmement complexe et ne peut pas être répondu vraiment autre que dans les généralités sur le Web. P>
Par exemple, Dave Markle vous indique que vos requêtes inefficaces peuvent causer le problème et il existe de nombreuses façons d'écrire des requêtes inefficaces et de nombreux moyens de les réparer. P>
C'est une très grande question. Et il y a déjà une tonne de réponses. Je voudrais toujours ajouter un facteur important - vous avez mentionné: p>
J'essaie d'optimiser et d'ajouter des index p>
blockQuote>
Mais, parfois, l'élimination parfois des indices non mis en cluster non utilisés peut aider à améliorer les performances telles qu'elles aident à réduire les grumes de transaction. Lire principales raisons de la performance du journal Problèmes p>
Statistiques d'attente, ou s'il vous plaît dites-moi où ça fait mal donne une idée de l'utilisation des statistiques d'attente pour l'analyse de la performance. P>
Pour voir des idées fraîches pour la performance, jetez un coup d'œil à
Considérations de performance - SQLMAG.com P>
Pour comprendre Split Page code>. Le problème est - il y a de bonnes divisions et de mauvais scissions. Voici de bons articles expliquant comment utiliser transaction_log Code> Événement étendu pour identifier les scissions de page Bad / Nasty P>
rejoindre code>, lire Advanced JOIN TECHNIQUES < / a> p>
Dépannage d'événements étendus Dépannage de la requête en cours d'exécution à l'aide d'événements étendus Événement d'attente
Exécutez le profileur et laissez-le vous dire où la requête est lente.
Cela devrait aussi être cw. Je dis ça comme ça.
Puis-je savoir pourquoi il est marqué près?
@Pang: appartient probablement à la faute du serveur.
Je ne vois pas comment cela appartient à la faute du serveur, à moins que nous envoyions toutes les questions liées à la DBA là-bas.
Si vous voulez tuer une question de mort et que ce soit à peine, personne ne le verra, par tous les moyens, envoyez-le à la faute du serveur.
Tbh, "Qu'est-ce qui ne peut pas causer de mauvaises performances SQL Server?" .... à peu près tout ce que peut