Come strozzare o priorità una query in MySql
-
01-10-2019 - |
Domanda
Esiste un modo per dare la priorità o acceleratore una query a tutti in MySQL?
Sono un DBA su un server che vede un sacco di query non ottimizzate entrano in server e hanno appena distruggere la CPU. Sto guardando strozzamento determinati utenti che hanno colpito sul database in cattive moda.
Chiarimento:
Mi rendo conto che MySQL dispone di strutture costruite per il numero limite di query, connessioni, ecc Ma quelli non sono realmente il problema, è che una volta in una luna blu un utente invia una query non ottimizzata, e avrei bisogno a tempo fuori o qualcosa di simile.
Soluzione
http://dev.mysql.com/doc /refman/4.1/en/user-resources.html
A partire da MySQL 4.0.2, è possibile limitare l'accesso alle seguenti risorse del server per i singoli account:
Il numero di query che un account può emettere per ora
Il numero di aggiornamenti che un account può emettere per ora
Il numero di volte che un cliente può connettersi al server per ora
Altre Informazioni -
MySQL non ha un valore di timeout di query, o di qualsiasi altra incorporato in modo da strozzare una singola query. Tuttavia, è piuttosto banale scrivere uno script che ucciderà le query a lungo in esecuzione. Si potrebbe anche catturare l'utente e query in modo che si può battere l'utente / programmatore di offendere più tardi.
Qui è un esempio di uno che utilizza PERL.
Altri suggerimenti
So che phpMyAdmin dispone di un'area per Max # di query per ora, Max # degli aggiornamenti per ora, Max # di connessioni all'ora, e Max # di connessioni utente per utente. Probabilmente ci sono altri modi per impostare questi valori diversi da phpMyAdmin