Een artikel gevonden met de titel "MySQL NOLOCK-syntaxis "
http://itecsoftware.com/with-nolock-table-hint -equivalent-voor-mysql
SQL Server WITH (NOLOCK) ziet er als volgt uit:
SELECT * FROM TABLE_NAME WITH (nolock)
Om hetzelfde te bereiken met MySQL, wijzigen we de sessie-isolatiemodus met behulp van de SET SESSION
commando.
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
U kunt hetzelfde bereiken door hieronder ook:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
COMMIT ;
Deze instructie werkt op dezelfde manier als WITH (NOLOCK), d.w.z. READ UNCOMMITTED
gegevens. We kunnen ook het isolatieniveau voor alle verbindingen wereldwijd instellen:
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
Daarnaast bestaan er ook twee systeemvariabelen met betrekking tot isolatieniveau in de MySQL-server:
SELECT @@global.tx_isolation; (global isolation level)
SELECT @@tx_isolation; (session isolation level)
Of stel het isolatieniveau binnen een transactie in:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO
In code igniter kun je je vraag omwikkelen met de eerste twee oplossing of je kunt de globale optie gebruiken.
voor uw referentie kunt u onderstaande code gebruiken:
$this->db->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
$this->db->trans_start();
// your code
$this->db->trans_complete();
Update 1:
U kunt het isolatieniveau in een query gewoon instellen voordat u uw instructies uitvoert. Hieronder vindt u de eenvoudige php mysqli-code die u kunt gebruiken 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();