Renouvèlement MVP

Et hop, renouvelé MVP. Une bonne nouvelle juste avant de prendre l’avion pour rentrer en métropole  après une excursion en Nouvelle Calédonie.

Une 6ème année que j’espère riche en rencontres aux différentes events auxquels je vais ou devrais participer (SQL Saturday, Pass Summit, Teched, Journées SQL Server ou Techdays).

See you …

Publié dans CV | Tagué | 1 commentaire

SQL Saturday Paris Septembre 2014

Le planning des sessions du SQL Saturday qui aura lieu à Paris le 13 Septembre  2014 est enfin public.

J’aurais le plaisir d’y présenter une session avec Nicolas Soukoff (Senior Premier Field Engineer – SQL Server) : Et Hop ma base migre vers Azure.

Par ailleurs, le vendredi est consacré aux pré conférences. Une journée payante que l’on peu assimiler à une formation. Je partagerais la journée avec David Barbarin sur une thématique stockage et backup/restaure SQL Server.

Pour les inscriptions, c’es ici.

image

Publié dans Evènements | Tagué | Poster un commentaire

SQL Server 2012 SP2 disponible au téléchargement

Rendez vous sur cette page pour télécharger le SP2.

image

Publié dans SQL Server | Tagué , , | Poster un commentaire

Migration vers SQL Server – Par où commencer ?

Vous souhaitez migrer vers SQL Server ? Vous utilisez MySQL, Oracle (la version 5.3 est disponible depuis 1 mois), Sybase ou Access alors voici le blog de l’équipe SSMS, qui propose des outils d’aide à la migration.

image

Les assistants de migration (SQL Server Migration Assistants) vous permettent rapidement de tester votre migration, voire de la réaliser dans son intégralité. Certaines retouches seront probablement nécessaires, mais une partie du travail sera déjà faite pour vous. Les captures d’écran ci dessous sont extraites d‘un article Technet :  SSMA overview que je vous suggère de lire.

Attention cependant, on présume que vous connaissez le système source. Mais si vous ne maitrisez pas SQL Server, je ne saurais que trop vous conseiller de vous former en premier lieu et éventuellement, de faire appel à des ressources compétentes pour vous épauler lors de la migration et ainsi éviter des mauvais choix d’architecture. Si besoin, n’hésitez pas à me contacter.

 

Enjoy.

Publié dans SQL Server | Tagué , | Poster un commentaire

Guideline on how to best configure SQL Server in Azure

Bob Ward, Microsoft, vient de poster un billet dans lequel il est fait mention des best practices en matière de stockage pour les bases de données SQL Server hébergées dans une machine virtuelle Windows Azure.

Une checklist à mettre de toute urgence dans vos favoris.

image

Happy IaaS !

Publié dans SQL Server, Windows Azure | Tagué , , | Poster un commentaire

Violin & Microsoft–Solution WFA

Pour ceux qui étaient passés à côté de l’annonce de partenariat entre Microsoft et Violin Memory afin de proposer des solutions de stockages haute performance (WFA) pour Hyper-V et SQL Server (750K IOPS / 4K !!!), il est encore temps de s’inscrire pour l’évènement qui aura lieu le Mardi 24 Juin.

image

Publié dans Hyper-V, SQL Server, Windows | Tagué , | Poster un commentaire

SQL Server 2014 is Customer Tested!

A lire, un post de Mark Souza sur le blog de l’équipe SQL Server.

image

Plus de raisons d’attendre, SQL Server 2014 en production, c’est possible, dès maintenant. Si vous souhaitez en savoir plus sur les nouveautés SQL Server 2014 ou si vous souhaitez migrer vers cette nouvelle version et bénéficier de toutes ses nouveautés, contactez moi …

Publié dans SQL Server | Tagué | Poster un commentaire

Posters stockage Windows Server 2012 R2

Pour ceux d’entre vous qui affectionnent les posters imprimés en A0 comme décoration sur les murs, je ne saurais trop vous conseiller de télécharger quelques PDFs sur le site de Microsoft.

Le lien vous donne accès aux 7 posters relatifs au stockage (disques CSV, déduplication, Shared VHDX, Storage spaces, Tiering, Scale Out File Server,…).

image

Gageons que près de 80% des serveurs seront virtualisés d’ici peu. Chers DBAs, il est temps de jeter un œil sous le capot de vos machines virtuelles.

Happy storage

Publié dans Hyper-V, Windows | Tagué , | Poster un commentaire

SQL Server 2014 – Performance TempDB et écritures disque

