Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que significa quando digo que a instrução Preparada é pré-compilada?


Quando você usa a instrução preparada (ou seja, instrução pré-compilada), assim que o DB obtém essa instrução, ele a compila e a armazena em cache para que possa usar a última instrução compilada para chamadas sucessivas da mesma instrução. Assim, torna-se pré-compilado para chamadas sucessivas.

Você geralmente usa a instrução preparada com variáveis ​​de ligação onde você fornece as variáveis ​​em tempo de execução. Agora o que acontece para a execução sucessiva de instruções preparadas, você pode fornecer as variáveis ​​que são diferentes das chamadas anteriores. Do ponto de vista do DB, ele não precisa compilar a instrução toda vez, apenas inserirá as variáveis ​​de ligação em tempo de rum. Assim fica mais rápido.

Outras vantagens das declarações preparadas são:-

1) proteção contra ataque de injeção de SQL

2) Mais rápido para chamadas sucessivas de mesmas instruções

Como funciona :-

  1. A pré-compilação é feita pelo banco de dados. Alguns bancos de dados mais simples não pré-compilam instruções. Outros podem pré-compilá-lo na chamada prepareStatement, e outros ainda podem fazê-lo quando execute é chamado pela primeira vez na instrução, levando em consideração os valores dos parâmetros ao compilar (criar um plano para) a instrução.

  2. Bancos de dados que fazem pré-compilação geralmente as armazenam em cache, portanto, com toda a probabilidade, o ps1 não será compilado novamente. Alguns drivers JDBC (por exemplo, Oracle's) até armazenam instruções preparadas em cache, então eles não o fecharam quando ps.close() foi chamado.

  3. Os bancos de dados geralmente armazenam instruções em cache até que algo as remova do cache.

Para obter detalhes, acesse este wiki link