Rechercher

AdRé Blog

  • Accueil
  • A propos
  • Liens
  • RSS
SQL Server

Alignement de partitions pour SQL Server

Posté par : Seb 

12

oct

Le choix des disques durs est crucial pour obtenir de bonnes performances avec SQL Server, toutes versions confondues : des disques SAS 15000 rpm seront bien sûr plus performants que des SATA II 7200 rpm. Les premiers offriront un nombre d’entrées sorties par seconde plus élevé et donc des taux de transferts plus importants, ce qui est extrêmement important dans le cas d’une utilisation dans un serveur de bases de données où le facteur limitant est souvent la performance du RAID et non la puissance du processeur.

Il existe un moyen relativement peu connu permettant d’augmenter encore le nombre d’entrées/sorties par seconde (IOs/s) sous Windows 2003 si vous utilisez un RAID : l’alignement de partitions. Depuis Windows 2008 la création de partition gère automatiquement cette optimisation mais sous Windows 2003 il faut le faire manuellement.

RAID 5

RAID 5


Continuer à lire "Alignement de partitions pour SQL Server"

Tags : RAID, SQL Server, Windows 2003
2 commentaires

Guides de migration vers SQLServer 2005 et 2008

Posté par : Seb 

4

mar

Voici deux guides de migration en Anglais vers SQLServer 2005 et 2008 publiés par Microsoft. Ils sont extrêmement complets (350 et 490 pages) et couvrent des sujets allant de la planification de la migration aux procédures à suivre dans le cas de migration de configurations à haute disponibilité en passant par les changements d’outils de management.

Tags : SQL Server, SQL Server 2000, SQL Server 2005, SQLServer 2008
0 commentaire

Influence du type d’index sur un Update

Posté par : Seb 

11

sept

On lit souvent qu’un index a des effets néfastes sur les performances des requêtes en Update. J’ai réalisé un micro-benchmark sur une de nos tables internes afin de déterminer cet impact de manière un peu plus précise.

La table utilisée est une table de production de 8 555 648 lignes, pesant 550 Mo et ayant 8 colonnes. Une de ces colonnes est un champ Email unique et une autre est la date d’intégration dans la base au format datetime.

La requête que j’utilise est :

Update R_Temp.dbo.Email
set Date_In='04/09/2008'
where Email in ('test@gmail.com')
and Date_In is null

Voici le plan d’exécution estimé sur la table sans index :

Plan d'exécution estimé sans index

Comme il n’y a pas d’index, SQLServer doit procéder à un Table Scan, c’est-à-dire parcourir entièrement la table afin de trouver les lignes correspondant à la requête. Voici les coûts de ce Scan :

Estimated I/O Cost : 52,1454
Estimated CPU Cost : 4,70565
Estimated Operator Cost : 56,8511
Estimated Subtree Cost : 56,8511


Continuer à lire "Influence du type d’index sur un Update"

Tags : Index, SQL Server
0 commentaire

Influence du type d’index sur un Select

Posté par : Seb 

6

sept

Pour améliorer les performances des requêtes SQL la solution la plus souvent avancée est de « créer un index ». Cela n’est malheureusement pas aussi simple, les index n’optimisant pas certains types de requêtes, sans compter qu’il existe deux types majeurs d’index dont les avantages et les inconvénients varient. Il faut donc toujours procéder à une réflexion complète sur l’intérêt même de ces index par rapport aux problèmes qu’ils peuvent poser, mais aussi effectuer une série de tests afin de vérifier que les index ont bien une influence positive sur les performances des requêtes utilisées. Même une simple requête Select peut ne pas bénéficier d’un index.

Pour illustrer cela j ‘ai effectué un micro-benchmark sur SQLServer 2005 pour comparer les performances d’une table sans index (heap), d’un index ordonné (clustered) et d’un index non ordonné (nonclustered) sur la requête suivante :

Select count(*) from R_Temp.dbo.EMAIL where Email like ('frederic%')

La table compte 8 555 648 lignes, pèse 550 Mo et est constituée de 8 colonnes. Le champ Email est unique.

Voici le plan d’exécution estimé de cette requête sur la table sans index :

Plan d'exécution estimé sur la table sans index

SQLServer doit ici parcourir toute la table (Table Scan) pour trouver les lignes correspondant à la requête et le coût est donc très élevé : elle s’exécute en 2,5 s sur mon serveur. 


Continuer à lire "Influence du type d’index sur un Select"

Tags : Index, SQL Server
0 commentaire

