2012-07-23 9 views

risposta

40

L'attivazione di log delle query lente non ha nulla a che fare con la versione di PHP. Devi abilitarlo nel server MySQL. È possibile attivare in due modi

  1. Nel runtime
  2. Durante il server avviare

Se il server è al di sopra 5.1.6 è possibile impostare il log delle query lente nel runtime stesso. Per il quale devi eseguire questa query.

set global log_slow_queries = 1; 
set global slow_query_log_file = <some file name>; 

Oppure, in alternativa, è possibile impostare le opzioni di questo in my.cnf/my.ini file di opzione

log_slow_queries = 1; 
slow_query_log_file = <some file name>; 

casi in cui è cambiato il file di opzione, il server MySQL devono essere riavviato.

posizione del file di opzioni di MySQL può essere trovato qui http://dev.mysql.com/doc/refman/4.1/en/mysql-config-wizard-file-location.html

FYI: log_slow_queries è stato rimosso in MySQL 5.6.1 e slow_query_log viene utilizzato al posto. http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_log-slow-queries

Ma per le prestazioni è possibile impostare l'uscita del registro (opzionale log_output) per TABLE. Inoltre si può avere uno sguardo altre opzioni lento log delle query come long_query_time, log-queries-not-using-indexes

+1

quando sto eseguendo questa query 'SET GLOBAL slow_query_log = 1;' sto ricevendo questo errore '# 1193 - Variabile di sistema sconosciuta 'slow_query_log'' – Juice

+1

sry dovrebbe essere' log_slow_queries', farò la modifica necessaria. –

+1

eseguo anche questo comando 'set global log_slow_queries = 1;' ora mostra '# 1238 - Variabile 'log_slow_queries' è una variabile di sola lettura' – Juice

36

È possibile impostare temporaneamente, eseguendo i seguenti comandi:

set global slow_query_log = 1; 
set global slow_query_log_file = '/var/log/mysql-slow.log'; 

ma le modifiche verranno annullate quando MySQL viene riavviato.

È possibile impostare in modo permanente, aggiungendo quanto segue al my.cnf del file:

slow-query-log=1 
slow-query-log-file=/var/log/mysql-slow.log 

La posizione my.cnf varia a seconda del sistema operativo, ma si trova spesso in /etc/my.cnf, o /etc/mysql/my.cnf:

Dopo aver salvato le tue modifiche, dovrai riavviare MySql. Questo può variare a seconda del sistema operativo, ma qui ci sono alcuni esempi comuni:

sudo /etc/init.d/mysqld restart 

e

sudo service mysqld restart 
+0

quando sono in esecuzione questa query ' SET GLOBAL slow_query_log = 1; 'sto ricevendo questo errore' # 1193 - Un noto variabile di sistema 'slow_query_log'' – Juice

+0

Thanx 4 aiuto ur .. – Juice

+0

non si arrabbiano. Dal momento che entrambe le risposte sono state di aiuto per me, ho votato entrambe. E posso accettare solo una risposta altrimenti avrei accettato anche la tua. Ho accettato la sua risposta perché ha risposto ai miei dubbi. – Juice

12

Prima (come root :)

mkdir /var/log/mysql 
touch /var/log/mysql/log-slow-queries.log 
chown mysql:mysql -R /var/log/mysql 

Poi sotto [mysqld] in/etc/la mia.conf (o dovunque il file di configurazione è :)

slow_query_log = 1 
log-queries-not-using-indexes 
long_query_time=1 
log-slow-queries=/var/log/mysql/log-slow-queries.log 

successivo:

service mysql restart 

Infine:

mysql 
mysql> SELECT SLEEP(10); 
mysql> quit 

di verifica:

cat /var/log/mysql/log-slow-queries.log 

/usr/sbin/mysqld, Version: 5.5.42-cll (MySQL Community Server (GPL)). started with: 
Tcp port: 0 Unix socket: (null) 
Time     Id Command Argument 
# Time: 150727 0:05:17 
# [email protected]: root[root] @ localhost [] 
# Query_time: 10.000215 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 
SET timestamp=1437973517; 
select sleep(10); 
Problemi correlati