Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

यदि सत्र डीबीए द्वारा मारा जाता है तो वर्तमान MySQL लेनदेन का क्या होता है?


मान लें कि यदि लेन-देन के बीच में कोई सत्र समाप्त हो जाता है तो वर्तमान MySQL लेनदेन MySQL द्वारा वापस ले लिया जाएगा और समाप्त हो जाएगा। इसका मतलब है कि वर्तमान लेनदेन में किए गए सभी डेटाबेस परिवर्तन हटा दिए जाएंगे। सत्र समाप्त होने पर इसे n निहित रोलबैक कहा जाता है।

उदाहरण

मान लीजिए कि हमारे पास तालिका 'चिह्न' में निम्नलिखित मान हैं

mysql> चिह्नों में से * चुनें; आईडी | नाम | विषय | मार्क्स |+----------+------------+----------+----------+| 1 | आरव | गणित | 50 || 1 | हर्षित | गणित | 55 || 3 | गौरव | कॉम्प | 69 || 4 | राहुल | इतिहास | 40 || 5 | यशराज | अंग्रेज़ी | 48 || 6 | मानक | इतिहास | 70 |+----------+---------+-----------+---------+6 पंक्तियों में सेट (0.00 सेकंड) 

अब हम एक नया लेन-देन शुरू करते हैं और तालिका 'चिह्नों' से एक पंक्ति को हटाते हैं

mysql> START TRANSACTION;क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)mysql> जहाँ id =4; क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.00 सेकंड) से हटाएँ

COMMIT या ROLLBACK से पहले, MySQL का एक और इंस्टेंस चलाने के लिए दूसरी विंडो खोलें और SHOW PROCESSLIST कमांड को निम्नानुसार चलाएँ -

mysql> शो प्रोसेसलिस्ट\G***************************** 1. पंक्ति *********** **************** आईडी:2 उपयोगकर्ता:रूट होस्ट:लोकलहोस्ट:49303 डीबी:क्वेरी कमांड:नींद का समय:22 राज्य:जानकारी:नल ********** ************************* क्रमांक क्रमांक:3 उपयोगकर्ता:रूट होस्ट:लोकलहोस्ट:49350 डीबी:NULLCommand:क्वेरी समय:0 राज्य:पूर्ण जानकारी:सेट (0.00 सेकंड) में प्रक्रिया सूची 2 पंक्तियों को दिखाएं 

अब, KILL कमांड को निम्नानुसार चलाकर वर्तमान लेनदेन को समाप्त करें -

mysql> KILL 2;क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)

अब, जब हम वर्तमान लेनदेन पर वापस लौटते हैं और COMMIT कमांड को फॉलोवर्स के रूप में निष्पादित किया जाता है -

mysql> COMMIT;ERROR 2006 (HY000):MySQL सर्वर चला गया है कोई कनेक्शन नहीं। पुन:कनेक्ट करने का प्रयास कर रहा है...कनेक्शन आईडी:4वर्तमान डेटाबेस:queryQuery ठीक है, 0 पंक्तियाँ प्रभावित (1.01 सेकंड)

उपरोक्त KILL कमांड, जिसने वर्तमान सत्र को समाप्त कर दिया, MySQL को वर्तमान लेनदेन में किए गए परिवर्तनों को वापस लेने के लिए बाध्य करता है। निम्नलिखित क्वेरी से यह देखा जा सकता है कि तालिका 'चिह्न' से कोई पंक्ति नहीं हटाई गई है।

mysql> चिह्नों में से * चुनें; आईडी | नाम | विषय | मार्क्स |+----------+------------+----------+----------+| 1 | आरव | गणित | 50 || 1 | हर्षित | गणित | 55 || 3 | गौरव | कॉम्प | 69 || 4 | राहुल | इतिहास | 40 || 5 | यशराज | अंग्रेज़ी | 48 || 6 | मानक | इतिहास | 70 |+----------+---------+-----------+---------+6 पंक्तियों में सेट (0.00 सेकंड) 
  1. MySQL DECIMAL(x,0) की सीमा क्या है?

    DECIMAL डेटा प्रकार की सीमा INTEGER डेटा प्रकार और BIGINT से अधिक है। जैसा कि हम जानते हैं कि BIGINT 18446744073709551615 स्टोर कर सकता है जबकि DECIMAL में आप DECIMAL(65,0) स्टोर कर सकते हैं जहां x 65 नाइन (9) का प्रतिनिधित्व करता है। DECIMAL संख्या को बाइट्स में संग्रहीत करता है और संग्रहण आवश्यकता

  1. MySQL में EXCEPT के बराबर क्या है?

    आप MySQL में EXCEPT का उपयोग नहीं कर सकते, इसके बजाय NOT IN ऑपरेटर का उपयोग करें। आइए पहले एक टेबल बनाएं - टेबल बनाएं डेमोटेबल (नंबर 1 इंट);क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.71 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल वैल्यू में डालें ( 300);क्वेरी ठीक है, 1 पंक्त

  1. MySQL उपनाम आशुलिपि क्या है?

    आपको स्पष्ट रूप से नाम देना होगा या आप AS कमांड को हटा सकते हैं। आइए पहले एक टेबल बनाएं - तालिका बनाएं DemoTable (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20));क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.21 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल (नाम) मान