Mysql
 sql >> Database >  >> RDS >> Mysql

Cosa significa quando dico La dichiarazione preparata è precompilata?

Quando si utilizza l'istruzione preparata (cioè l'istruzione precompilata), non appena DB ottiene questa istruzione, la compila e la memorizza nella cache in modo che possa utilizzare l'ultima istruzione compilata per la chiamata successiva della stessa istruzione. Quindi diventa precompilato per le chiamate successive.

In genere si utilizza l'istruzione preparata con variabili di collegamento in cui si forniscono le variabili in fase di esecuzione. Ora cosa succede per l'esecuzione successiva di istruzioni preparate, puoi fornire le variabili che sono diverse dalle chiamate precedenti. Dal punto di vista del DB, non deve compilare l'istruzione ogni volta, inserirà semplicemente le variabili bind al momento del rum. Così diventa più veloce.

Altri vantaggi delle dichiarazioni preparate sono :-

1)protezione contro attacchi SQL-Injection

2) Più veloce per richiami successivi degli stessi estratti

Come funziona :-

  1. La precompilazione viene eseguita dal database. Alcuni database più semplici non precompilano affatto le istruzioni. Altri potrebbero precompilarlo sulla chiamata prepareStatement, e altri ancora potrebbero farlo quando viene chiamato per la prima volta execute sull'istruzione, tenendo conto dei valori dei parametri durante la compilazione (creazione di un piano per) l'istruzione.

  2. I database che precompilano le istruzioni di solito le memorizzano nella cache, quindi con ogni probabilità ps1 non verrà compilato di nuovo. Alcuni driver JDBC (ad esempio quelli di Oracle) memorizzano persino nella cache le istruzioni preparate, quindi non l'hanno effettivamente chiuso quando è stato chiamato ps.close().

  3. I database generalmente memorizzano nella cache le istruzioni fino a quando qualcosa non le rimuove dalla cache.

Per i dettagli, consulta questo wiki collegamento