Mysql
 sql >> база данни >  >> RDS >> Mysql

Вземете необвързани данни в MySQL

Намерих статия със заглавие „Синтаксис на MySQL NOLOCK "

http://itecsoftware.com/with-nolock-table-hint -еквивалентно-за-mysql

SQL Server С (NOLOCK) изглежда така:

SELECT * FROM TABLE_NAME WITH (nolock)

За да постигнем същото с MySQL, променяме режима на изолация на сесията, като използваме SET SESSION команда.

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

Можете да постигнете същото и чрез по-долу:

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

Това изявление ще работи подобно на WITH (NOLOCK), т.е. READ UNCOMMITTED данни. Можем също да зададем нивото на изолация за всички връзки глобално:

 SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

В допълнение, две системни променливи, свързани с нивото на изолация, също съществуват в MySQL сървъра:

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

Или задайте нивото на изолация в транзакция:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO

В code igniter можете да обвиете заявката си с първите две решения или можете да използвате глобална опция.

за ваша справка можете да използвате кода по-долу:

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

// your code

$this->db->trans_complete();

Актуализация 1:

Можете просто да зададете нивото на изолация в заявка, преди да изпълните своите изрази. По-долу е простият php mysqli код, който използвате 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. base64 кодиране в MySQL

  2. Най-добри практики за оптимизиране на база данни на MySQL

  3. Емулиране на безопасна за транзакция SEQUENCE в MySQL

  4. PHP $stmt->num_rows не работи с подготвени оператори

  5. MySQL GUI програми