ആർട്ടിക്കിൾ ഡയറക്ടറി
MySQL ഡാറ്റാബേസ്ട്രാൻസാക്ഷൻ റോൾബാക്ക് ഐസൊലേഷൻ/ഓപ്പൺ കൺസെപ്റ്റ്/ലെവൽ പ്രോസസ്സിംഗ് php സ്റ്റേറ്റ്മെന്റ്
MySQL അഫയേഴ്സ്
MySQL ഇടപാടുകൾ പ്രധാനമായും ഉപയോഗിക്കുന്നത് വലിയ അളവിലുള്ള പ്രവർത്തനങ്ങളും ഉയർന്ന സങ്കീർണ്ണതയും ഉള്ള ഡാറ്റ പ്രോസസ്സ് ചെയ്യാനാണ്.ഉദാഹരണത്തിന്, പേഴ്സണൽ മാനേജ്മെന്റ് സിസ്റ്റത്തിൽ, നിങ്ങൾ ഒരു വ്യക്തിയെ ഇല്ലാതാക്കുകയാണെങ്കിൽ, വ്യക്തിയുടെ അടിസ്ഥാന വിവരങ്ങളും മെയിൽബോക്സുകൾ, ലേഖനങ്ങൾ തുടങ്ങിയ വ്യക്തിയുമായി ബന്ധപ്പെട്ട വിവരങ്ങളും നിങ്ങൾ ഇല്ലാതാക്കേണ്ടതുണ്ട്. ഈ രീതിയിൽ, ഈ ഡാറ്റാബേസ് പ്രവർത്തന പ്രസ്താവനകൾ ഒരു ഇടപാട് രൂപീകരിക്കുക!
- Innodb ഡാറ്റാബേസ് എഞ്ചിൻ ഉപയോഗിക്കുന്ന ഡാറ്റാബേസുകൾക്കോ പട്ടികകൾക്കോ മാത്രമേ MySQL-ൽ ഇടപാടുകൾ പിന്തുണയ്ക്കൂ.
- ഡാറ്റാബേസിന്റെ സമഗ്രത നിലനിർത്താൻ ഇടപാട് പ്രോസസ്സിംഗ് ഉപയോഗിക്കാം, SQL സ്റ്റേറ്റ്മെന്റുകളുടെ ബാച്ചുകൾ ഒന്നുകിൽ എക്സിക്യൂട്ട് ചെയ്തിട്ടുണ്ടോ അല്ലെങ്കിൽ അവയൊന്നും എക്സിക്യൂട്ട് ചെയ്തിട്ടില്ലെന്ന് ഉറപ്പാക്കുന്നു.
- സ്റ്റേറ്റ്മെന്റുകൾ ചേർക്കാനും അപ്ഡേറ്റ് ചെയ്യാനും ഇല്ലാതാക്കാനും ഇടപാടുകൾ ഉപയോഗിക്കുന്നു
പൊതുവായി പറഞ്ഞാൽ, ഒരു ഇടപാട് 4 വ്യവസ്ഥകൾ (ACID) പാലിക്കണം: ആറ്റോമിസിറ്റി (ആറ്റോമിസിറ്റി), സ്ഥിരത (സ്ഥിരത), ഒറ്റപ്പെടൽ (ഒറ്റപ്പെടൽ), ഡ്യൂറബിലിറ്റി (വിശ്വാസ്യത)
- ക്സനുമ്ക്സ,ഇടപാടുകളുടെ ആറ്റോമിസിറ്റി:വിജയിക്കുന്നതോ പിൻവലിക്കുന്നതോ ആയ ഇടപാടുകളുടെ ഒരു കൂട്ടം.
- ക്സനുമ്ക്സ,സ്ഥിരത:നിയമവിരുദ്ധമായ ഡാറ്റയുണ്ട് (വിദേശ കീ നിയന്ത്രണങ്ങളും മറ്റും), ഇടപാട് പിൻവലിച്ചു.
- ക്സനുമ്ക്സ,ഐസൊലേഷൻ:ഇടപാടുകൾ സ്വതന്ത്രമായി നടക്കുന്നു.ഒരു ഇടപാടിന്റെ ഫലം മറ്റ് ഇടപാടുകളെ ബാധിക്കുകയാണെങ്കിൽ, മറ്റ് ഇടപാടുകൾ പിൻവലിക്കപ്പെടും.വേഗതയുടെ ചെലവിൽ ഇടപാടുകളുടെ 100% ഒറ്റപ്പെടൽ.
- ക്സനുമ്ക്സ,വിശ്വാസ്യത:സോഫ്റ്റ്വെയറും ഹാർഡ്വെയറും തകരാറിലായ ശേഷം, InnoDB ഡാറ്റ ടേബിൾ ഡ്രൈവർ ലോഗ് ഫയൽ പുനർനിർമ്മിക്കുന്നതിനും പരിഷ്ക്കരിക്കുന്നതിനും ഉപയോഗിക്കും.വിശ്വാസ്യതയും ഉയർന്ന വേഗതയും രണ്ടും ഉണ്ടായിരിക്കില്ല, ലോഗിലേക്ക് ഇടപാടുകൾ എപ്പോൾ സംരക്ഷിക്കണമെന്ന് innodb_flush_log_at_trx_commit ഓപ്ഷൻ നിർണ്ണയിക്കുന്നു.
MySQL കമാൻഡ് ലൈനിന്റെ സ്ഥിരസ്ഥിതി ക്രമീകരണങ്ങൾക്ക് കീഴിൽ, ഇടപാടുകൾ സ്വയമേവ പ്രതിജ്ഞാബദ്ധമാണ്, അതായത്, SQL പ്രസ്താവന നടപ്പിലാക്കിയ ഉടൻ തന്നെ COMMIT പ്രവർത്തനം നടപ്പിലാക്കും.അതിനാൽ, ഒരു ഇടപാട് വ്യക്തമായി തുറക്കുന്നതിന്, നിലവിലെ സെഷനിൽ ഓട്ടോമാറ്റിക് കമ്മിറ്റിന്റെ ഉപയോഗം പ്രവർത്തനരഹിതമാക്കുന്നതിന് BEGIN അല്ലെങ്കിൽ START TRANSACTION എന്ന കമാൻഡ് ഉപയോഗിക്കണം അല്ലെങ്കിൽ SET AUTOCOMMIT=0 എന്ന കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുക.
ഇടപാട് നിയന്ത്രണ പ്രസ്താവന:
- ആരംഭിക്കുക അല്ലെങ്കിൽ ഇടപാട് ആരംഭിക്കുക; ഒരു ഇടപാട് വ്യക്തമായി ആരംഭിക്കുക;
- COMMIT; COMMIT WORK എന്നതും ഉപയോഗിക്കാം, എന്നാൽ ഇവ രണ്ടും തുല്യമാണ്. COMMIT ഇടപാട് നടത്തുകയും ഡാറ്റാബേസിൽ വരുത്തിയ എല്ലാ മാറ്റങ്ങളും സ്ഥിരമാക്കുകയും ചെയ്യുന്നു;
- റോൾബാക്ക്; റോൾബാക്ക് വർക്ക് ഉപയോഗിക്കാൻ കഴിയും, എന്നാൽ രണ്ടും തുല്യമാണ്.റോൾബാക്ക് ഉപയോക്താവിന്റെ ഇടപാട് അവസാനിപ്പിക്കുകയും പുരോഗതിയിലുള്ള എല്ലാ പ്രതിബദ്ധതയില്ലാത്ത പരിഷ്കാരങ്ങളും പഴയപടിയാക്കുകയും ചെയ്യുന്നു;
- SAVEPOINT ഐഡന്റിഫയർ; 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 ഡാറ്റാബേസ് ട്രാൻസാക്ഷൻ റോൾബാക്ക് ഐസൊലേഷൻ/ഓപ്പൺ കൺസെപ്റ്റ്/പിഎച്ച്പി സ്റ്റേറ്റ്മെന്റുകളുടെ ലെവൽ പ്രോസസ്സിംഗ്" പങ്കിട്ടു, ഇത് നിങ്ങൾക്ക് സഹായകരമാണ്.
ഈ ലേഖനത്തിന്റെ ലിങ്ക് പങ്കിടാൻ സ്വാഗതം:https://www.chenweiliang.com/cwl-494.html
ഏറ്റവും പുതിയ അപ്ഡേറ്റുകൾ ലഭിക്കുന്നതിന് ചെൻ വെയ്ലിയാങ്ങിന്റെ ബ്ലോഗിന്റെ ടെലിഗ്രാം ചാനലിലേക്ക് സ്വാഗതം!
📚 ഈ ഗൈഡിൽ വലിയ മൂല്യമുണ്ട്, 🌟 ഇതൊരു അപൂർവ അവസരമാണ്, ഇത് നഷ്ടപ്പെടുത്തരുത്! ⏰⌛💨
ഇഷ്ടമായാൽ ഷെയർ ചെയ്യുക, ലൈക്ക് ചെയ്യുക!
നിങ്ങളുടെ ഷെയറിംഗും ലൈക്കുകളുമാണ് ഞങ്ങളുടെ തുടർച്ചയായ പ്രചോദനം!