sql >> Database teknologi >  >> RDS >> Mysql

Få uforpligtende data i MySQL

Fandt en artikel med titlen "MySQL NOLOCK-syntaks "

http://itecsoftware.com/with-nolock-table-hint -ækvivalent-til-mysql

SQL Server WITH (NOLOCK) ser sådan ud:

SELECT * FROM TABLE_NAME WITH (nolock)

For at opnå det samme med MySQL ændrer vi sessionsisoleringstilstanden ved hjælp af SET SESSION kommando.

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

Du kan også opnå det samme ved at nedenfor:

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

Denne erklæring vil fungere på samme måde som WITH (NOLOCK), dvs. READ UNCOMMITTED data. Vi kan også indstille isolationsniveauet for alle forbindelser globalt:

 SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

Derudover findes to systemvariabler relateret til isolationsniveau også i MySQL-serveren:

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

Eller indstil isolationsniveauet i en transaktion:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO

I kodetænder kan du pakke din forespørgsel med de første to løsninger, eller du kan bruge den globale mulighed.

til din reference kan du bruge nedenstående kode:

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

// your code

$this->db->trans_complete();

Opdatering 1:

Du kan bare indstille isolationsniveauet i en forespørgsel, før du kører dine udsagn. Nedenfor er den simple php mysqli kode, du bruger 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. Firebase FCM-token - Hvornår skal der sendes til serveren?

  2. Hvordan gemmer jeg MySQL-forespørgselsresultater i en anden tabel?

  3. Oracle Trigger ORA-04098:Triggeren er ugyldig og mislykket genvalidering

  4. MYSQL Vælg MAX Date i en sammenslutningserklæring