<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog SQL d&#039;un développeur Microsoft. &#187; tuning</title>
	<atom:link href="https://blog.developpez.com/ylarvor/pcategory/optimisation/tuning/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/ylarvor</link>
	<description>SQL or No-SQL !</description>
	<lastBuildDate>Sat, 04 Jun 2016 19:39:50 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>[SGBD] [Optimisation] Pourquoi l&#8217;écriture de fonctions encapsulées est à bannir en SQL ?</title>
		<link>https://blog.developpez.com/ylarvor/p5382/optimisation/tuning/sgbd_optimisation_avant_d_optimiser_comm</link>
		<comments>https://blog.developpez.com/ylarvor/p5382/optimisation/tuning/sgbd_optimisation_avant_d_optimiser_comm#comments</comments>
		<pubDate>Thu, 27 Mar 2008 20:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je voudrais revenir sur un article de Rudi éclairant pour moi : http://rudi.developpez.com/sqlserver/tutoriel/optimisation/ Dans cet article, il écrit &#171;&#160;Une erreur commune, qui peut affecter fortement les performances, est d&#8217;écrire du code SQL avec la même approche intellectuelle que pour l&#8217;écriture de code procédural.&#160;&#187; Dans mon entreprise, nous avons une base qui a été conçu sur [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je voudrais revenir sur un article de Rudi éclairant pour moi :</p>
<p><a href="http://rudi.developpez.com/sqlserver/tutoriel/optimisation/" target="top">http://rudi.developpez.com/sqlserver/tutoriel/optimisation/</a></p>
<p>Dans cet article, il écrit &laquo;&nbsp;Une erreur commune, qui peut affecter fortement les performances, est d&rsquo;écrire du code SQL avec la même approche intellectuelle que pour l&rsquo;écriture de code procédural.&nbsp;&raquo;<br />
<span id="more-11"></span><br />
Dans mon entreprise, nous avons une base qui a été conçu sur ce principe de l&rsquo;encapsulation. Les requêtes de cette base, assez complexes, ont été rendu lisibles par l&rsquo;application des principes du développement procédurale : &laquo;&nbsp;découpe et place dans des blocs plus petits&nbsp;&raquo;.</p>
<p>Cette base utilise donc de nombreuses fonctions tables. des fonctions. des fonctions à l&rsquo;intérieur de fonctions tables. des fonctions tables à l&rsquo;intérieur de fonctions tables&#8230;</p>
<p>Le résultat est <strong>lisible</strong> mais <strong>contre-performant </strong> comme l&rsquo;explique rudi dans la partie II-D-1.</p>
<p>Par conséquent, si vous avez en charge le développement de requêtes, de procédures stockées : <strong>Oubliez </strong>ce que vous avez appris comme bon développeur, <strong>ne réutilisez pas</strong>, <strong>n&rsquo;encapsulez pas</strong>, <strong>soyez économe</strong> avec les fonctions T-SQL.</p>
<p>Pour obtenir une requête rapide, vous devez écrire une requête littérale! d&rsquo;un bloc! Pour rendre lisible, indentez! Organisez les jointures mais n&rsquo;encapsulez pas! Ne factorisez pas en SQL !</p>
<p>Bon coding!</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SGBD] Pourquoi utiliser les Compteur &#8230; Reads plutôt que la durée de la requête ?</title>
		<link>https://blog.developpez.com/ylarvor/p5347/optimisation/tuning/dba_compteur_duration_aamp_analyse_reads</link>
		<comments>https://blog.developpez.com/ylarvor/p5347/optimisation/tuning/dba_compteur_duration_aamp_analyse_reads#comments</comments>
		<pubDate>Fri, 21 Mar 2008 16:45:57 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Apprenti DBA, je viens d&#8217;apprendre pourquoi les DBA Production utilisent les compteurs &#171;&#160;logical reads,physical reads&#8230;&#160;&#187; plutôt que la durée de la requête. Ecoutez donc&#8230; En bon développeur, je me disais que la trace DURATION du profiler fournissait toute l&#8217;information nécessaire, une requête de plus de 10 secondes, était une requête à corriger! En effet, cela [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Apprenti DBA, je viens d&rsquo;apprendre pourquoi les DBA Production utilisent les compteurs &laquo;&nbsp;logical reads,physical reads&#8230;&nbsp;&raquo; plutôt que la durée de la requête. Ecoutez donc&#8230;<br />
