日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

簡(jiǎn)單介紹MySQL中的事務(wù)機(jī)制(2)_MySQL教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:mysql查詢區(qū)分大小寫(xiě)高性能
mysql查詢默認(rèn)是不區(qū)分大小寫(xiě)的 如: 效果是一樣的。 要讓mysql查詢區(qū)分大小寫(xiě),可以: 也可以在建表時(shí),加以標(biāo)識(shí) 測(cè)試30W數(shù)據(jù) 不支持索引,查詢效率底下,不建議考慮。上面這些sql語(yǔ)句乍看不會(huì)有什么問(wèn)題,但是當(dāng)表中的數(shù)據(jù)多了以后,問(wèn)題就會(huì)凸顯出來(lái),用不到索引,

  鏈?zhǔn)聞?wù)

  鏈?zhǔn)聞?wù),就是指回滾時(shí),只能恢復(fù)到最近一個(gè)保存點(diǎn);而帶有保存點(diǎn)的扁平事務(wù)則可以回滾到任意正確的保存點(diǎn)。

  嵌套事務(wù)

  看下面這個(gè),你就能明白了,啥是嵌套事務(wù):

  BEGIN WORK

  SubTransaction1:

  BEGIN WORK

  SubOperationX

  COMMIT WORK

  SubTransaction2:

  BEGIN WORK

  SubOperationY

  COMMIT WORK

  ...

  SubTransactionN:

  BEGIN WORK

  SubOperationN

  COMMIT WORK

  COMMIT WORK

  這就是嵌套事務(wù),在事務(wù)中再嵌套事務(wù),位于根節(jié)點(diǎn)的事務(wù)稱為頂層事務(wù)。事務(wù)的前驅(qū)稱為父事務(wù),其它事務(wù)稱為子事務(wù)。事務(wù)的前驅(qū)稱為父事務(wù),事務(wù)的下一層稱為子事務(wù)。

  子事務(wù)既可以提交也可以回滾,但是它的提交操作并不馬上生效,除非由其父事務(wù)提交。因此就可以確定,任何子事務(wù)都在頂層事務(wù)提交后才真正的被提交了。同理,任意一個(gè)事務(wù)的回滾都會(huì)引起它的所有子事務(wù)一同回滾。

  分布式事務(wù)

  分布式事務(wù)通常是指在一個(gè)分布式環(huán)境下運(yùn)行的扁平事務(wù),因此需要根據(jù)數(shù)據(jù)所在位置訪問(wèn)網(wǎng)絡(luò)中的不同節(jié)點(diǎn),比如:通過(guò)建設(shè)銀行向招商銀行轉(zhuǎn)賬,建設(shè)銀行和招商銀行肯定用的不是同一個(gè)數(shù)據(jù)庫(kù),同時(shí)二者的數(shù)據(jù)庫(kù)也不在一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)上,那么當(dāng)用戶跨行轉(zhuǎn)賬,就是通過(guò)分布式事務(wù)來(lái)保證數(shù)據(jù)的ACID的。

  MySQL中使用事務(wù)

  理論總結(jié)的再好,終歸都要通過(guò)實(shí)踐來(lái)進(jìn)行理解。下面就來(lái)說(shuō)說(shuō)MySQL中是如何使用事務(wù)的。

  在MySQL命令行的默認(rèn)設(shè)置下,事務(wù)都是自動(dòng)提交的,即執(zhí)行SQL語(yǔ)句后就會(huì)馬上執(zhí)行COMMIT操作。因此要顯示地開(kāi)啟一個(gè)事務(wù)須使用命令BEGIN或START TRANSACTION,或者執(zhí)行命令SET AUTOCOMMIT=0,用來(lái)禁止使用當(dāng)前會(huì)話的自動(dòng)提交。

  來(lái)看看我們可以使用哪些事務(wù)控制語(yǔ)句。

  BEGIN或START TRANSACTION;顯示地開(kāi)啟一個(gè)事務(wù);

  COMMIT;也可以使用COMMIT WORK,不過(guò)二者是等價(jià)的。COMMIT會(huì)提交事務(wù),并使已對(duì)數(shù)據(jù)庫(kù)進(jìn)行的所有修改稱為永久性的;

  ROLLBACK;有可以使用ROLLBACK WORK,不過(guò)二者是等價(jià)的�;貪L會(huì)結(jié)束用戶的事務(wù),并撤銷正在進(jìn)行的所有未提交的修改;

  SAVEPOINT identifier;SAVEPOINT允許在事務(wù)中創(chuàng)建一個(gè)保存點(diǎn),一個(gè)事務(wù)中可以有多個(gè)SAVEPOINT;

  RELEASE SAVEPOINT identifier;刪除一個(gè)事務(wù)的保存點(diǎn),當(dāng)沒(méi)有指定的保存點(diǎn)時(shí),執(zhí)行該語(yǔ)句會(huì)拋出一個(gè)異常;

  ROLLBACK TO identifier;把事務(wù)回滾到標(biāo)記點(diǎn);

  SET TRANSACTION;用來(lái)設(shè)置事務(wù)的隔離級(jí)別。InnoDB存儲(chǔ)引擎提供事務(wù)的隔離級(jí)別有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

  這些不用你“管”

  有的時(shí)候有些SQL語(yǔ)句會(huì)產(chǎn)生一個(gè)隱式的提交操作,即執(zhí)行完成這些語(yǔ)句后,會(huì)有一個(gè)隱式的COMMIT操作。有以下SQL語(yǔ)句,不用你去“管”:

  DDL語(yǔ)句,ALTER DATABASE、ALTER EVENT、ALTER PROCEDURE、ALTER TABLE、ALTER VIEW、CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE等;

  修改MYSQL架構(gòu)的語(yǔ)句,CREATE USER、DROP USER、GRANT、RENAME USER、REVOKE、SET PASSWORD;

  管理語(yǔ)句,ANALYZE TABLE、CACHE INDEX、CHECK TABLE、LOAD INDEX INTO CACHE、OPTIMIZE TABLE、REPAIR TABLE等。

  以上的這些SQL操作都是隱式的提交操作,不需要手動(dòng)顯式提交。

  事務(wù)的隔離級(jí)別

  上面也說(shuō)到了SET TRANSACTION用來(lái)設(shè)置事務(wù)的隔離級(jí)別。那事務(wù)的隔離級(jí)別是什么東東?

  在數(shù)據(jù)庫(kù)操作中,為了有效保證并發(fā)讀取數(shù)據(jù)的正確性,提出的事務(wù)隔離級(jí)別。

分享:WordPress如何修改Mysql數(shù)據(jù)庫(kù)的表前綴
我們知道 WordPress 的數(shù)據(jù)庫(kù)表,可以設(shè)置前綴,默認(rèn)是 wp_,很多同學(xué)也就默認(rèn)用了 wp_,如果某種原因(比如提高安全性)要修改的 WordPress 數(shù)據(jù)的前綴,我們應(yīng)該怎么做? 開(kāi)始之前 修改數(shù)據(jù)是一件風(fēng)險(xiǎn)很高的工作,開(kāi)始之前必然就是做好 數(shù)據(jù)庫(kù)備份 ,也可以 把博客設(shè)置

來(lái)源:模板無(wú)憂//所屬分類:MySQL教程/更新時(shí)間:2015-05-23
相關(guān)MySQL教程