PHP mysqli :: autocommit VS "START TRANSACTION"

Nel nostro object livello database, abbiamo sempre gestito le transactions con le istruzioni SQL "START TRANSACTION", "ROLLBACK" e "COMMIT" eseguite tramite mysqli :: query.

Facendo qualche ricerca oggi, ho scoperto questa menzione nel manuale MySQL sull'uso delle chiamate a livello API per gestire una transazione VS usando l'SQL diretto:

Importnte

Molte API utilizzate per scrivere applicazioni client MySQL (come JDBC) forniscono i propri methods per l'avvio di transactions che possono (e talvolta dovrebbero) essere utilizzate invece di submit un'istruzione START TRANSACTION dal client. Consulta il Capitolo 20, Connettori e API o la documentazione per la tua API, per ulteriori informazioni.

E, dopo aver osservato mysqli, ha trovato i methods mysqli :: autocommit, mysqli :: rollback e mysqli :: commit per la gestione di una transazione ( http://us.php.net/manual/en/class.mysqli.php ) .

    La mia domanda: è meglio usare questi equivalenti mysqli e perché? Non riesco a trovare alcuna menzione da nessuna parte che dice se o perché queste funzioni offrono performance migliori rispetto alle loro controparti SQL diritte.

    È ansible che potrebbero esserci motivi per cui un wrapper di accesso ai dati dovrebbe sapere quando è stata avviata / terminata una transazione. Ad esempio, in cima alla mia testa, uno schema di pool di connessioni dovrebbe sapere quando una connessione precedentemente utilizzata è stata completata nel mezzo di una transazione, e non restituirla al pool di connessioni per il riutilizzo in quel caso.

    Non sono a conoscenza di problemi in mysqli che richiederebbero l'utilizzo del metodo nativo piuttosto che della versione SQL, ma probabilmente è nel caso generale … ecco perché è solo "a volte dovrebbe". In each caso, il metodo PHP è più facile da leggere rispetto alla versione con string SQL, quindi direi di andare comunque.