Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận dữ liệu chưa được công bố trong MySQL

Đã tìm thấy một bài viết có tiêu đề " Cú pháp MySQL NOLOCK "

http://itecsoftware.com/with-nolock-table-hint -equivalent-for-mysql

SQL Server WITH (NOLOCK) trông giống như sau:

SELECT * FROM TABLE_NAME WITH (nolock)

Để đạt được điều tương tự với MySQL, chúng tôi thay đổi chế độ cách ly phiên bằng cách sử dụng SET SESSION lệnh.

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

Bạn cũng có thể đạt được điều tương tự bằng cách bên dưới:

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

Câu lệnh này sẽ hoạt động tương tự như WITH (NOLOCK), tức là READ UNCOMMITTED dữ liệu. Chúng tôi cũng có thể đặt mức cô lập cho tất cả các kết nối trên toàn cầu:

 SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

Ngoài ra, hai biến hệ thống liên quan đến mức độ cô lập cũng tồn tại trong máy chủ MySQL:

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

Hoặc đặt mức cô lập bên trong giao dịch:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO

Trong trình kích hoạt mã, bạn có thể kết thúc truy vấn của mình bằng hai giải pháp đầu tiên hoặc bạn có thể sử dụng tùy chọn chung.

để bạn tham khảo, bạn có thể sử dụng mã dưới đây:

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

// your code

$this->db->trans_complete();

Cập nhật 1:

Bạn chỉ có thể đặt mức cô lập trong một truy vấn trước khi chạy các câu lệnh của mình. Dưới đây là mã php mysqli đơn giản bạn sử dụng 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. Sphinx mà không sử dụng id auto_increment

  2. SQL / MySQL - Thứ tự theo độ dài của cột

  3. Cài đặt Django mysqlclient

  4. CHÈN SQL từ CHỌN

  5. MySQL và PDO:Có thể PDO ::lastInsertId về mặt lý thuyết không?