Encore une nouveauté peu mise en avant sur SQL Server 2014 ! Certes pas très sexy, mais je peux vous certifier que bien des workload vont être (très) positivement impactés par cette nouveauté.

Vous n’êtes pas sans savoir que la TempDB possède un mécanisme de logging (écriture dans le fichier LDF) légèrement différent de celui des autres bases de données. En effet, nul besoin d’assurer le REDO en cas de crash, car la TempDB est reconstruite à chaque démarrage de votre instance.  On ne récupère rien de ce qui a été fait dans cette base de données.

Si vous avez un doute, faites le test suivant : Stoppez le service SQL, supprimez les fichiers de données et de journal de transaction de cette base et redémarrez le service SQL. Les fichiers TempDB sont de nouveau présents.

Donc la TempDB est performante, car moins de journalisation. Mais il était encore possible d’améliorer les choses, car comme toute autre base de donnée, les pages qui la composent dans le buffer pool doivent être écrites sur disque, par le checkpoint et ou lazy writer. Et cela devait se faire assez rapidement.

Avec SQL Server 2014 les pages de données d’objets temporaire peuvent être allouées, utilisées et libérées sans même avoir été écrites sur disque. On est donc moins stressé à écrire rapidement ces pages sur disque, impliquant un gain de performance, mais également, une baisse non négligeable d’activité sur les disques TempDB Data, ce qui dans le cas d’un SAN va bénéficier à tout le monde …

Deux opérations principales vont bénéficier de cette amélioration :

  • création d’index avec l’option sort in tempdb
  • opérations de bulk insert dans des tables temporaires.

Pour vous démontrer le gain que cela peut amener, j’ai choisi le second point. Afin d’être le plus équitable possible, mes 2 VMs sont équivalentes : 4 vCPU, 8GB de RAM, SQL Server installé de la même manière, disques rotatifs (pour bien mesurer la différence qui serait gommée par un disque flash plus rapide en écriture).

Voici le script de démo (joué à tour de rôle sur chacun des serveurs):


-- Restart SQL Server
-- PowerShell : restart-service MSSQLSERVER


-- augmentation de taille de la TempDB
USE [master]
GO
ALTER DATABASE [tempdb] 
MODIFY FILE ( NAME = N'tempdev', SIZE = 102400KB )
GO
ALTER DATABASE [tempdb] 
MODIFY FILE ( NAME = N'templog', SIZE = 20480KB )
GO


-- Création procédure de Test
Use [TempDB]
GO

CREATE PROCEDURE dbo.usp_Test
AS
BEGIN

	SET NOCOUNT ON
	
	DECLARE @Total Money = 0
	DECLARE @min int = 1 
	DECLARE @max int = 2000
	
	WHILE @min <= @max
	BEGIN
		SELECT *
		INTO #result
		FROM AdventureWorks.Sales.SalesOrderHeader

		SELECT @Total = @Total + SUM(TotalDue)
		FROM #result

		DROP TABLE #result

		SET @min += 1
	END

END
GO


-- Vérification du nombre d'IOs sur la TempDB
SELECT DB_NAME(DB_ID()) AS [Database Name], df.name AS [Logical Name], vfs.[file_id], 
		df.physical_name AS [Physical Name], vfs.num_of_reads, vfs.num_of_writes, 
		CAST(vfs.num_of_bytes_read/1048576.0 AS DECIMAL(10, 2)) AS [MB Read], 
		CAST(vfs.num_of_bytes_written/1048576.0 AS DECIMAL(10, 2)) AS [MB Written]
FROM sys.dm_io_virtual_file_stats(DB_ID(), NULL) AS vfs
INNER JOIN sys.database_files AS df WITH (NOLOCK)
ON vfs.[file_id]= df.[file_id]
OPTION (RECOMPILE);
GO

Exec usp_Test
GO

SELECT DB_NAME(DB_ID()) AS [Database Name], df.name AS [Logical Name], vfs.[file_id], 
		df.physical_name AS [Physical Name], vfs.num_of_reads, vfs.num_of_writes, 
		CAST(vfs.num_of_bytes_read/1048576.0 AS DECIMAL(10, 2)) AS [MB Read], 
		CAST(vfs.num_of_bytes_written/1048576.0 AS DECIMAL(10, 2)) AS [MB Written]
FROM sys.dm_io_virtual_file_stats(DB_ID(), NULL) AS vfs
INNER JOIN sys.database_files AS df WITH (NOLOCK)
ON vfs.[file_id]= df.[file_id]
OPTION (RECOMPILE);
GO


