Embauche d'un spécialiste OLP SqlServer, Quelle expérience ou quelles exigences dois-je rechercher? [fermé]

StackOverflow https://stackoverflow.com/questions/415419

Question

Je rencontre des problèmes de performances de base de données avec un projet OTLP sur lequel je travaille. Un autre développeur et moi-même avons atteint la fin de notre connaissance de la performance accumulée et cherchons une personne à rejoindre l’équipe pour nous aider à accélérer notre application.

Nous avons apporté des modifications au schéma afin de dénormaliser certaines parties des données, d’optimiser chaque requête, d’exécuter plusieurs conseillers d’ajustement de la base de données pour obtenir nos index parfaitement adaptés, avec les options de serveur de MSSql ajustées.

Nous n'avons pas besoin que quelqu'un vienne et nous dise que les adhésions peuvent être lentes et que l'impasse est, nous avons besoin de quelqu'un qui sait quoi faire après avoir épuisé toutes les étapes répertoriées ci-dessus.

Quelqu'un a-t-il des conseils ou des expériences en matière de recrutement de DBA OLTP à partager? Quel type de questions pouvons-nous poser au DBA pendant le processus d’entretien?

C'est une situation étrange, nous savons que nous avons besoin de quelqu'un qui en sait plus que l'équipe actuelle, mais nous ne savons pas quelles questions poser, car nous ne savons pas quelles sont les prochaines étapes. Est-ce que cela a du sens?

Était-ce utile?

La solution

Ok, ça me dit quelque chose:

  

Nous avons apporté des modifications au schéma afin de dénormaliser certaines parties des données, d’optimiser chaque requête, d’exécuter plusieurs conseillers d’ajustement de la base de données pour obtenir nos index parfaitement adaptés, avec les options de serveur de MSSql ajustées.

Vous avez déjà égalé ou dépassé ce que 90% des personnes qui se disent administrateurs de base de données pourront faire.

Le problème est que beaucoup d'administrateurs de base de données ne sont pas vraiment des programmeurs, ils sont plutôt du côté de l'administration système. Vous avez besoin d’un programmeur DBA qui non seulement maîtrise vraiment bien TSQL, mais qui connaît également vos autres langages de programmation.

Je consacre une partie importante de mon temps à régler des problèmes d'ajustement de base de données tels que celui-ci, et la solution implique souvent de nouvelles conceptions importantes du début à la fin du schéma de base de données. Vous ne pouvez pas résoudre ces problèmes isolément. Sans contrôle complet (et compréhension totale) de l’architecture complète, vous n’obtiendrez jamais les performances dont vous avez besoin.

Vous pourriez être la meilleure personne pour le poste, et il serait peut-être plus judicieux de faire appel à une personne qui se chargera de votre travail afin que vous puissiez vous concentrer sur les problèmes de performances OLTP.

Autres conseils

Vous devez faire très attention à ce que vous pouvez embaucher un administrateur de base de données Guru, lui demander d’améliorer considérablement les performances de la base de données et d’avoir des problèmes avec votre application qui sont ancrés dans son architecture.

Quelques idées:

  1. Prenez la requête la plus complexe optimisée, donnez-la au DBA candidat avec le contrôle qualité et demandez-lui de l'optimiser à nouveau. Demandez-leur de décrire ce qu'ils ont fait et comment ils l'ont fait.

  2. Assurez-vous que cette personne comprend le matériel, lorsque vous utiliserez plusieurs groupes de fichiers, baies de disques RAID, partitionnement de données, performances 64 vs 32 bits, etc. ...

  3. Recherchez une personne possédant également des connaissances en architecture logicielle.

  4. Posez-leur quelques questions plus difficiles sur le serveur SQL, par exemple. Quelle est la déclaration OVER? Les GUID sont-ils de bonnes clés primaires et pourquoi, int identité est-elle préférable?

Désaccordez un peu votre base de données avant votre propre optimisation et donnez-la-leur. Voyez s’ils peuvent le paramétrer pour qu’il soit aussi performant ou meilleur par rapport aux modifications que vous avez apportées.

Demandez pourquoi ils ont choisi cette technique.

Recherchez des références et découvrez les environnements dans lesquels elles ont été créées sont les plus susceptibles de correspondre aux vôtres.

Un bon administrateur de base de données sera en mesure de vous indiquer lors de l'entretien à haut niveau les étapes à suivre. Vous devriez accorder plus d’attention aux processus de pensée ici, plutôt qu’à la solution du problème. Lorsque le DBA a donné quelques solutions, revenez en arrière, interrogez-les et demandez-leur pourquoi le problème devrait être résolu de cette manière.

Cette méthode distinguera très rapidement les hommes des garçons, pour ainsi dire.

À quel point êtes-vous proche des performances maximales de la base de données? Il est très facile de créer un problème OLTP insoluble avec cette technologie. Comme Eric l'a dit, une refonte totale de l'architecture pourrait être appropriée. Plus de RAM, ajoutez simplement plus de RAM:)

Certes, sans consulter la base de données, il est difficile de dire quelle pourrait être la meilleure façon d’optimiser. Compte tenu de ce que vous avez fait, vous devrez probablement faire appel à un concepteur de base de données, qui possède de l'expérience dans la conception et le réglage de bases de données de la taille que vous avez. En demandant comment ils aborderaient le problème, voyez si l'intervieweur examinait d'abord les requêtes peu performantes et exécutait le profileur pour voir ce qui se passait et les identifier. La personne doit pouvoir répondre à des questions spécifiques sur le reniflement de paramètres et sur la manière de l'éviter, quelles méthodes peuvent être utilisées pour éviter les curseurs, pourquoi les statistiques doivent-elles être mises à jour, ce qui rend une requête saregable? Il y a certaines choses communes que je regarderais dans le réglage des performances. Le réseau est-il saturé (parfois ce n'est pas la base de données), la conception globale est-elle mal conçue, utilisez-vous du code SQL qui fonctionne mal en général? Si, par exemple, toutes vos recherches permettent d'utiliser un caractère générique comme premier caractère, il n'est même pas possible de le faire rapidement. Si vos jointures sont sur des clés naturelles multi-colonnes, elles sont plus lentes qu'elles ne devraient l'être. Stockez-vous plus d'une information dans un champ, ce qui provoque beaucoup de manipulations pour récupérer les données? Utilisez-vous des curseurs? Utilisez-vous des fonctions? Réutilisez-vous du code alors que vous ne devriez pas l'être? Vous retournez toujours le minimum d'informations requis? Êtes-vous en train de fermer des liens? Obtenez-vous des impasses? Les rangées de votre table sont-elles trop larges? Avez-vous trop d'enregistrements dans des tables particulières (purger les anciens enregistrements ou les mettre dans une base de données d'archives peut faire une énorme différence)? Quelle partie de votre code est orientée ligne et non orientée ensemble? Ce sont des exemples du genre de choses qu'une personne expérimentée dans la base de données examinerait et donc du genre de choses dont elle devrait parler dans l'interview.

Certains exemples de code incorrects (vous savez ce que vous avez déjà optimisé) peuvent vous donner une bonne idée de leur approche. Vous voulez une personne qui soit méthodique et qui possède une connaissance approfondie de SQL.

Il existe de bons livres sur le réglage des performances - je vous conseillerais de les obtenir et de vous familiariser avec eux avant de procéder à une interview.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top