Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co to znaczy, gdy mówię, że instrukcja „Przygotowana” jest wstępnie skompilowana?

Kiedy używasz przygotowanej instrukcji (tj. wstępnie skompilowanej instrukcji), Gdy tylko DB otrzyma tę instrukcję, kompiluje ją i buforuje, aby mogła użyć ostatniej skompilowanej instrukcji do kolejnego wywołania tej samej instrukcji. Jest więc wstępnie skompilowany dla kolejnych wywołań.

Zwykle używasz przygotowanej instrukcji ze zmiennymi powiązania, w których podajesz zmienne w czasie wykonywania. Teraz, co dzieje się z kolejnym wykonaniem przygotowanych instrukcji, możesz podać zmienne, które różnią się od poprzednich wywołań. Z punktu widzenia DB, nie musi kompilować instrukcji za każdym razem, po prostu wstawi zmienne wiążące w czasie rumu. Więc staje się szybszy.

Inne zalety przygotowanych zestawień to :-

1)ochrona przed atakiem SQL-injection

2) Szybciej w przypadku kolejnych wywołań tych samych wyciągów

Jak to działa :-

  1. Wstępna kompilacja jest wykonywana przez bazę danych. Niektóre prostsze bazy danych w ogóle nie prekompilują instrukcji. Inni mogą to wstępnie skompilować w wywołaniu PrepareStatement, a jeszcze inni mogą to zrobić, gdy polecenie execute zostanie wywołane po raz pierwszy, biorąc pod uwagę wartości parametrów podczas kompilowania (tworzenia planu) instrukcji.

  2. Bazy danych, które wykonują prekompilowane instrukcje, zwykle przechowują je w pamięci podręcznej, więc najprawdopodobniej ps1 nie zostanie ponownie skompilowany. Niektóre sterowniki JDBC (np. Oracle) nawet buforują przygotowane instrukcje, więc tak naprawdę nie zamknęły ich po wywołaniu ps.close().

  3. Bazy danych zazwyczaj przechowują instrukcje w pamięci podręcznej, dopóki coś nie wyrzuci ich z pamięci podręcznej.

Aby uzyskać szczegółowe informacje, przejrzyj tę wiki link



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy zastąpić na ma klauzulę WHERE?

  2. Najlepszy sposób na utworzenie pliku konfiguracyjnego (config.php) php

  3. Czy mogę liczyć sesje, aby określić liczbę osób online?

  4. Jak wybrać zgrupowane wiersze zawierające tylko wartości NULL?

  5. mysql regex utf-8 znaków