"MySQL NOLOCK सिंटैक्स . शीर्षक वाला लेख मिला "
http://itecsoftware.com/with-nolock-table-hint -इक्विवेलेंट-फॉर-mysql
SQL सर्वर के साथ (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
कोड इग्नाइटर में आप अपनी क्वेरी को पहले दो समाधान के साथ लपेट सकते हैं या आप वैश्विक विकल्प का उपयोग कर सकते हैं।
आपके संदर्भ के लिए आप नीचे दिए गए कोड का उपयोग कर सकते हैं:
$this->db->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
$this->db->trans_start();
// your code
$this->db->trans_complete();
अपडेट 1:
आप अपने बयानों को चलाने से पहले एक प्रश्न में अलगाव स्तर सेट कर सकते हैं। नीचे सरल php mysqli कोड tu उपयोग 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();