<?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>performance &#8211; Manoa Ratefiarison</title>
	<atom:link href="https://manoa.ratefiarison.com/tag/performance/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>performance &#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>
	</channel>
</rss>
