लेख निर्देशिका
MySQL डेटाबेसट्रान्झॅक्शन रोलबॅक आयसोलेशन/ओपन कॉन्सेप्ट/लेव्हल प्रोसेसिंग पीएचपी स्टेटमेंट
, MySQL घडामोडी
MySQL व्यवहार प्रामुख्याने मोठ्या प्रमाणात ऑपरेशन्स आणि उच्च जटिलतेसह डेटावर प्रक्रिया करण्यासाठी वापरले जातात.उदाहरणार्थ, कार्मिक व्यवस्थापन प्रणालीमध्ये, तुम्ही एखादी व्यक्ती हटवल्यास, तुम्हाला त्या व्यक्तीची मूलभूत माहिती आणि त्या व्यक्तीशी संबंधित माहिती, जसे की मेलबॉक्सेस, लेख इत्यादी दोन्ही हटवाव्या लागतील. अशा प्रकारे, ही डेटाबेस ऑपरेशन स्टेटमेंट एक व्यवहार तयार करा!
- MySQL मध्ये व्यवहार फक्त डेटाबेसेस किंवा टेबल्ससाठी समर्थित आहेत जे Innodb डेटाबेस इंजिन वापरतात.
- डेटाबेसची अखंडता राखण्यासाठी व्यवहार प्रक्रियेचा वापर केला जाऊ शकतो, SQL स्टेटमेंटच्या बॅचेस एकतर सर्व कार्यान्वित झाल्या आहेत किंवा त्यापैकी एकही कार्यान्वित होणार नाही याची खात्री करून घेता येईल.
- इन्सर्ट, अपडेट, डिलीट स्टेटमेंट व्यवस्थापित करण्यासाठी व्यवहार वापरले जातात
सर्वसाधारणपणे, व्यवहाराने 4 अटी (ACID) पूर्ण केल्या पाहिजेत: अणू (अणुत्व), सुसंगतता (स्थिरता), अलगाव (अलगाव), टिकाऊपणा (विश्वसनीयता)
- 1,व्यवहाराचे अणुत्व:व्यवहारांचा एक संच जो एकतर यशस्वी होतो किंवा मागे घेतो.
- 2,स्थिरता:बेकायदेशीर डेटा आहे (विदेशी की मर्यादा आणि सारखे), आणि व्यवहार मागे घेतला जातो.
- 3,अलगीकरण:व्यवहार स्वतंत्रपणे चालतात.एखाद्या व्यवहाराचा परिणाम इतर व्यवहारांवर परिणाम करत असल्यास, इतर व्यवहार मागे घेतले जातील.गतीच्या खर्चावर व्यवहारांचे 100% अलगाव.
- 4,विश्वसनीयता:सॉफ्टवेअर आणि हार्डवेअर क्रॅश झाल्यानंतर, InnoDB डेटा टेबल ड्रायव्हर लॉग फाइल पुनर्रचना आणि सुधारित करण्यासाठी वापरेल.विश्वासार्हता आणि उच्च गती दोन्ही असू शकत नाहीत, innodb_flush_log_at_trx_commit पर्याय लॉगमध्ये व्यवहार कधी सेव्ह करायचे ते ठरवतो.
MySQL कमांड लाइनच्या डीफॉल्ट सेटिंग्ज अंतर्गत, व्यवहार आपोआप कमिट केले जातात, म्हणजेच, SQL स्टेटमेंट कार्यान्वित झाल्यानंतर लगेच COMMIT ऑपरेशन केले जाईल.म्हणून, व्यवहार स्पष्टपणे उघडण्यासाठी BEGIN किंवा START TRANSACTION कमांड वापरणे आवश्यक आहे किंवा चालू सत्रासाठी स्वयंचलित कमिटचा वापर अक्षम करण्यासाठी SET AUTOCOMMIT=0 कमांड कार्यान्वित करणे आवश्यक आहे.
व्यवहार नियंत्रण विधान:
- व्यवहार सुरू करा किंवा सुरू करा; स्पष्टपणे व्यवहार सुरू करा;
- कमिट; कमिट वर्क देखील वापरले जाऊ शकते, परंतु दोन्ही समतुल्य आहेत. COMMIT व्यवहार करते आणि डेटाबेसमध्ये केलेले सर्व बदल कायमस्वरूपी करते;
- रोलबॅक; रोलबॅक वर्क वापरणे शक्य आहे, परंतु दोन्ही समतुल्य आहेत.रोलबॅकमुळे वापरकर्त्याचा व्यवहार संपतो आणि प्रगतीपथावर असलेले सर्व अप्रतिबंधित बदल पूर्ववत होतात;
- SAVEPOINT आयडेंटिफायर; SAVEPOINT एखाद्या व्यवहारात सेव्हपॉइंट तयार करण्यास अनुमती देते आणि व्यवहारात अनेक SAVEPOINT असू शकतात;
- रिलीझ सेव्हपॉइंट आयडेंटिफायर; व्यवहाराचा सेव्हपॉईंट हटवा, जेव्हा निर्दिष्ट सेव्हपॉइंट नसेल, तेव्हा स्टेटमेंट कार्यान्वित केल्याने अपवाद होईल;
- आयडेंटिफायरवर रोलबॅक करा; बिंदूवर व्यवहार परत करा;
- व्यवहार सेट करा; व्यवहाराची अलगाव पातळी सेट करण्यासाठी वापरला जातो. InnoDB स्टोरेज इंजिनद्वारे प्रदान केलेले व्यवहार अलगाव स्तर हे रीड अनकमिटेड, रीड कमिटेड, रिपीएटेबल रीड आणि सीरिअलायझेबल आहेत.
MYSQL व्यवहार प्रक्रियेच्या दोन मुख्य पद्धती आहेत:
1. साध्य करण्यासाठी BEGIN, ROLLBACK, COMMIT वापरा
- सुरू व्यवहार सुरू करा
- रोलबॅक व्यवहार रोलबॅक
- कमिट व्यवहार पुष्टीकरण
2. MySQL चा स्वयं-कमिट मोड बदलण्यासाठी थेट SET वापरा:
- ऑटोकॉमिट = 0 सेट करा स्वयं-कमिट अक्षम करा
- ऑटोकॉमिट = 1 सेट करा ऑटो-कमिट चालू करा
व्यवहार चाचणी
mysql> use chenweiliang; Database changed mysql> CREATE TABLE chenweiliang_transaction_test( id int(5)) engine=innodb; # 创建数据表 Query OK, 0 rows affected (0.04 sec) mysql> select * from chenweiliang_transaction_test; Empty set (0.01 sec) mysql> begin; # 开始事务 Query OK, 0 rows affected (0.00 sec) mysql> insert into chenweiliang_transaction_test value(5); Query OK, 1 rows affected (0.01 sec) mysql> insert into chenweiliang_transaction_test value(6); Query OK, 1 rows affected (0.00 sec) mysql> commit; # 提交事务 Query OK, 0 rows affected (0.01 sec) mysql> select * from chenweiliang_transaction_test; +------+ | id | +------+ | 5 | | 6 | +------+ 2 rows in set (0.01 sec) mysql> begin; # 开始事务 Query OK, 0 rows affected (0.00 sec) mysql> insert into chenweiliang_transaction_test values(7); Query OK, 1 rows affected (0.00 sec) mysql> rollback; # 回滚 Query OK, 0 rows affected (0.00 sec) mysql> select * from chenweiliang_transaction_test; # 因为回滚所以数据没有插入 +------+ | id | +------+ | 5 | | 6 | +------+ 2 rows in set (0.01 sec) mysql>
PHP मध्ये व्यवहार उदाहरणे वापरणे
चाचणीनुसार MySQL क्रम:
<? php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8"); mysqli_select_db( $conn, 'chenweiliang' ); mysqli_query($conn, "SET AUTOCOMMIT=0"); // 设置为不自动提交,因为MYSQL默认立即执行 mysqli_begin_transaction($conn); // 开始事务定义 if(!mysqli_query($conn, "insert into chenweiliang_transaction_test (id) values(8)")) { mysqli_query($conn, "ROLLBACK"); // 判断当执行失败时回滚 } if(!mysqli_query($conn, "insert into chenweiliang_transaction_test (id) values(9)")) { mysqli_query($conn, "ROLLBACK"); // 判断执行失败时回滚 } mysqli_commit($conn); //执行事务 mysqli_close($conn); ?>
होप चेन वेइलांग ब्लॉग ( https://www.chenweiliang.com/ ) ने "MySQL डेटाबेस ट्रान्झॅक्शन रोलबॅक आयसोलेशन/ओपन कॉन्सेप्ट/लेव्हल प्रोसेसिंग ऑफ PHP स्टेटमेंट" शेअर केले, जे तुमच्यासाठी उपयुक्त आहे.
या लेखाची लिंक सामायिक करण्यासाठी आपले स्वागत आहे:https://www.chenweiliang.com/cwl-494.html
नवीनतम अपडेट्स मिळवण्यासाठी चेन वेइलियांगच्या ब्लॉगच्या टेलिग्राम चॅनेलवर आपले स्वागत आहे!
📚 या मार्गदर्शकामध्ये प्रचंड मूल्य आहे, 🌟ही एक दुर्मिळ संधी आहे, ती चुकवू नका! ⏰⌛💨
आवडल्यास शेअर आणि लाईक करा!
तुमचे शेअरिंग आणि लाईक्स ही आमची सतत प्रेरणा आहे!