trovato un articolo con il titolo "la sintassi MySQL NOLOCK"
http://itecsoftware.com/with-nolock-table-hint-equivalent-for-mysql
SQL Server CON (NOLOCK) si presenta così:
SELECT * FROM TABLE_NAME WITH (nolock)
per ottenere lo stesso con MySQL, abbiamo modificare la modalità di isolamento della sessione utilizzando il comando SET SESSION
.
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
È possibile achive stessi da parte di seguito anche:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
COMMIT ;
Questa dichiarazione funzionerà simile al CON (NOLOCK) cioè READ UNCOMMITTED
dati. Possiamo anche impostare il livello di isolamento per tutte le connessioni a livello globale:
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
Inoltre, due variabili di sistema legati all'isolamento anche il livello esistono nel server MySQL:
SELECT @@global.tx_isolation; (global isolation level)
SELECT @@tx_isolation; (session isolation level)
o impostare il livello di isolamento all'interno di una transazione :
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO
Nel codice di accensione è possibile avvolgere la query con le prime due soluzioni oppure è possibile utilizzare l'opzione globale.
per il vostro riferimento è possibile utilizzare il codice qui sotto:
$this->db->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
$this->db->trans_start();
// your code
$this->db->trans_complete();
Update 1:
Si può solo impostare il livello di isolamento in una query prima di eseguire le sue dichiarazioni. Di seguito è riportato il semplice codice php mysqli tu utilizzare isolation level read uncommited
//db connection
$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
//set isolation level
$mysqli->query("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED");
//your Select Query
$results = $mysqli->query("SELECT * FROM tablename");
while($row = $results->fetch_assoc()) {
//some statements
}
// Frees the memory associated with a result
$results->free();
$mysqli->query("COMMIT");
// close connection
$mysqli->close();
bisogno di codice di esempio sotto forma di PHP e MySQL per l'interazione del database – Pankaj
vedono questo può aiutare a http: // StackOverflow.it/questions/917640/any-way-to-select-senza-causare-locking-in-mysql – Linus