sql >> Databáze >  >> RDS >> Mysql

Získejte nezávazná data v MySQL

Nalezen článek s názvem „Syntaxe MySQL NOLOCK "

."

http://itecsoftware.com/with-nolock-table-hint -ekvivalent-pro-mysql

SQL Server S (NOLOCK) vypadá takto:

SELECT * FROM TABLE_NAME WITH (nolock)

Abychom toho dosáhli s MySQL, změníme režim izolace relace pomocí SET SESSION příkaz.

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
 SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;

Toho můžete dosáhnout také níže:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
COMMIT ;

Toto prohlášení bude fungovat podobně jako WITH (NOLOCK), tj. READ UNCOMMITTED data. Můžeme také nastavit úroveň izolace pro všechna připojení globálně:

 SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

Kromě toho na serveru MySQL existují dvě systémové proměnné související s úrovní izolace:

SELECT @@global.tx_isolation; (global isolation level)
SELECT @@tx_isolation; (session isolation level)

Nebo nastavte úroveň izolace uvnitř transakce:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO

V zapalovači kódu můžete svůj dotaz zabalit do prvních dvou řešení nebo můžete použít globální volbu.

pro vaši informaci můžete použít níže uvedený kód:

$this->db->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
$this->db->trans_start();

// your code

$this->db->trans_complete();

Aktualizace 1:

Před spuštěním příkazů můžete pouze nastavit úroveň izolace v dotazu. Níže je uveden jednoduchý php mysqli kód pro použití 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();


  1. Změna písma v MySQL Workbench

  2. SET NULL:Zadejte řetězec, který se má vrátit, kdykoli se v SQLcl / SQL*Plus objeví hodnota Null

  3. Nepovinné argumenty v klauzuli WHERE

  4. Jak pravidelně spouštět PHP kód automaticky