Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uzyskaj niezaangażowane dane w MySQL

Znaleziono artykuł zatytułowany „Składnia MySQL NOLOCK "

http://itecsoftware.com/with-nolock-table-hint -odpowiednik-dla-mysql

SQL Server WITH (NOLOCK) wygląda tak:

SELECT * FROM TABLE_NAME WITH (nolock)

Aby osiągnąć to samo z MySQL, zmieniamy tryb izolacji sesji za pomocą SET SESSION polecenie.

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

Możesz to osiągnąć również poniżej:

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

Ta instrukcja będzie działać podobnie do WITH (NOLOCK), tj. READ UNCOMMITTED dane. Możemy również ustawić poziom izolacji dla wszystkich połączeń globalnie:

 SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

Ponadto na serwerze MySQL istnieją również dwie zmienne systemowe związane z poziomem izolacji:

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

Lub ustaw poziom izolacji wewnątrz transakcji:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO

W rozruszniku kodu możesz owinąć swoje zapytanie dwoma pierwszymi rozwiązaniami lub możesz użyć opcji globalnej.

w celach informacyjnych możesz użyć poniższego kodu:

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

// your code

$this->db->trans_complete();

Aktualizacja 1:

Możesz po prostu ustawić poziom izolacji w zapytaniu przed uruchomieniem instrukcji. Poniżej znajduje się prosty kod mysqli php tu użyj 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. Jak korzystać z klauzuli MySql IN

  2. Jak znaleźć i zamienić tekst w tabeli mysql

  3. TO_SECONDS() Przykłady – MySQL

  4. Jak sprawdzić rozmiar bazy danych w MySQL?

  5. Zaktualizuj tabelę MySQL z pliku lokalnego