Eolaire Eolaire
Bunachar sonraí MySQL saor in aisce,Ráiteas php a leithlisiú ais-rolladh idirbheart/coincheap oscailte/leibhéal
MySQL Gnóthaí
Úsáidtear idirbhearta MySQL go príomha chun sonraí a phróiseáil le líon mór oibríochtaí agus castacht ard.Mar shampla, sa chóras bainistíochta pearsanra, má scriosann tú duine, ní mór duit faisnéis bhunúsach an duine agus an fhaisnéis a bhaineann leis an duine a scriosadh, mar shampla boscaí poist, earraí, etc. Ar an mbealach seo, na ráitis oibríochta bunachar sonraí seo. ionann idirbheart !
- Ní thacaítear le hidirbhearta i MySQL ach amháin le haghaidh bunachair shonraí nó táblaí a úsáideann inneall bunachar sonraí Innodb.
- Is féidir próiseáil idirbheart a úsáid chun sláine an bhunachair shonraí a chothabháil, ag cinntiú go ndéantar baisceanna de ráitis SQL a fhorghníomhú nó nach ndéantar aon cheann acu.
- Baintear úsáid as bearta chun ráitis a chur isteach, a nuashonrú, a scriosadh a bhainistiú
Go ginearálta, ní mór d’idirbhearta 4 choinníoll a chomhlíonadh (ACID): Adaimh (adamhacht), Comhsheasmhacht (cobhsaíocht), Leithlisiú (aonrú), Marthanacht (iontaofacht)
- 1,Atomity na n-idirbheart:Sraith idirbheart a n-éiríonn leo nó a tharraingíonn siar.
- 2,cobhsaíocht:Tá sonraí mídhleathacha (príomhshrianta eachtracha agus a leithéidí), agus tarraingítear siar an t-idirbheart.
- 3,Leithlis:Reáchtálann idirbhearta go neamhspleách.Má chuireann toradh idirbhirt isteach ar idirbhearta eile, tarraingeofar siar idirbhearta eile.Aonrú 100% na n-idirbheart ar chostas luas.
- 4,iontaofacht:Tar éis an timpiste bogearraí agus crua-earraí, úsáidfidh an tiománaí tábla sonraí InnoDB an comhad loga chun é a athchruthú agus a mhodhnú.Ní féidir leis an dá cheann a bheith ag iontaofacht agus ardluais, cinneann an rogha innodb_flush_log_at_trx_commit cathain is ceart idirbhearta a shábháil ar an logáil.
Faoi shocruithe réamhshocraithe an líne ordaithe MySQL, déantar idirbhearta go huathoibríoch, is é sin, déanfar an oibríocht COMMIT díreach tar éis an ráiteas SQL a fhorghníomhú.Dá bhrí sin, chun idirbheart a oscailt go sainráite ní mór an t-ordú BEGIN or START TRANSATION, nó an t-ordú SET AUTOCOMMIT=0 a rith, a úsáid chun úsáid tiomnú uathoibríoch a dhíchumasú don seisiún reatha.
Ráiteas rialaithe idirbhirt:
- TÚS nó TÚS AR IDIRBHEARTA; cuir tús le hidirbheart go sainráite;
- TIOMANTAS; Is féidir OBAIR CHEANTA a úsáid freisin, ach is ionann an dá cheann. déanann COMMIT an t-idirbheart a cheangal agus déanann sé gach modhnú a dhéantar ar an mbunachar sonraí buan;
- ROLLBACK; is féidir OBAIR ROLLA a úsáid, ach is ionann an dá cheann.Críochnaíonn an t-aischur idirbheart an úsáideora agus cealaítear gach modhnú nach bhfuil déanta;
- Aitheantóir SAVEPOINT; Ligeann SAVEPOINT pointe sábhála a chruthú in idirbheart, agus is féidir go mbeadh go leor SAVEPOINT in idirbheart;
- LÉIGH Aitheantóir SAVEPOINT; scrios pointe sábhála idirbhirt, nuair nach bhfuil aon sábhálann sonraithe ann, agus an ráiteas á fhorghníomhú caithfear eisceacht;
- ROLLA CHUIG Aitheantóir; rolladh ar ais an t-idirbheart go dtí an pointe;
- IDIRBHEARTA SOCRUITHE; úsáidtear é chun leibhéal leithlisithe an idirbhirt a shocrú. Tá na leibhéil leithlisithe idirbhirt a chuireann inneall stórála InnoDB ar fáil LÉIGH NEAMHCHOIMISIÚNTA, LÉIGH TIOMANTA, LÉAMH ATHDHÉANAMH, agus SRAITHIÚIL.
Tá dhá phríomh-mhodh próiseála idirbheart MySQL:
1. Bain úsáid as BEGIN, ROLLBACK, COMMIT a bhaint amach
- BEGIN idirbheart a thosú
- AIS-rolladh aischur idirbheart
- COISTE Deimhniú idirbhirt
2. Úsáid SET go díreach chun modh uathtiomantais MySQL a athrú:
- SETAUTOCOMMIT=0 Díchumasaigh tiomnú uathoibríoch
- SETAUTOCOMMIT=1 Cuir uath-tiom ar siúl
tástáil idirbheart
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>
Ag baint úsáide as Cásanna Idirbheart i PHP
MySQL ORDÚ DE RÉIR tástála:
<?
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);
?>Tá súil agam Blag Chen Weiliang ( https://www.chenweiliang.com/ ) roinnte "Ionrú Ais-rolladh Idirbheart MySQL Bunachar Sonraí / Coincheap Oscailte / Próiseáil Leibhéil Ráitis PHP", rud atá cabhrach duit.
Fáilte romhat nasc an ailt seo a roinnt:https://www.chenweiliang.com/cwl-494.html
Chun níos mó cleasanna ceilte a dhíghlasáil🔑, fáilte romhat páirt a ghlacadh inár gcainéal Telegram!
Roinn agus maith más maith leat é! Is iad do chuid scaireanna agus rudaí is maith leat ár spreagadh leanúnach!