<?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>Enrico Tenivella &#187; Mysql</title>
	<atom:link href="http://www.texilee.it/category/mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://www.texilee.it</link>
	<description>Diario di bordo di un sistemista</description>
	<lastBuildDate>Mon, 21 Jun 2010 11:55:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>[RISOLTO] Mysql password di root persa</title>
		<link>http://www.texilee.it/risolto-mysql-password-di-root-persa</link>
		<comments>http://www.texilee.it/risolto-mysql-password-di-root-persa#comments</comments>
		<pubDate>Thu, 19 Jun 2008 13:19:24 +0000</pubDate>
		<dc:creator>texilee</dc:creator>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[[RISOLTO]]]></category>

		<guid isPermaLink="false">http://www.texilee.it/?p=255</guid>
		<description><![CDATA[texilee:/# mysql ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217; (using password: NO) texilee:/# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217; (using password: YES) texilee:/# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217; (using password: YES) texilee:/# /etc/init.d/mysql stop Stopping MySQL database [...]]]></description>
			<content:encoded><![CDATA[<p>texilee:/# mysql<br />
ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217; (using password: NO)<br />
texilee:/# mysql -u root -p<br />
Enter password:<br />
ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217; (using password: YES)<br />
texilee:/# mysql -u root -p<br />
Enter password:<br />
ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217; (using password: YES)</p>
<p>texilee:/# /etc/init.d/mysql stop<br />
Stopping MySQL database server: mysqld.</p>
<p>texilee:/# mysqld_safe &#8211;skip-grant-tables &#038;<br />
[1] 29756<br />
texilee:/## Starting mysqld daemon with databases from /var/lib/mysql<br />
mysqld_safe[29793]: started</p>
<p>texilee:/# mysql -u root<br />
Welcome to the MySQL monitor.  Commands end with ; or \g.<br />
Your MySQL connection id is 1<br />
Server version: 5.0.32-Debian_7etch5-log Debian etch distribution</p>
<p>Type &#8216;help;&#8217; or &#8216;\h&#8217; for help. Type &#8216;\c&#8217; to clear the buffer.</p>
<p>mysql> use mysql;<br />
Reading table information for completion of table and column names<br />
You can turn off this feature to get a quicker startup with -A</p>
<p>Database changed<br />
mysql> update user set password=PASSWORD(&#8216;__NEW__PASSWORD__&#8217;) where User=&#8217;root&#8217;;<br />
Query OK, 2 rows affected (0.02 sec)<br />
Rows matched: 2  Changed: 2  Warnings: 0</p>
<p>mysql><br />
mysql><br />
mysql> flush privileges;<br />
Query OK, 0 rows affected (0.00 sec)</p>
<p>mysql> \q<br />
Bye</p>
<p>texilee:/# kill 29756 &#038;&#038; /etc/init.d/mysql start</p>
]]></content:encoded>
			<wfw:commentRss>http://www.texilee.it/risolto-mysql-password-di-root-persa/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql processlist sleep locked</title>
		<link>http://www.texilee.it/mysql-processlist-sleep-locked</link>
		<comments>http://www.texilee.it/mysql-processlist-sleep-locked#comments</comments>
		<pubDate>Thu, 22 Nov 2007 21:21:16 +0000</pubDate>
		<dc:creator>texilee</dc:creator>
				<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://www.texilee.it/2007/11/22/mysql/mysql-processlist-sleep-locked/</guid>
		<description><![CDATA[L&#8217;output delle seguenti istruzioni echo "show processlist;" &#124; \ mysql -s -u root --password="xxxxxxxxxx"&#124; \ awk -v tot=0 ' {print $4; $tot=tot+1; \ print "in TOTALE"}'&#124; \ grep -v NULL&#124; sort &#124; uniq -c &#124; sort -n &#124; less restituisce una tabella (mal formattata ma rende l&#8217;idea) di due colonne contenenti il numero totale di [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;output delle seguenti istruzioni</p>
<p><code><br />
echo "show processlist;" | \<br />
mysql -s -u root --password="xxxxxxxxxx"| \<br />
awk -v tot=0 ' {print $4; $tot=tot+1; \<br />
print "in TOTALE"}'| \<br />
grep -v NULL| sort | uniq -c | sort -n | less<br />
</code></p>
<p>restituisce una tabella (mal formattata ma rende l&#8217;idea) di due colonne contenenti il numero totale di connessioni  in piedi per db ed il nome del db stesso, in fondo restituisce il numero totale delle connessioni stabilite.</p>
<p>Per settare il numero massimo consentito (dopo si presenta il classico too many connection ) si setta la variabile</p>
<p><strong>max-connections</strong></p>
<p>Può tornare utile come strumento di monitoraggio al volo.</p>
<p>La connessione una volta stabilita rimane in attesa di poter essere riutilizzata ( da un processo figlio di apache per esempio )</p>
<p>Se si vuole modificare questo paramentro settate il timeout in secondi che desiderate</p>
<p><strong>interactive_timeout               28800</strong></p>
<p>Se riscontrate errori sul numero di connessioni massime  e notate query in stato locked potete AL LIMITE della disperazione affidarvi al comando</p>
<p><strong> kill ID </strong></p>
<p>L&#8217;ID lo recuerate da &#8220;show processlist&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.texilee.it/mysql-processlist-sleep-locked/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql Caching Status Report</title>
		<link>http://www.texilee.it/mysql-caching-status-report</link>
		<comments>http://www.texilee.it/mysql-caching-status-report#comments</comments>
		<pubDate>Wed, 11 Oct 2006 09:55:32 +0000</pubDate>
		<dc:creator>texilee</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://texilee.gruppoinfo.it/2006/10/11/mysql/mysql-caching-status-report/</guid>
		<description><![CDATA[Le funzionalità del caching di Mysql sono state trattate tempo fa, questo è solo un semplice script per ottenere informazioni sullo stato del caching senza dover accedere ad una console mysql. I risultati verranno scritti sul file query_cache.html in formato HTML, nel file bash_history comparirà ovviamente la password di root di mysql. echo "SHOW STATUS [...]]]></description>
			<content:encoded><![CDATA[<p>Le funzionalità del caching di Mysql sono state trattate tempo fa, questo è solo un semplice script per ottenere informazioni sullo stato del caching senza dover accedere ad una console mysql. I risultati verranno scritti sul file query_cache.html in formato HTML, nel file bash_history comparirà ovviamente la password di root di mysql.</p>
<pre>echo "SHOW STATUS LIKE 'qcache_%'" |  \</pre>
<pre>mysql -H -u root --password=lamiapwd > \</pre>
<pre>/var/www/query_cache.html</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.texilee.it/mysql-caching-status-report/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql Quick Admin</title>
		<link>http://www.texilee.it/mysql-quick-admin</link>
		<comments>http://www.texilee.it/mysql-quick-admin#comments</comments>
		<pubDate>Tue, 25 Jul 2006 09:56:19 +0000</pubDate>
		<dc:creator>texilee</dc:creator>
				<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://texilee.gruppoinfo.it/2006/07/25/mysql/mysql-quick-admin/</guid>
		<description><![CDATA[Rilasciata la prima release di MysqlQuickAdmin, interfaccia grafica per l&#8217;iterazione con Mysql. Il tool è scritto in php e si avvicina al celeberrimo phpmyadmin L&#8217;interfaccia è graficamente molto curata e piacevole, purtroppo le funzionalità sono molto ridotte rispetto al MyAdmin. Elenco delle funzionalità: Simple upload-and-use design ( No need for setup on most servers! ) [...]]]></description>
			<content:encoded><![CDATA[<p>Rilasciata la prima release di <a class="linkthumb" target="_blank" title="http://www.mysqlquickadmin.com" href="http://www.mysqlquickadmin.com">MysqlQuickAdmin</a>, interfaccia grafica per l&#8217;iterazione con Mysql.</p>
<p><img alt="http://demo.mysqlquickadmin.com/images/top_bg.gif" title="http://demo.mysqlquickadmin.com/images/top_bg.gif" src="http://demo.mysqlquickadmin.com/images/top_bg.gif" /></p>
<p>Il tool è scritto in php e si avvicina al celeberrimo <a class="linkthumb" target="_blank" title="http://www.phpmyadmin.net/home_page/index.php" href="http://www.phpmyadmin.net/home_page/index.php">phpmyadmin</a></p>
<p>L&#8217;interfaccia è graficamente molto curata e piacevole, purtroppo le funzionalità sono molto ridotte rispetto al MyAdmin.</p>
<p>Elenco delle funzionalità:</p>
<ul>
<li>Simple upload-and-use design ( No need for setup on most servers! )</li>
<li>Config file or session based login</li>
<li>Multiple server support</li>
<li>View multiple databases</li>
<li>View table status</li>
<li>CREATE, DROP, EMPTY, and OPTIMIZE multiple tables</li>
<li>VIEW, EDIT, and DELETE multiple fields</li>
<li>Supports all standard MySQL fields</li>
<li>Run batch queries</li>
<li>Load and edit MySQL query files</li>
<li>Export databases to textarea, file</li>
<li>Error handeling</li>
</ul>
<p>Requisiti</p>
<ul>
<li>PHP v4.3.1 +</li>
<li>MySQL v4.0.27-standard +</li>
</ul>
<p>Adatto agli sviluppatori che non necessitano il pieno controllo di MySql, o per i fornitori di hosting che desiderano offrire ai clienti la possibilità di interagire con il database. Considerando la giovane età del prodotto aspettiamo le prossime release per iniziare a fare paragoni sulle performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.texilee.it/mysql-quick-admin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hardening Debian Linux LAMP Servers</title>
		<link>http://www.texilee.it/hardening-debian-linux-lamp-servers</link>
		<comments>http://www.texilee.it/hardening-debian-linux-lamp-servers#comments</comments>
		<pubDate>Fri, 30 Jun 2006 10:25:10 +0000</pubDate>
		<dc:creator>texilee</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://texilee.gruppoinfo.it/2006/06/30/linux/hardening-debian-linux-lamp-servers/</guid>
		<description><![CDATA[Hardening Debian Linux Web PHP Servers L&#8217;aspetto più rilevante nella configurazione di un web server è senza dubbio la completa collaborazione fra sviluppatori di codice e sistemisti (gli sviluppatori grafici non hanno voce in questione ) Inutile preparare una macchina dalla configurazione hardware ottimale con RAID 5 o 10 su 4 dischi SCSI e un [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Hardening Debian Linux Web PHP Servers</strong></p>
<p>L&#8217;aspetto più rilevante nella configurazione di un web server è senza dubbio la completa collaborazione fra sviluppatori di codice e sistemisti (gli sviluppatori grafici non hanno voce in questione <img src='http://www.texilee.it/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</p>
<p>Inutile preparare una macchina dalla configurazione hardware ottimale con RAID 5 o 10 su 4 dischi SCSI e un firewall di 3000 righe per scoprire di lunedì mattina che il DB è vuoto. Motivo? Account di amministratore settato con USER: &#8220;Admin&#8221; e Password indovinate un po&#8217;&#8230; <img src='http://www.texilee.it/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' />  &#8230; &#8220;Admin&#8221; ovvio!</p>
<p>Sprecare quel paio d&#8217;ore in più a chiacchierare con lo sviluppatore non è male, ma cosa buona e giusta! Prendetevi tutto il tempo per rendere stabili e congruenti le modifiche e non abbiate nè fretta nè timore di far osservare qualche policy di sicurezza in più al vostro collega cresciuto su manuali che danno per scontato il non effettuare input sanitazing.</p>
<p>Per la preparazione del kernel (personalmente pendo dalla parte degli amanti di conf monolitiche con le giuste patch applicate vedi grsecurity) penso di scrivere qualcosina più avanti.</p>
<p><strong>Security is a process, not a result</strong> (sia chiaro in partenza&#8230;)</p>
<p><strong>Security a livello di sistema</strong></p>
<p>Questo è il compito del sistemista &#8230; effettivamente c&#8217;è bisogno di parecchio tempo per raffinare la tecnica e centralizzare le politiche in un layer di controllo non troppo invasivo.</p>
<p>Prima di iniziare a stilare qualche linea di codice e iniziare a riconfigurare mezza /etc è un consiglio confrontarsi con lo sviluppatore. Bisogna tener conto delle effettive esigenze del developer: upload (accesso ftp per lo spostamento di file) , directory con permessi di scrittura lato utenza apache (chmod www-data dir ), parametri dimensionali (massimo tempo di esecuzione script), necessità di reloadare servizi (accesso ssh), accettare traffico da e verso determinati ip e porte.</p>
<p>Il bello della configurazione di un server è che ogni volta che ne andrete a creare uno nuovo vi verrà sempre più naturale orientarlo verso sicurezza e performance, ovviamente se avete voglia di imparare e tenervi aggiornati!</p>
<p>Stilata la lista delle necessità dello sviluppatore iniziamo a modificare le configurazioni più &#8220;critiche&#8221;.</p>
<p>Dividiamo in due rami il nostro compito: network security e file system security, iniziamo a leggere le specifiche e trarre le conclusioni. Il server web ospiterà un cms php/mysql, dovrà essere permesso l&#8217;invio di mail, il webmaster dovrà modificare i file della htdocs, e restartare o stoppare apache e mysql. Installiamo una LAMP e phpmyadmin per l&#8217;amministrazione del DB, qmail per l&#8217;invio delle mail, il demone ssh per permettere &#8220;ftp&#8221; over SSH (quindi niente proftpd o simili) e la gestione dei demoni (via sudo darete la possibilità all&#8217;utente webmaster di compiere quelle determinate operazioni&#8230;)</p>
<p>Network security</p>
<pre>#netstat -l -n -p -t -u -w
Active Internet connections (only servers)
Proto  Local Address         PID/Program name
tcp    127.0.0.1:3306        31920/mysqld
tcp    192.168.168.168:80    15695/apache
tcp    192.168.168.168:22    26850/sshd
tcp    127.0.0.1:25          15809/tcpserver</pre>
<p>L&#8217;elenco delle porte in ascolto sul server, comprende i vari protocolli ma esclude i socket unix (canali di comunicazione fra ad esempio apache e mysql) e qualche colonna poco utile a fini didattici.</p>
<pre>#nmap -sS 192.168.168.168

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http</pre>
<p>Nmap finished: 1 IP address (1 host up) scanned in 0.578 seconds</p>
<p>Perfetto (siamo ancora sprovvisti di firewall) vengono riconosciute da nmap le porte dei servizi che saranno contattabili dal segmento pubblico e nn solo da localhost: apache sulla 80 e ssh sulla 22</p>
<p>Come fare a disabilitare i servizi di default? Semplicemente commentate le entry relative nei file di configurazione sotto /etc e sotto /etc/init.d per i file di configurazione come quello di qmail. E&#8217; inutile lasciare servizi che non dovranno essere raggiungibili dal mondo esterno in ascolto. Meglio bindarli su localhost. Su Debian date uno sguardo /etc/inetd.conf /etc/init.d/* e /etc/default</p>
<p><strong>IPTABLES</strong></p>
<p>Per completare la nostra configurazione di rete non rimane che scrivere un piccolo firewall da mettere sulla macchina, che rimarrà cmq. in dmz dietro a un altro firewall un po&#8217; più corposo. La politica che preferisco è quella del DROP, check del set di regole e in caso di pacchetto non contemplato loggo e droppo. Loggo cmq. tutti i tentativi di accesso verso ssh, molti cambiano porta per l&#8217;accesso ssh ( sempre molta fantasia.. 220,2200,222,2222), tuttavia non sento questa necessità perchè permetto l&#8217;accesso solo da determinati IP o classi se dinamici.</p>
<p>#policy in drop<br />
/sbin/iptables -t filter -P INPUT DROP</p>
<p>#loggo tentativi ssh<br />
/sbin/iptables -t filter -A INPUT -p tcp -m state &#8211;state NEW &#8211;dport 22 -j LOG &#8211;log-prefix ***SSH*** &#8211;log-level ERR</p>
<p>#permetto in input connessioni già &#8220;fidate&#8221;<br />
/sbin/iptables -t filter -A INPUT -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT</p>
<p>#permetto http da tutti<br />
/sbin/iptables -t filter -A INPUT -p tcp &#8211;dport 80 -j ACCEPT</p>
<p>#permetto ssh da client fidati<br />
/sbin/iptables -t filter -A INPUT -s 192.168.168.169 -p tcp &#8211;dport 22 -j ACCEPT<br />
/sbin/iptables -t filter -A INPUT -s 45.98.45.98 -p tcp &#8211;dport 22 -j ACCEPT</p>
<p>#loggo input con dest non ok<br />
/sbin/iptables -t filter -A INPUT -j LOG &#8211;log-level ERR &#8211;log-prefix &#8220;input: &#8221;</p>
<p>#e droppo<br />
/sbin/iptables -t filter -A INPUT -j DROP</p>
<p>Il firewall da mettere direttamente sul server è abbastanza completo, megli lavorare più massicciamente sul firewall con eth con ip esterno, anche per effettuare analisi sulla rete senza dover disattivarlo ogni volta.<br />
Per salvare le nostre regole</p>
<p>#iptables-save > /root/fw<br />
#chmod 600 /root/fw</p>
<p>ed eventuale restore</p>
<p>iptables-restore < /root/fw</p>
<p>oppure crearsi uno script bash iniziando con</p>
<p>#!/bin/sh</p>
<p>Per quanto riguarda SSH modificate le seguenti entries nelfile /etc/ssh/sshd_config</p>
<pre>Port 22
ListenAddress 192.168.168.168
Protocol 2
PermitRootLogin no
AllowUsers texilee webmaster</pre>
<p>e reload</p>
<p>/etc/init.d/ssh restart</p>
<p><strong>File System</strong><br />
E' cosa buona non creare una sola partizione / ma suddividere in base alle esigenze il FS in diverse partizioni e montarle in maniera diversa. Le più critiche sono la /tmp e la /var, se nella prima è di moda parcheggiarci rootkit nella seconda il problema può essere causa di DOS per log "impazziti" che nel giro di poco tempo riempiono il filesystem. Appurato che non lanceremo nulla dalla /tmp poichè i nostri script e binari risiedono da tutt'altra parte possiamo impedire a livello di filesystem l'esecuzione di codice dall'interno di tmp modificando il file /etc/fstab in questa maniera</p>
<p>/dev/hda2 /tmp ext3 nodev,nosuid, noexec 0 0</p>
<p>Può capitare (tipico esempio uno dei centinaia bachi di tipo "esecuzione di codice arbitrario" di prodotti php open source) che un attaccante ti sfondi la macchina e parcheggi nella /tmp il suo simpatico rootkit, ti hanno appena modificato ls e netstat e non te ne puoi accorgere se non facendo delle analisi da un'altra macchina messa in eth promiscous mode... tornano utili un paio di tools: <strong>samhain chkrootkit</strong></p>
<p>Samhain crea un database con "firme" di file di sistema presenti al momento della esecuzione del tool, record contenenti valori quali data dimensione inode. Il demone controlla periodicamente l'integrità dei file sul FS con le informazioni contenute nel suo DB ed in caso di incongruenza si occupa di mandare una mail all'indirizzo specificato nel file di configurazione. Su Debian apt-get install samhain chkrootkit , i file di configurazione come al solito sotto /etc.</p>
<p>Per concludere trovo estremamente interessante costruire qualche script bash per tracciare quelle situazioni di gravità (disco pieno, troppe connessioni dallo stesso ip, carico di lavoro troppo elevato... argomento di prossimi post ) e l'utilizzo di <strong>atsar </strong>(apt-get install atsar) per avere uno storico del carico di lavoro e poter rintracciare con facilità nei log i motivi di "sbalzi" particolarmente elevati di carico.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.texilee.it/hardening-debian-linux-lamp-servers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql cache utilizzo e tuning</title>
		<link>http://www.texilee.it/mysql-cache-utilizzo-e-tuning</link>
		<comments>http://www.texilee.it/mysql-cache-utilizzo-e-tuning#comments</comments>
		<pubDate>Thu, 29 Jun 2006 18:57:17 +0000</pubDate>
		<dc:creator>texilee</dc:creator>
				<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://texilee.gruppoinfo.it/2006/06/29/mysql/mysql-cache-utilizzo-e-tuning/</guid>
		<description><![CDATA[Utilizzo e tuning della Query Cache, pochi appunti scritti e condivisi Mysql implementa un meccanismo per cashare i risultati delle query al fine di poterli riutilizzare senza interrogare di nuovo il DB. Questo meccanismo e&#8217; estremamente utile quando una appz utilizza massivamente le stesse query. Non esiste un configuerazione ottimale in generale, vi invito ad [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Utilizzo e tuning della Query Cache</strong>, pochi appunti scritti e condivisi</p>
<p>Mysql implementa un meccanismo per cashare i risultati delle query al fine di poterli riutilizzare senza interrogare di nuovo il DB. Questo meccanismo e&#8217; estremamente utile quando una appz utilizza massivamente le stesse query. Non esiste un configuerazione ottimale in generale, vi invito ad utilizzare quella di default e iniziare tuning più avanti.</p>
<p>Parametri di configurazione:</p>
<p>Il file di configurazione my.cnf contiene le direttive per settare tutte le opzioni che interagiscono col meccanismo di cache.</p>
<p>Prestare attenzione a <strong>query_cache_size</strong> e <strong>query_cache_type</strong>.</p>
<p><strong>have_query_cache</strong><br />
MAN:  Indica al server di supportare il meccanismo di caching delle query<br />
TYPE: boolean (YES o NO)<br />
VERSION:  a partire dalla 4.0.2</p>
<p><strong>query_cache_limit</strong></p>
<p>MAN: dimensione massima del risultato della query ( detto record set o result set) per essere ammessa in cache<br />
TYPE: intero espresso in MB<br />
VERSION:  a partire dalla 4.0.1</p>
<p>La query cache e&#8217; stata introdotta per poter &#8220;cachare&#8221; il numero maggiore possibile di query, non il record set delle query piu&#8217; corpose. Dovrebbe essere settato ad un valore relativamente basso</p>
<p><strong>query_cache_min_res_unit</strong></p>
<p>MAN: dimensione minima del record set per essere ammesso in cache<br />
TYPE:  espresso in KB<br />
VERSION: a partire dalla 4.0.1<br />
<span style="font-weight: bold">query_cache_size</span><br style="font-weight: bold" /><br />
MAN: memoria dedicata alla query cache<br />
TYPE: intero espresso in MB<br />
VERSION:  a partire dalla 4.0.1</p>
<p>Se il valore impostato e&#8217; 0 il caching e&#8217; disabilitato. Se il valore e&#8217; > 0 ma la direttiva query_cache_type e&#8217; 0 oppure OFF, la memoria dedicata al caching viene utilizzata ma non viene effettivamente letta dal mysql</p>
<p><strong> query_cache_type</strong></p>
<p>MAN: specifica lo stato della query cache<br />
TYPE: intero (0,1,2)<br />
VERSION:  a partire dalla 4.0.3</p>
<p>0->  Non viene messo in cache nulla, ma la memoria viene lo stesso dedicata</p>
<p>1-> Se e&#8217; impostato a 1 i risultati della query con dimensione minore di query_cache_limit vengono cachati, a meno che la query non contenga la direttiva SQL_NO_CACHE</p>
<p>2-> Se e&#8217; impostato a 2 i risultati della query con dimensione minore di query_cache_limit vengono cachati, a meno che la query contenga la direttiva SQL_CACHE</p>
<p><strong>query_cache_wlock_invalidate</strong></p>
<p>MAN:Se le tabelle interrogate stanno subendo operazioni e sono in stato di &#8220;lock&#8221; settando questo parametro a 1 i risultati in cache vengono eliminati e non si ha il rischio di ottenere risultati non piu&#8217; validi. Questo è un parametro specifico per DB MyISAM<br />
TYPE: boolean(0,1)<br />
VERSION:  a partire dalla 4.0.19</p>
<p><strong> Come abilitare la Query Cache?</strong></p>
<p>Per abilitare la cache query basta settare :</p>
<p>query_cache_type a 1 oppure 2<br />
query_cache_size > 0</p>
<p>E&#8217; importante settare correttamente entrambi i parametri, altrimenti si rischia di dedicare memoria che non verra&#8217; utilizzata.</p>
<p>Mysql necessita di un minimo di 40Kb di memoria per poter avviare il meccanismo di cache. Se non ce&#8217; abbastanza memoria nel file di log viene inserito un warning</p>
<p><strong> Tuning Query Cache</strong></p>
<p>Qualche query da utilizzare</p>
<p><strong>FLUSH QUERY CACHE </strong>> deframmenta la struttura della memoria, non elimina nessuna query nella cache</p>
<p><strong>RESET QUERY CACHE</strong> > svuota la cache</p>
<p><strong> SHOW STATUS LIKE &#8216;qcache_%&#8217;</strong> > per vedere le statistiche</p>
<p><strong> Qcache_lowmem_prunes</strong> -> contiene il numero di query e results sets rimossi dalla cache per far posto a nuovi dati.<br />
Per verificare in generale l&#8217;efficienza della cache query si dovrebbe far riferimento a quel valore, se cresce costantemente nel tempo la cache memory non sta fornendo un servizio utile ai fini della velocita&#8217; e dovrebbe essere disabilitata, o i parametri diversamente settati in base al peso delle query più comuni, alla potenza della macchina..<br />
Se i valori di <strong>Qcache_hits</strong> e <strong>Qcache_lowmem_prunes</strong> crescono rapidamente, bisognerebbe aumentare la query_cache_size</p>
<p>Qcache_not_cached indica il numeri di query eseguite ma non messe in cache</p>
<p>In generale e&#8217; dovuto al valore superato di <strong>query_cache_limit</strong>.</p>
<p>Aumentare la query_cache_limit puo&#8217; essere utile, bisogna pero&#8217; considerare il rapporto fra Qcache_hits e  <strong>Qcache_lowmem_prunes</strong>, se scende e&#8217; opportuno farlo.</p>
<p>Controllate quotidianamente i valori &#8220;statistici&#8221; e fate numerose prove prima di definire delle linee guida per la configurazione dei parametri di tuning.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.texilee.it/mysql-cache-utilizzo-e-tuning/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql Query Cache Tuning</title>
		<link>http://www.texilee.it/mysql-query-cache-tuning</link>
		<comments>http://www.texilee.it/mysql-query-cache-tuning#comments</comments>
		<pubDate>Mon, 05 Jun 2006 09:34:19 +0000</pubDate>
		<dc:creator>texilee</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://texilee.gruppoinfo.it/2006/06/05/linux/mysql-query-cache-tuning/</guid>
		<description><![CDATA[Utilizzo e tuning della Query Cache Autore Boyd Hemphill , libera traduzione di Tenivella Enrico. Mysql implementa un meccanismo per cashare i risultati delle query al fine di poterli riutilizzare senza interrogare di nuovo il DB. Questo meccanismo e&#8217; estremamente utile quando una appz utilizza massivamente le stesse query. Parametri di configurazione: Il file di [...]]]></description>
			<content:encoded><![CDATA[<p>Utilizzo e tuning della Query Cache</p>
<p><img title="mysql" alt="mysql" src="http://www.openhosting.com/images/uses/mysql.jpg" /></p>
<p>Autore Boyd Hemphill  , libera traduzione di Tenivella Enrico.</p>
<p>Mysql implementa un meccanismo per cashare i risultati delle query al fine di poterli riutilizzare senza interrogare di nuovo il DB. Questo meccanismo e&#8217; estremamente utile quando una appz utilizza massivamente le stesse query.</p>
<p>Parametri di configurazione:</p>
<p>Il file di configurazione my.cnf contiene le direttive per settare tutte le opzioni che interagiscono col meccanismo di cache.</p>
<p>Prestare attenzione a query_cache_size e query_cache_type.</p>
<p>have_query_cache</p>
<p>* Indicates that the server supports the query cache<br />
* Specified as Boolean (YES or NO)<br />
* Available as of 4.0.2</p>
<p>query_cache_limit</p>
<p>* Maximum size of a cacheable result set<br />
* Specified in megabytes<br />
* Available as of 4.0.1</p>
<p>La query cache e&#8217; stata introdotta per poter cachare il numero di query maggiore possibile, non il risultato delle query piu&#8217; corpose. Dovrebbe essere settato ad un valore relativamente basso</p>
<p>query_cache_min_res_unit</p>
<p>* Minimum block size of the query cache<br />
* Specifed in kilobytes<br />
* Available as of 4.1</p>
<p>query_cache_size</p>
<p>* Memory allocated to the query cache<br />
* Specified in megabytes<br />
* Available as of 4.0.1</p>
<p>Se il valore impostato e&#8217; 0 il caching e&#8217; disabilitato. Se il valore e&#8217; > 0 ma la direttiva query_cache_type e&#8217; 0 oppure OFF, la memoria dedicata al caching viene utilizzata ma non viene effettivamente letta dal mysql</p>
<p>query_cache_type</p>
<p>* Sets the query cache state<br />
* Specified as an integer (0,1,2)<br />
* Available as of 4.0.3</p>
<p>Se e&#8217; impostato a 0 non viene messo nell cache nulla, ma la memoria dedicata viene lo stesso sporcata(wasted)</p>
<p>Se e&#8217; impostato a 1 i risultati della query con dimensione minore di query_cache_limit vengono cachati, a meno che la query non contenga la direttiva SQL_NO_CACHE</p>
<p>Se e&#8217; impostato a 2 i risultati della query con dimensione minore di query_cache_limit vengono cachati, a meno che la query contenga la direttiva SQL_CACHE</p>
<p>query_cache_wlock_invalidate</p>
<p>* Controls locking aspects of tables with rows in the cache<br />
* Specified as integer value of 1<br />
* Available as of 4.0.19<br />
* Specific to MyISAM</p>
<p>Se le tabelle interrogate stanno subendo operazioni e sono in stato di &#8220;lock&#8221; settando questo parametro a 1 i risultati in cache vengono eliminati e non si ha il rischio di ottenere risultati non piu&#8217; validi.</p>
<p>Abilitare la Query Cache</p>
<p>Per abilitare la cache query basta settare :</p>
<p>query_cache_type a 1 oppure 2<br />
query_cache_size > 0</p>
<p>E&#8217; importante settare correttamente entrambi i parametri, altrimenti si rischia di allocare memoria che non verra&#8217; utilizzata.</p>
<p>Mysql necessita di un minimo di 40Kb di memoria per poter avviare il meccanismo di cache. Se non ce&#8217; abbastanza memoria nel file di log viene inserito un warning</p>
<p>Tuning Query Cache</p>
<p>* FLUSH QUERY CACHE > deframmenta la struttura della memoria, non elimina nessuna query nella cache</p>
<p>* RESET QUERY CACHE > svuota la cache</p>
<p>* SHOW STATUS LIKE &#8216;qcache_%&#8217; per vedere le statistiche</p>
<p>Qcache_lowmem_prunes -> contiene il numero di query e results sets rimossi dalla cache per far posto a nuovi dati.<br />
Per verificare in generale l&#8217;efficienza della cache query si dovrebbe far riferimento a quel valore, se cresce costantemente nel tempo la cache memory non sta fornendo un servizio utile ai fini della velocita&#8217; e dovrebbe essere disabilitata.</p>
<p>Se i valori di Qcache_hits e Qcache_lowmem_prunes crescono rapidamente, bisognerebbe aumentare la query_cache_size</p>
<p>Qcache_not_cached indica il numeri di query eseguite ma non messe in cache</p>
<p>In generale e&#8217; dovuto al valore superato di query_cache_limit.</p>
<p>Aumentare la query_cache_limit puo&#8217; essere utile, bisogna pero&#8217; considerare il rapporto fra Qcache_hits e  Qcache_lowmem_prunes, se scende e&#8217; opportuno farlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.texilee.it/mysql-query-cache-tuning/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