<span id="more-10"></span><br />
En bon développeur, je me disais que la trace DURATION du profiler fournissait toute l&rsquo;information nécessaire, une requête de plus de 10 secondes, était une requête à corriger!<br />
En effet, cela se vérifie sur un serveur faiblement sollicité mais dans des configurations fortement sollicitées comme celles que rencontrent les DBA Production, la durée ne veut plus rien dire suivant l&rsquo;heure de la journée.En effet, dans ces configurations, la durée de la requête devient variable en fonction de la charge du serveur.</p>
<p>Pour trouver des repères pour l&rsquo;optimisation de la requête, on doit alors prendre des données fixes comme le nombres d&rsquo;accès en lecture physique, logique&#8230; </p>
<p>Je vous rappelle que ce qui est le plus consommateur en temps dans une requête, ce sont les accès physiques au disque. </p>
<p>Si on réduit le nombre d&rsquo;accès, on réduit proportionnellement la durée de la requête quelque soit la charge du serveur.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A quel moment doit avoir lieu l&#8217;optimisation d&#8217;une base ?</title>
		<link>https://blog.developpez.com/ylarvor/p5023/ecosysteme/pointdevue/developpeur_de_bases_de_donnees_un_poste</link>
		<comments>https://blog.developpez.com/ylarvor/p5023/ecosysteme/pointdevue/developpeur_de_bases_de_donnees_un_poste#comments</comments>
		<pubDate>Wed, 16 Jan 2008 16:06:35 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[PointDeVue]]></category>
		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217; importance de la normalisation de la base est essentiel. Le modèle relationnelle a fait passer le gros du travail de la partie développement à la partie conception. L&#8217; Architecte de la base, premier intervenant du projet, qui utilise POWER AMC ou Toad Data Modeler doit respecter absolument la 3 ème forme normale dans la [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>L&rsquo; importance de la normalisation de la base est essentiel</strong>. Le modèle relationnelle a fait passer le gros du travail de la partie développement à la partie conception.<br />
L&rsquo; Architecte de la base, premier intervenant du projet, qui utilise POWER AMC ou Toad Data Modeler doit respecter absolument la 3 ème forme normale dans la définition de son modèle. On ne peut pas faire l&rsquo; économie d&rsquo;un modéle relationnel dans la conception d&rsquo; une application.</p>
<p><strong>Le deuxième pôle de l&rsquo; optimisation est le soin apporté à l&rsquo; écriture du SQL</strong>. Privilégié le plus possible l&rsquo; écriture de SQL à l&rsquo; écriture de Transact SQL. L&rsquo; utilisation de SQL permet l&rsquo; indexation et des performances supérieurs. Par exemple, la semaine dernière, mon patron me signale une application dont les temps de réponses dépassés 30 secondes. Fier de mes connaissances, je propose d&rsquo; optimiser la requête par une indexation adéquate. Je passe 3H00 sur la requête pour finalement découvrir que les 30 secondes sont perdus par l&rsquo; utilisation en cascade de fonctions. Évidemment, en tant que développeur, on doit répondre à des besoins fonctionnelles et l&rsquo;encapsulation en fonction répond bien à nos besoins mais en production, avec 100000 lignes dans une table, on perd un temps précieux à l&rsquo; exécution.</p>
<p><strong>Le troisième pôle de l&rsquo; optimisation est l&rsquo; indexation</strong>. Sur des tables de plus de 1000 lignes, il devient important d&rsquo; indexer. Un produit comme POWER AMC vous facilite le travail puisqu&rsquo; il génére la majorité des index à la conception pour des tables bien normalisé.</p>
<p>On découvre donc bien que l&rsquo; essentiel de l&rsquo; optimisation d&rsquo; une base de données ne se passe pas donc pas en production, par le DBA, mais lors de la fabrication, par le développeur et l&rsquo;architecte de la base. </p>
<p>Ne simplifions pas trop, les développeurs règlent généralement très bien les problèmes apparents et les problèmes de performances apparaissent souvent très tard dans le cycle de vie et entraîne des interventions des DBA. Néanmoins, la montée en charge future d&rsquo; une application peut être prévu très tôt par le respect de normes.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dénormaliser une base de données.</title>
		<link>https://blog.developpez.com/ylarvor/p4897/optimisation/tuning/dnormaliser_une_base_de_donnes</link>
		<comments>https://blog.developpez.com/ylarvor/p4897/optimisation/tuning/dnormaliser_une_base_de_donnes#comments</comments>
		<pubDate>Thu, 06 Dec 2007 11:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pour optimiser une requete, la premiere des choses à faire, si la ou les tables comptent plusieurs miliers d&#8217;enregistrement avec des valeurs trés différentes, est de placer des index, de faire tourner et de supprimer les index non utilisés. Si vous avez exploré toute les possibilités des index, et que votre requete est toujours trop [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pour optimiser une requete, la premiere des choses à faire, si la ou les tables comptent plusieurs miliers d&rsquo;enregistrement avec des valeurs trés différentes, est de placer des index, de faire tourner et de supprimer les index non utilisés. Si vous avez exploré toute les possibilités des index, et que votre requete est toujours trop lente, la solution est la denormalisation. La dénormalisation doit être utilisée sans complexe dans les bases en lecture seule, sans mise à jour. Dans les bases transactionnelles, il est nécessaire de mettre en place des triggers pour assurer la cohérence de la base.</p>
<p>Imaginez deux tables en 3 eme forme normale.<br />element(idelement,nomelement)<br />structure(id, nom, idelement )<br />la dénormalisation consiste à garder element à l&rsquo;identique et modifier structure de la façon suivante (2 eme forme normale):<br />structure(id,nom,idelement,nomelement)<br />ainsi la requete associant element et structure est instantannée&#8230;<br />SELECT id,nom,nomelement from structure.</p>
<p>bon developpement</p>
<p>pour aller plus loin, un debat : <a href="http://www.developpez.net/forums/showthread.php?t=6231">http://www.developpez.net/forums/showthread.php?t=6231</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
