Sto cercando di accelerare alcune query utilizzando istruzioni preparate su un sito ad alto traffico. quello che non credo di capire correttamente è il vantaggio derivante dall'uso di affermazioni preparate a meno che non possano essere preparati su più connessioni. sembra che questo non sia possibile con PDO che non consente connessioni persistenti. ma le funzioni di connessione persistenti non consentono il PDO.mysql dichiarazioni preparate in modo permanente
consente di dire per amor di argomenti sto facendo funzionare una query 5.000 volte al secondo: SELECT * FROM some_table DOVE some_column LIKE 'some_value'
da quello che ho capito, DOP impedirebbe mysql da re-compilazione e la valutazione del query se dovessi cambiare "some_value" ogni volta che ho bisogno di interrogare. Capisco anche che "some_value" potrebbe essere trasmesso in binario anziché in ASCII per risparmiare larghezza di banda, ma non sarebbe un notevole risparmio se dovessi inviare l'intera query ogni volta che apro la connessione.
anche da quello che ho letto, le stored procedure non sono la soluzione, perché anche quelle non restano compilate attraverso connessioni multiple.
c'è qualche soluzione a questo problema? memorizzando una dichiarazione preparata sul server da qualche parte e facendola rimanere compilata in memoria e pronta a sparare non appena riceve le variabili?
esiste un modo per rendere questo possibile combinando il pool di connessioni con PDO? (anche se ho sentito che il connection pooling non è l'ideale perché può causare il blocco in determinate condizioni)
Se si desidera utilizzare connessioni persistenti, è necessario impostare DOP :: ATTR_PERSISTENT nella gamma di opzioni del driver passata al costruttore DOP . Se si imposta questo attributo con PDO :: setAttribute() dopo l'istanza dell'oggetto, il driver non utilizzerà le connessioni permanenti. –
Perché non usare Memcached? –