Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Dapatkan Data Tanpa Komitmen di MySQL

Menemukan artikel dengan judul "Sintaksis MySQL NOLOCK "

http://itecsoftware.com/with-nolock-table-hint -setara-untuk-mysql

SQL Server WITH (NOLOCK) terlihat seperti ini:

SELECT * FROM TABLE_NAME WITH (nolock)

Untuk mencapai hal yang sama dengan MySQL, kami mengubah mode isolasi sesi menggunakan SET SESSION perintah.

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

Anda juga dapat mencapai hal yang sama di bawah ini:

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

Pernyataan ini akan bekerja mirip dengan WITH (NOLOCK) yaitu READ UNCOMMITTED data. Kami juga dapat mengatur tingkat isolasi untuk semua koneksi secara global:

 SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

Selain itu, dua variabel sistem yang terkait dengan isolasi juga level ada di server MySQL:

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

Atau atur tingkat isolasi di dalam transaksi:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO

Dalam penyala kode, Anda dapat membungkus kueri Anda dengan dua solusi pertama atau Anda dapat menggunakan opsi global.

untuk referensi Anda, Anda dapat menggunakan kode di bawah ini:

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

// your code

$this->db->trans_complete();

Pembaruan 1:

Anda bisa mengatur tingkat isolasi dalam kueri sebelum menjalankan pernyataan Anda. Di bawah ini adalah kode php mysqli sederhana yang Anda gunakan 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Anda mendapatkan UTC dari Field datetime?

  2. Properti tidak terdefinisi:Illuminate\Database\Eloquent\Collection::Laravel 5.2

  3. Menyimpan GUID/UUID MySQL

  4. mysql bergabung dengan pesanan kueri dengan dua kolom

  5. nama bidang mysql dari variabel