Surveiller l’utilisation de SQL Server

Posté par : Seb 

16

oct

Afin de déterminer quels sont les utilisateurs qui monopolisent un serveur SQL Server il suffit d’utiliser la requête suivante :

SELECT
TOP 20
SPID, Blocked,
convert(varchar(10),db_name(dbid)) as Base,
CPU,
datediff(second,login_time, getdate())/60 as Minutes,
convert(float, cpu / datediff(second,login_time, getdate())) as PScore,
convert(varchar(16), hostname) as Hôte,
convert(varchar(20), loginame) as Login,
convert(varchar(50), program_name) as Programme
FROM master..sysprocesses
WHERE datediff(second,login_time, getdate()) > 0 and SPID > 50
ORDER BY PScore desc

Plus le PScore est élevé plus l’utilisation de la base est intensive.

De la même manière on peut déterminer les programmes les plus gourmands en observant la colonne BFactor lors de l’exécution de la requête suivante :

SELECT
convert(varchar(50), program_name) as Programme,
count(*) as CliCount,
sum(cpu) as CPUSum,
sum(datediff(second, login_time, getdate())) as SecSum,
convert(float, sum(cpu)) / convert(float, sum(datediff(second, login_time, getdate()))) as Score,
convert(float, sum(cpu)) / convert(float, sum(datediff(second, login_time, getdate()))) / count(*) as BFactor
FROM master..sysprocesses
WHERE spid > 50
GROUP BY
convert(varchar(50), program_name)
ORDER BY score DESC
Tags : Monitoring, SQL Server
0 commentaire

Translator

French flagItalian flagChinese (Simplified) flagEnglish flagGerman flagSpanish flagJapanese flagArabic flagRussian flagNorwegian flag

Mots clés

Backup Bureau à distance Contrôleur de domaine Déploiement Disaster recovery Linux Logiciel Monitoring MySQL OpenVPN Operations Manager 2007 pfSense PHP RAID Réplication SQL Server SQL Server 2005 VPN Windows 2003 WSUS

Meta

  • Inscription
  • Connexion
  • Flux RSS des articles
  • RSS des commentaires
  • WordPress.org

Blogs mis à jour

  • SQL Fool

    Fermer l’aperçu

    Loading...
  • The Deployment Guys

    Fermer l’aperçu

    Loading...
  • Benoît Sautière

    Fermer l’aperçu

    Loading...
  • Advisec Blog

    Fermer l’aperçu

    Loading...
  • Ask the Directory Service Team

    Fermer l’aperçu

    Loading...
  • Fabrice Meillon

    Fermer l’aperçu

    Loading...
  • MSSQL Tips

    Fermer l’aperçu

    Loading...
  • CSS SQL Server Engineers

    Fermer l’aperçu

    Loading...
  • SQL Server Storage Engine

    Fermer l’aperçu

    Loading...
  • I Want Some Moore

    Fermer l’aperçu

    Loading...
  • The WSUS Support Team

    Fermer l’aperçu

    Loading...
  • Stéphane Papp

    Fermer l’aperçu

    Loading...
  • Windows Networking

    Fermer l’aperçu

    Loading...
  • Blogmotion

    Fermer l’aperçu

    Loading...

Sujets récents

  • Alignement de partitions pour SQL Server
  • Fusionner deux dépôts SVN sous Ubuntu
  • Utiliser SSH et Remote Desktop avec Visio
  • Gestion des backups fichiers et MySQL sous Ubuntu
  • Restaurer un iPhone 3G de iOS 4 à 3.1.3 sous Snow Leopard
  • Installation d’une Dedibox LAMP sous Ubuntu

Commentaires récents

  • Mana dans Configurer un serveur de temps fais…
  • julia dans Installation et configuration de WS…
  • Oni dans Installation d'une Dedibox LAMP sou…
  • Emilie dans Restaurer un iPhone 3G de iOS 4 à …
  • LaMachine dans 5 tâches courantes d'administratio…
  • kornemuz dans Configurer un serveur de temps fais…

Sujets les plus commentés

  • Restaurer un iPhone 3G de iOS 4 à 3.1.3 sous Snow Leopard - 54
  • Installation de Cacti sur Windows/IIS 6 - 23
  • Erreur d'installation de WSUS 3.0 SP2 - 12
  • pfsense et OpenVPN pour road warriors - 11
  • Installation et configuration de WSUS 3.0 SP2 - 9
  • Installation d'une Dedibox LAMP sous Ubuntu - 7