交易
什麼是交易
一個交易由作為一個單獨單元的一個或多個sql語句組成。這個單元中的每個sql語句是互相依賴的, 而且單元作為一個整體是不可分割的。如果單元中的一個語句無法成功完成,整個單元都會回滾,所有影響到的資料將會回到 事務開始之前的狀態。因而,只有事務中的所有語句都被成功的執行才能說這個事務被成功執行。
事務的四個特性:
原子性(Atomicity),每個事務都必須被視為一個不可分割的單元。
一致性(Consistency),不管事務是完全成功還是中途失敗,當事務使系統處於一致的狀態時存在一致性。
隔離性(Isolation),每個事務在它自己的空間發生,和其他發生在系統中的事務隔離,而且事務的結果只有在它完全被執行時才能看到。
持久性(Durability),即使系統崩潰,一個提交的事務扔在堅持。
生命週期
為了初始化一個事務,並告訴MySQL所有隨後的sql語句需要被認為是一個單元,MySQL提供了start transaction指令來標記 一個事務的開始。也可以使用begin或begin work指令來初始化一個事務。通常情況下,start transction指令後面跟隨的 是組成事務的sql語句。
一旦sql語句被執行,就可使用commit指令來把整個交易保存在磁碟上,或是使用rollback指令來撤銷所有的變更。 如果事務包括事務表和非事務表的變化,非事務表的事務處理部分是不能使用rollback指令撤銷的。在這種情況下, MySQL將會回傳一個錯誤,通知出現一個不完全撤銷。
commit指令標記了事務區塊的結束。
控制事務行為
MySQL提供了兩個變數來控制事務行為:autocommit變數和transaction isolation level變數。
自動提交,預設情況下,MySQL的sql查詢一旦執行,就會自動向資料庫提交結果。這種預設的行為可以透過特定的 autocommit變數來進行修改。設定set autocommit=0,隨後表格的更新將不會被儲存,直到明確發出commit指令。
交易隔離級,MySQL預設為repeatable read隔離級,可以使用set來修改。
交易和效能
因為支援交易的資料庫在保持不同使用者彼此隔離方面要比非交易資料庫難,所以自然的反應了系統的效能。
我們需要做一些事情來保證事務不會為系統添加不適當的負擔。
使用小事務,兩個普遍的策略:
1:保證所有要求的使用者輸入在發出start transaction指令之前都是可行的
2:試著把大的事務分成小的事務然後分別執行。
選擇合適的隔離級,隔離級越高,性能越低,所以選擇合適的孤立級,有助於性能優化
避免死鎖,在一個事務環境中,當兩個或多個處於不同序列的客戶同時想要更新相同的資料時,就會發生死鎖,我們應該避免發生死鎖。
以上是深入理解MySQL進階漂流記(五)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。