የአንቀጽ ማውጫ
MySQL የውሂብ ጎታየግብይት መልሶ ማግለል/ክፍት ፅንሰ-ሀሳብ/ደረጃ ሂደት ፒኤችፒ መግለጫ
MySQL ጉዳዮች
የ MySQL ግብይቶች በዋነኛነት ጥቅም ላይ የሚውሉት ውሂብን በከፍተኛ መጠን እና ከፍተኛ ውስብስብነት ለማስኬድ ነው።ለምሳሌ በሰራተኞች አስተዳደር ስርዓት አንድን ሰው ከሰረዙ የሰውየውን መሰረታዊ መረጃ እና ከሰው ጋር የተያያዙ መረጃዎችን ለምሳሌ የመልእክት ሳጥኖች ፣ መጣጥፎች ፣ ወዘተ የመሳሰሉትን በዚህ መንገድ እነዚህን የውሂብ ጎታ ኦፕሬሽን መግለጫዎች ማጥፋት ያስፈልግዎታል ። ግብይት ይመሰርታል!
- ግብይቶች በ MySQL ውስጥ የሚደገፉት Innodb የውሂብ ጎታ ሞተርን ለሚጠቀሙ የውሂብ ጎታዎች ወይም ሰንጠረዦች ብቻ ነው።
- የግብይት ማቀናበሪያ የውሂብ ጎታውን ትክክለኛነት ለመጠበቅ ጥቅም ላይ ሊውል ይችላል፣ ይህም የ SQL መግለጫዎች ባችዎች ሁሉም መፈጸሙን ወይም አንዳቸውም እንዳልተፈጸሙ ማረጋገጥ ነው።
- ግብይቶች መግለጫዎችን ማስገባት፣ ማዘመን እና መሰረዝን ለማስተዳደር ያገለግላሉ
በአጠቃላይ አንድ ግብይት 4 ሁኔታዎችን (ACID) ማሟላት አለበት፡ አቶሚቲቲ (አቶሚቲቲ)፣ ወጥነት (መረጋጋት)፣ ማግለል (መነጠል)፣ ዘላቂነት (አስተማማኝነት)
- 1,የግብይቶች አተያይነት፡-የተሳካላቸው ወይም የሚያወጡት የግብይቶች ስብስብ።
- 2,መረጋጋት፡ሕገወጥ ውሂብ (የውጭ ቁልፍ ገደቦች እና የመሳሰሉት) አለ፣ እና ግብይቱ ተሰርዟል።
- 3,ነጠላ:ግብይቶች በተናጥል ይሰራሉ።የግብይቱ ውጤት ሌሎች ግብይቶችን የሚነካ ከሆነ ሌሎች ግብይቶች ይሰረዛሉ።በፍጥነት ወጪ 100% ግብይቶችን ማግለል.
- 4,አስተማማኝነት፡-ከሶፍትዌር እና ሃርድዌር ብልሽት በኋላ የInnoDB ዳታ ሰንጠረዥ ሾፌር የሎግ ፋይሉን መልሶ ለመገንባት እና ለማሻሻል ይጠቀማል።አስተማማኝነት እና ከፍተኛ ፍጥነት ሁለቱም ሊኖራቸው አይችልም፣ የ innodb_flush_log_at_trx_commit አማራጩ ግብይቶችን በምዝግብ ማስታወሻው ላይ መቼ ማስቀመጥ እንዳለበት ይወስናል።
በ MySQL ትዕዛዝ መስመር ነባሪ ቅንጅቶች ስር ግብይቶች በራስ-ሰር ይፈጸማሉ ፣ ማለትም ፣ የ COMMIT ክዋኔው የ SQL መግለጫ ከተፈጸመ በኋላ ወዲያውኑ ይከናወናል።ስለዚህ ግብይቱን በግልፅ ለመክፈት ለአሁኑ ክፍለ ጊዜ አውቶማቲክ ቁርጠኝነትን ለማሰናከል BEGIN ወይም START TRANSACTION የሚለውን ትዕዛዝ መጠቀም ወይም SET AUTOCOMMIT=0 የሚለውን ትዕዛዝ መተግበር አለበት።
የግብይት ቁጥጥር መግለጫ፡-
- ግብይት ጀምር ወይም ጀምር፤ ግብይት በግልጽ ጀምር፤
- ቁርጠኝነት፤ ቁርጠኝነት ሥራን መጠቀምም ይቻላል፣ ግን ሁለቱ አቻ ናቸው። COMMIT ግብይቱን ይፈጽማል እና በመረጃ ቋቱ ላይ የተደረጉ ለውጦችን ሁሉ ቋሚ ያደርገዋል።
- ROLLBACK፤ ROLLBACK WORKን መጠቀም ይቻላል፣ ግን ሁለቱ አቻ ናቸው።ሮልባክ የተጠቃሚውን ግብይት ያጠናቅቃል እና በሂደት ላይ ያሉ ሁሉንም ያልተደረጉ ማሻሻያዎችን ይሰርዛል።
- SAVEPOINT መለያ፤ SAVEPOINT በግብይት ውስጥ የማስቀመጫ ነጥብ ለመፍጠር ያስችላል፣ እና በግብይት ውስጥ ብዙ SAVEPOINTs ሊኖሩ ይችላሉ።
- ይልቀቁ SAVEPOINT ለዪ፤ የግብይቱን ማስቀመጫ ነጥብ ይሰርዙ፣ ምንም የተወሰነ የማዳን ነጥብ ከሌለ መግለጫውን መፈጸም ልዩ ሁኔታን ይፈጥራል።
- ወደ መለያው መመለስ፤ ግብይቱን ወደ ነጥቡ መመለስ፤
- ግብይት አዘጋጅ፤ የግብይቱን የማግለል ደረጃ ለማዘጋጀት ይጠቅማል። የ InnoDB ማከማቻ ሞተር የግብይት ማግለል ደረጃዎችን ያቀርባል ያልተሰበሰበ ማንበብ፣ የተፈፀመ ማንበብ፣ ሊደገም የሚችል ማንበብ እና ተከታታይ።
የ MYSQL ግብይት ሂደት ሁለት ዋና መንገዶች አሉ፡-
1. ለማሳካት BEGIN፣ ROLLBACK፣ COMMIT ይጠቀሙ
- BEGIN ግብይት ይጀምሩ
- እንዲመለስ የግብይት መመለሻ
- COMMIT የግብይት ማረጋገጫ
2. የ MySQL አውቶማቲክ ሁነታን ለመቀየር በቀጥታ SET ይጠቀሙ፡-
- AUTOCOMMIT=0 አዘጋጅ ራስ-ሰር ማድረግን ያሰናክሉ።
- AUTOCOMMIT=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 ORDER በሙከራ፡-
<? 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); ?>
ተስፋ Chen Weiliang ብሎግ ( https://www.chenweiliang.com/ ) የተጋራ "የMySQL ዳታቤዝ ግብይት መልሶ ማግለል/ክፍት ፅንሰ-ሀሳብ/የPHP መግለጫዎችን ደረጃ ማቀናበር"፣ ይህም ለእርስዎ ጠቃሚ ነው።
እንኳን በደህና መጡ የዚህን ጽሁፍ ማገናኛ ለማጋራት፡-https://www.chenweiliang.com/cwl-494.html
አዳዲስ መረጃዎችን ለማግኘት ወደ የቼን ዌይሊያንግ ብሎግ የቴሌግራም ቻናል እንኳን በደህና መጡ።
📚 ይህ መመሪያ ትልቅ ዋጋ አለው፣ 🌟ይህ ያልተለመደ እድል ነው፣ እንዳያመልጥዎ! ⏰⌛💨
ከወደዳችሁት ሼር እና ላይክ አድርጉ!
የእርስዎ ማጋራት እና መውደዶች ቀጣይ ማበረታቻዎቻችን ናቸው!