DROP PROCEDURE usp_Test

Une simple boucle créant une table temporaire et lisant des informations … SQL Server est redémarré avant chaque test.

image

Plus de 40 minutes et 12,5GB écrit dans le fichier TempDB Data !

Avec SQL Server 2014 le temps d’exécution est de 1:37. On voit aussi que 40 écritures disques ont été effectuées sur le fichier de data, pour 300KB

image

Le constat est sans appel, la fonctionnalité d’eager write démontre tout son intérêt. Le gain de performance est hallucinant, tant que l’on dispose de suffisamment de mémoire, sinon, on reprend le fonctionnement antérieur.

Les curieux qui disposent de l’édition entreprise de SQL Server ont peut être eu l’idée de comparer les performances avec l’utilisation de tables non durables.

Il est très compliqué d’établir un comparatif car dans la procédure stockée compilée nativement, on ne peut utiliser que des tables InMemory. Reste donc l’option Interop. mais peu performante dans ce cas là (6:19 minutes).

Impossible d’annoncer le gain que vous obtiendrez à migrer sur SQL Server 2014, beaucoup de paramètres entrent en jeux. Mais en tenant compte des performances accrues de la TempDB, du nouvel estimateur de cardinalités, du SELECT INTO parallélisé, du Buffer Pool Extension, du gouverneur de ressources qui gère les IOs, et bien sur Hekaton, nul doute que SQL Server 2014 est né sous le signe de la performance.

Happy eager write behaviour !

Publié dans SQL Server | Tagué , , | 1 commentaire

SQL 2014 – Nouvelle DMV sys.dm_exec_query_profiles

Combien de fois, dans votre vie de DBA vous êtes vous posé la question : mais que fait donc cette requête ? Où en est–elle ? Est-ce que le processus avance ou bien est-il bloqué ? Combien de  temps encore avant la fin de la requête ? Combien de lignes ont été traitées ? Est-ce que je suis en train de lire des données ou bien este ce que j’ai commencé l’opération de jointure ou d’agrégation ?

La DMV sys.dm_exec_requests était une de vos fidèles alliée pour découvrir la vérité.

Par exemple, prenons le cas d’un simple SELECT count(*) FROM dbo.FactOnlineSales. Une table de la base ContosoRetailDW que j’ai légèrement gonflée pour atteindre près de 139 000 000 d’enregistrements.

image

Et cette requête a durée 45 secondes… Pourquoi ? Que dit dm_exec_requests ?

image

Un wait de type CXPACKET. Un “problème” de parallélisme donc … Effectivement, vu le nombre de lignes, il est possible de penser que le parallélisme est la cause …

Mais si on creuse légèrement à l’aide de sys.dm_os_waiting_tasks, on s’aperçoit alors que le Thread 0 attends (CXPACKET) que les 2 threads de la requête parallélisée terminent leurs IOs (PAGEIOLATCH).

image

Légèrement plus avancé, mais il reste une question fondamentale : suis-je au tout début du traitement de la requête et puis-je aller boire un café, ou bien celle ci est sur el point de se terminer ?

Un grand pas a été franchi avec la sortie de SQL Server 2014. Une petite DMV qui passe relativement inaperçue au vue des mastodontes que sont Hekaton, AlwaysON, BPE et autres top features.

Please, welcome sys.dm_exec_query_profiles

Voyons donc ce que renvoie cette DMV lors d’une requête qui dure un peu :

SELECT node_id,physical_operator_name, 
       SUM(row_count) row_count, 
	   SUM(estimate_row_count) AS estimate_row_count, 
	   CAST(SUM(row_count)*100 AS float)/SUM(estimate_row_count) As '% compete'
FROM sys.dm_exec_query_profiles 
WHERE session_id=56
GROUP BY node_id,physical_operator_name
ORDER BY node_id;

 

image

Cool non ?

Vous savez que vous êtes en plein Cluster Index Scan, que que vous avez lu x lignes sur les y (du plan estimé). Belle indication de progrès d’une requête non ?

Il existe quand même un prérequis, et de taille : SET STATISTICS XML ON (ou SET STATISTICS PROFILE ON). Mais on n’a rien sans rien …

Pour un plan de type comportant un Nested Loop, pour lequel l’exécution est quasi complète (1 seul enregistrement locked par une autre session) :

image

image

Fini donc la pause café prétextant que vous ne savez pas où en est la progression de la requête …

Happy profiling.

Publié dans SQL Server | Tagué , , | Poster un commentaire