php - tuning - xampp speed up mysql




MySQL Stored Procedure vs. query complessa (4)

Molto semplificata: le prestazioni della stored procedure sono uguali o marginalmente migliori rispetto al codice al costo del carico del server db. Poiché la maggior parte dei sistemi db riguarda l'accesso multiutente e utilizza hardware di base per il server db, l'utilizzo del codice offloading del server db probabilmente vincerà in generale. Con server DB di fascia alta,> 4 core,> 32 GB di RAM, il carico SP spesso non è un problema.

Procedura di archiviazione;

  1. trasferire meno dati nella query - miglioramento della velocità minimo per codice ben scritto
  2. l'analisi e il caching è "leggermente migliore" - miglioramento della velocità minimo per codice ben scritto
  3. sposta il carico di esecuzione sul server db o sui client (server web), potenzialmente distribuendo il carico su molti sistemi. - i miglioramenti della velocità dipendono molto dal codice effettivo e dalla quantità di dati, inclusi i dati "in eccesso" trasferiti. Un bel po 'di codice trasferisce più dati di quelli effettivamente utilizzati (librerie db, query scritte male, selezionare *, ecc.)

Non ottimizzare in anticipo.

Le procedure memorizzate hanno molti altri vantaggi rispetto alla velocità, la sicurezza è in cima alla lista.

In un singolo ambiente di programmazione, i benefici possono essere compensati dalla curva di apprendimento della programmazione SP, dal framework di test SP, da più metodi di controllo di revisione - SP e codice, ecc.

L'apprendimento e l'utilizzo di un framework di test e di profilazione risponderanno in modo definitivo e ti guideranno nel fornire migliori "prestazioni" alla tua app rispetto alla semplice scelta di SP o query ad hoc.

Rispondi a "ne vale la pena" - Se non disponi di un framework di testing / profiling, dovrai solo indovinare. Qualsiasi risposta basata sul mio codice e sull'hardware è probabilmente irrilevante per il tuo.

La mia esperienza del mondo reale su molte applicazioni web Perl / TCL / PHP / C che utilizzano i processori di DB (Sybase, Oracle, MS SQL, MySQL, Postgres) NON migliora enormemente le prestazioni. Ma li uso ancora spesso, solo per ragioni diverse dalle prestazioni. Possono migliorare notevolmente una query complessa specifica, ma raramente sono la maggior parte del codice e il tempo di elaborazione complessivo.

Come è la performance di una stored procedure? Vale la pena usarli invece di implementare una query complessa in una chiamata PHP / MySQL?



Le procedure memorizzate ti daranno un piccolo incremento di prestazioni, ma principalmente sono per svolgere compiti che sono difficili o impossibili da fare con una semplice query. Le stored procedure sono ottime per semplificare l'accesso ai dati per molti diversi tipi di client. Gli amministratori di database li adorano perché controllano il modo in cui viene utilizzato il database invece di lasciare quei dettagli allo sviluppatore.

Consulta gli indici e il design corretto della tabella per ottenere prestazioni migliori.


Mi dispiace che qualcuno possa leggere queste risposte e avere l'impressione sbagliata. Ci sono alcune differenze davvero importanti tra le implementazioni "Stored Whatever" su "MySQL" vs "SQL server / Oracle".

Vedi: http://www.joinfu.com/2010/05/mysql-stored-procedures-aint-all-that/

Ogni persona che pone questa domanda presuppone qualcosa sull'implementazione della stored procedure di MySQL; credono erroneamente che le stored procedure siano compilate e archiviate in una cache di stored procedure globale, simile alla cache della stored procedure in Microsoft SQL Server [1] o Oracle [2].

Questo è sbagliato. Flat-out errato.

Ecco la verità: ogni singola connessione al server MySQL mantiene la propria cache di stored procedure.

Prenditi un minuto per leggere il resto dell'articolo e i commenti. È breve e avrai una comprensione molto migliore dei problemi.





performance