<?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>mysql &#8211; Manoa Ratefiarison</title>
	<atom:link href="https://manoa.ratefiarison.com/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>https://manoa.ratefiarison.com</link>
	<description>Music &#38; code</description>
	<lastBuildDate>Tue, 07 Jan 2025 08:55:42 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://manoa.ratefiarison.com/wp-content/uploads/2022/09/cropped-manoaratefiarison-favicon-32x32.png</url>
	<title>mysql &#8211; Manoa Ratefiarison</title>
	<link>https://manoa.ratefiarison.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CodeIgniter : corriger les requêtes lentes SELECT GET_LOCK() sur ci_sessions</title>
		<link>https://manoa.ratefiarison.com/2025/01/07/codeigniter-requetes-lentes-select-get_lock-ci_sessions/</link>
					<comments>https://manoa.ratefiarison.com/2025/01/07/codeigniter-requetes-lentes-select-get_lock-ci_sessions/#respond</comments>
		
		<dc:creator><![CDATA[Manoa Ratefiarison]]></dc:creator>
		<pubDate>Tue, 07 Jan 2025 10:00:00 +0000</pubDate>
				<category><![CDATA[Administration système]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[sessions]]></category>
		<guid isPermaLink="false">https://manoa.ratefiarison.com/?p=328</guid>

					<description><![CDATA[Dans ce petit article, je vous indique comment corriger les requêtes SQL lentes SELECT GET_LOCK() de la table ci_sessions sur une installation de CodeIgniter. Que signifient les requêtes lentes SELECT GET_LOCK() sur ci_sessions ? La table ci_sessions est destiné à stocker les sessions des visiteurs d&#8217;un site CodeIgniter. Celle-ci est notamment utilisée quand la session ... <a title="CodeIgniter : corriger les requêtes lentes SELECT GET_LOCK() sur ci_sessions" class="read-more" href="https://manoa.ratefiarison.com/2025/01/07/codeigniter-requetes-lentes-select-get_lock-ci_sessions/" aria-label="En savoir plus sur CodeIgniter : corriger les requêtes lentes SELECT GET_LOCK() sur ci_sessions">Lire la suite</a>]]></description>
										<content:encoded><![CDATA[
<p>Dans ce petit article, je vous indique comment corriger les requêtes SQL lentes SELECT GET_LOCK() de la table ci_sessions sur une installation de CodeIgniter.</p>



<span id="more-328"></span>



<h2 class="wp-block-heading">Que signifient les requêtes lentes SELECT GET_LOCK() sur ci_sessions ?</h2>



<p>La table <strong>ci_sessions</strong> est destiné à stocker les sessions des visiteurs d&rsquo;un site CodeIgniter. Celle-ci est notamment utilisée quand la <strong>session driver</strong> est configuré sur <strong>database</strong>.</p>



<p>Elle permet à CodeIgniter de stocker les informations de sessions de chaque visiteur dans la base de données. Selon les cas, cela peut présenter un avantage ou un désavantage.</p>



<h2 class="wp-block-heading">Pourquoi la requête SELECT GET_LOCK() est lente ?</h2>



<p>En vérité, la requête en elle-même n&rsquo;est pas lente. Elle est juste suspendue pendant la période de verrouillage. En effet, cette requête fait justement <a href="https://forum.codeigniter.com/showthread.php?tid=64893&amp;pid=330998#pid330998" data-type="link" data-id="https://forum.codeigniter.com/showthread.php?tid=64893&amp;pid=330998#pid330998" target="_blank" rel="noreferrer noopener">ce qu&rsquo;il est censé faire</a> : verrouiller la session durant le chargement d&rsquo;une page.</p>



<p>La constatation de lenteur survient lorsque la requête a été initiée alors qu&rsquo;un autre chargement de page est en cours : il attend alors que l&rsquo;autre page ait fini de charger pour obtenir à son tour le verrou sur la table de session.</p>



<p>Vous constaterez alors une entrée de ce type dans votre fichier log slow queries dans MySQL :</p>



<pre class="wp-block-code"><code># User@Host: codeigniter&#91;codeigniter] @ localhost &#91;127.0.0.1]
# Thread_id: 12345  Schema: codeigniter  QC_hit: No
# Query_time: 22.040801  Lock_time: 0.000000  Rows_sent: 1  Rows_examined: 0
# Rows_affected: 0  Bytes_sent: 70
SET timestamp=xxxxxxxxxx;
SELECT GET_LOCK('653407ce5dddb2b0745d76a5f6dc73c0', 300) AS ci_session_lock;</code></pre>



<h2 class="wp-block-heading">Comment éviter que la requête SELECT GET_LOCK() empêche le chargement simultané des pages ?</h2>



<p>Si vous souhaitez permettre à un utilisateur de charger simultanément plusieurs pages, vous devriez songer à utiliser un autre système de stockage de session qui vous permet un accès simultané à celui-ci.</p>



<p>Le plus simple est de basculer sur un stockage de session par fichiers. Pour cela, ajustez les paramètres suivants dans votre fichier de configuration CodeIgniter :</p>



<pre class="wp-block-code"><code>$config&#91;'sess_driver'] = 'files'; // was previously 'database'
$config&#91;'sess_save_path'] = sys_get_temp_dir();</code></pre>



<p>Vous pouvez également envisager d&rsquo;utiliser d&rsquo;<a href="https://codeigniter.com/user_guide/libraries/sessions.html#session-drivers" data-type="link" data-id="https://codeigniter.com/user_guide/libraries/sessions.html#session-drivers" target="_blank" rel="noreferrer noopener">autres systèmes de stockage de sessions</a> telles que Memcached ou Redis, notamment si votre application requiert un système de session centralisée. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://manoa.ratefiarison.com/2025/01/07/codeigniter-requetes-lentes-select-get_lock-ci_sessions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Comment réduire la taille utilisée par _wp_attachment_metadata sur WordPress ?</title>
		<link>https://manoa.ratefiarison.com/2023/09/29/nettoyer-wp-attachment-metadata/</link>
					<comments>https://manoa.ratefiarison.com/2023/09/29/nettoyer-wp-attachment-metadata/#respond</comments>
		
		<dc:creator><![CDATA[Manoa Ratefiarison]]></dc:creator>
		<pubDate>Fri, 29 Sep 2023 06:00:00 +0000</pubDate>
				<category><![CDATA[Administration système]]></category>
		<category><![CDATA[base de données]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[nettoyage]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://manoa.ratefiarison.com/?p=303</guid>

					<description><![CDATA[_wp_attachment_metadata peut être l&#8217;une des métadonnées les plus gourmands sur WordPress. Elle se situe dans la table wp_postmeta et concerne les médias dans WordPress. Voici comment optimiser sa taille. Que contient _wp_attachment_metadata ? _wp_attachment_metadata contient les métadonnées associées à votre image dans un format sérialisé pour se permettre d&#8217;être stocké dans un champ « string » (texte). ... <a title="Comment réduire la taille utilisée par _wp_attachment_metadata sur WordPress ?" class="read-more" href="https://manoa.ratefiarison.com/2023/09/29/nettoyer-wp-attachment-metadata/" aria-label="En savoir plus sur Comment réduire la taille utilisée par _wp_attachment_metadata sur WordPress ?">Lire la suite</a>]]></description>
										<content:encoded><![CDATA[
<p><strong>_wp_attachment_metadata </strong>peut être l&rsquo;une des métadonnées les plus gourmands sur WordPress. Elle se situe dans la table <strong>wp_postmeta </strong>et concerne les médias dans WordPress. Voici comment optimiser sa taille.</p>



<span id="more-303"></span>



<h2 class="wp-block-heading">Que contient _wp_attachment_metadata ?</h2>



<p><strong>_wp_attachment_metadata </strong>contient les métadonnées associées à votre image dans un format sérialisé pour se permettre d&rsquo;être stocké dans un champ « string » (texte).</p>



<p>Pour constater la taille utilisée par ce dernier, vous pouvez exécuter la requête SQL suivante sur votre base de données (depuis phpMyAdmin par exemple) :</p>



<pre class="wp-block-code"><code>SELECT SUM(LENGTH(meta_value)) as meta_size FROM wp_postmeta WHERE meta_key = '_wp_attachment_metadata';</code></pre>



<p>À noter que la valeur indiquée est <strong>en octets</strong>. Ce type de métadonnées ne devrait être disponible que pour les posts de type <strong>« attachment »</strong>, autrement dit que les médias. Cela se vérifie assez facilement avec la requête SQL suivante :</p>



<pre class="wp-block-code"><code>SELECT wp_posts.post_type, meta_key FROM wp_postmeta INNER JOIN wp_posts ON wp_posts.ID = wp_postmeta.post_id WHERE meta_key = '_wp_attachment_metadata' GROUP BY wp_posts.post_type;</code></pre>



<p>Vous ne devriez alors voir qu&rsquo;un seul post_type qui est attachment.</p>



<p>Prenons maintenant une ligne au hasard :</p>



<pre class="wp-block-code"><code>SELECT meta_key, meta_value FROM wp_postmeta WHERE meta_key = '_wp_attachment_metadata' ORDER BY RAND() LIMIT 0,1;</code></pre>



<p>Si nous regardons son contenu, nous verrons que celui-ci contient entre autres :</p>



<ul class="wp-block-list">
<li>Les métadonnées EXIF de l&rsquo;image (modèle de caméra, paramètres de la prise &#8230;)</li>



<li>Les miniatures existantes et leurs tailles</li>
</ul>



<h2 class="wp-block-heading">Comment réduire la taille de _wp_attachment_metadata ?</h2>



<h3 class="wp-block-heading">Réduire la quantité d&rsquo;images sur le site</h3>



<p>Cela ne vient pas forcément à l&rsquo;esprit, mais plus il y a d&rsquo;images, plus il y aura de métadonnées d&rsquo;images. L&rsquo;action le plus simple et de supprimer les médias inutilisés sur votre site web. Le <a href="https://wordpress.org/plugins/media-cleaner/" data-type="link" data-id="https://wordpress.org/plugins/media-cleaner/" target="_blank" rel="noopener">plugin Media Cleaner</a> est justement là pour effectuer cette tâche.</p>



<h3 class="wp-block-heading">Réduire la quantité de miniatures sur votre site</h3>



<p>Étant donné que chaque format de miniature rajoute des données pour chaque image sur _wp_attachment_metadata, réduire la quantité de miniatures vous aidera également à réduire les données.</p>



<p>Pour commencer, vous pouvez <a href="https://developer.wordpress.org/cli/commands/media/image-size/" target="_blank" rel="noopener">lister les formats de miniatures existantes</a> sur votre site grâce à WP-CLI (disponible en ligne de commande) :</p>



<pre class="wp-block-code"><code>wp media image-size</code></pre>



<p>Commencez alors par identifier les formats et leur origine : thème ou plugin. En effet, vous allez devoir faire un peu de recherche pour savoir quel plugin ou quel thème a introduit ce format de miniature.</p>



<p>Le plugin ou le thème aura à utiliser la <a href="https://developer.wordpress.org/reference/functions/add_image_size/" target="_blank" rel="noopener">fonction WordPress <strong>add_image_size()</strong></a> pour effectuer cette action, vous pourrez alors rechercher les fichiers PHP utilisant cette commande pour constater les plugins et thèmes impliqués. Vous pouvez donc utiliser la commande « grep » pour rechercher rapidement ces fichiers :</p>



<pre class="wp-block-code"><code>cd /home/monsite/public_html/wp-content
grep -r -H 'add_image_size'</code></pre>



<p>(assurez-vous de remplacer « /home/monsite/public_html » par la racine de votre site web)</p>



<p>Désactivez et supprimez ensuite le plugin et/ou le thème de votre site web pour supprimer ce format de miniature, et regénérez vos miniatures avec WP-CLI :</p>



<pre class="wp-block-code"><code>wp media regenerate --yes</code></pre>



<p>IMPORTANT !!! Cette commande prendra plusieurs minutes, voire plusieurs heures pour s&rsquo;exécuter, et sera gourmand en ressources CPU.</p>



<h3 class="wp-block-heading">Supprimer les données EXIF de vos images</h3>



<p>Vous pouvez aussi supprimer vos données EXIF de vos images pour réduire la taille de la métadonnée _wp_attachment_metadata.</p>



<p>Malheureusement, je n&rsquo;ai aujourd&rsquo;hui retrouvé aucun outil pour appliquer cela sur les images déjà existantes sur votre site. Je ne pourrais que vous conseiller de supprimer ces informations en amont, avant d&rsquo;ajouter l&rsquo;image sur le site. Vous pouvez faire cela avec votre éditeur de photo (Photoshop, Paint.NET, &#8230;) ou avec ce genre d&rsquo;outil en ligne : <a href="https://www.verexif.com" target="_blank" rel="noopener">verexif.com</a>.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Si vous avez un problème avec _wp_attachment_metadata, c&rsquo;est sûrement que votre site web contient beaucoup d&rsquo;images et/ou votre thème et vos plugins demandent à ce que WordPress génère beaucoup de miniatures.</p>



<p>Un nettoyage de cette métadonnée allègera votre table wp_postmeta et améliorera vos performances, toutefois si vous n&rsquo;avez pas la possibilité de réduire cela et que cela vous pose un problème, il sera nécessaire d&rsquo;envisager un serveur MySQL (et donc probablement une formule d&rsquo;hébergement web) avec plus de ressources.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://manoa.ratefiarison.com/2023/09/29/nettoyer-wp-attachment-metadata/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
