您好,登錄后才能下訂單哦!
數據庫事務:是指作為單個邏輯工作單元執行的一系列操作,要么完全地執行,要么完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向數據的資源。通過將一組相關操作組合為一個要么全部成功要么全部失敗的單元,可以簡化錯誤恢復并使應用程序更加可靠。
1).事務相關屬性:
事務在完成時,必須使所有的數據都保持一致狀態。在相關數據庫中,所有規則都必須應用于事務的修改,以保持所有數據的完整性。事務結束時,所有的內部數據結構(如 B 樹索引或雙向鏈表)都必須是正確的;
3:隔離性
由并發事務所作的修改必須與任何其它并發事務所作的修改隔離。事務查看數據時數據所處的狀態,要么是另一并發事務修改它之前的狀態,要么是另一事務修改它之后的狀態,事務不會查看中間狀態的數據。這稱為隔離性,因為它能夠重新裝載起始數據,并且重播一系列事務,以使數據結束時的狀態與原始事務執行的狀態相同。當事務可序列化時將獲得最高的隔離級別。在此級別上,從一組可并行執行的事務獲得的結果與通過連續運行每個事務所獲得的結果相同。由于高度隔離會限制可并行執行的事務數,所以一些應用程序降低隔離級別以換取更大的吞吐量;
4.持久性
事務完成之后,它對于系統的影響是永久性的。該修改即使出現致命的系統故障也將一直保持;
2).事務的三種模型:
1.隱式事務是指每一條數據操作語句都自動地成為一個事務,事務的開始是隱式的,事務的結束有明確的標記;
2.顯式事務是指有顯式的開始和結束標記的事務,每個事務都有顯式的開始和結束標記;
3.自動事務是系統自動默認的,開始和結束不用標記;
3).使用事務的語句:
開始事物:BEGIN TRANSACTION
提交事物:COMMIT TRANSACTION
回滾事務:ROLLBACK TRANSACTION
索引:索引是對數據庫表中一個或多個列的值進行排序的數據結構,是用于提高在數據庫表中訪問數據的速度的數據庫對象。索引就比如書的目錄,如果沒有索引,要想在數據庫中查找某一特定的值就需要遍歷整個數據庫表,但是有了索引之后就可以在索引當中查找,有助于更快地獲取信息;
索引可分為聚集索引和非聚集索引。
聚集索引:是按照數據存放的物理位置為順序的;而非聚集索引中,表數據存儲順序與索引順序無關;一張表上只能創建一個聚集索引,因為真實數據的物理順序只可能是一種;如果一張表沒有聚集索引,那么它被稱為“堆集”,這樣的表中的數據行沒有特定的順序,所有的新行將被添加到表的末尾位置。
一條索引記錄中包含的基本信息有:鍵值(定義索引時指定的所有字段的值)+邏輯指針(指向數據頁或另一索引頁);
根據數據庫的功能,可以在數據庫設計器中創建三種索引:
唯一索引 :是不允許其中任何兩行具有相同索引值的索引
當現有數據中存在重復的鍵值時,大多數數據庫不允許將新創建的唯一索引與表一起保存。數據庫還可能防止添加將在表中創建重復鍵值的新數據。例如,如果在employee表中職員的姓(lname)上創建了唯一索引,則任何兩個員工都不能同姓;
主鍵索引:該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對數據的快速訪問
主鍵:數據庫表經常有一列或多列組合,其值唯一標識表中的每一行
聚集索引
在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引;如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的數據訪問速度。
雖然說建立索引的目的是加快對表中記錄的查找或排序,但是為表設置索引要付出代價的:一是增加了數據庫的存儲空間,二是在插入和修改數據時要花費較多的時間(因為索引也要隨之變動)。數據庫索引就是為了提高表的搜索效率而對某些字段中的值建立的目錄 ;其各有優缺點:
優點:創建索引可以大大提高系統的性能;
通過創建唯一性索引,可以保證數據庫表中每一行數據的唯一性;
可以大大加快數據的檢索速度,這也是創建索引的最主要的原因;
可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義;
在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間;
第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。
缺點:增加索引也有許多不利的方面;
創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加;
索引需要占物理空間,除了數據表占數據空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大;
當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。
存儲引擎:
MySQL中的數據用各種不同的技術存儲在文件(或者內存)中,這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平并且最終提供廣泛的不同的功能和能力,通過選擇不同的技術,能夠獲得額外的速度或者功能,從而改善應用的整體功能。這些不同的技術以及配套的相關功能在MySQL中被稱作存儲引擎(也稱作表類型);
MySQL默認配置了許多不同的存儲引擎,可以預先設置或者在MySQL服務器中啟用。可以選擇適用于服務器、數據庫和表格的存儲引擎,以便在選擇如何存儲你的信息、如何檢索這些信息以及需要數據結合什么性能和功能的時候能提供最大的靈活性。
觸發器:是一種特殊類型的存儲過程,它在指定的表中的數據進行變化的時候自動生效;觸發器是一個特殊的事務單元,可以引用其他表中的列執行特殊的業務規則或數據邏輯關系。一旦定義,任何用戶對表的INSERT、UPDATE 或 DELETE均由服務器自動激活相應的觸發器。觸發器可以查詢其它表。將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待。如果檢測到嚴重錯誤(例如,磁盤空間不足),則整個事務即自動回滾,即撤銷。
觸發器類型分為兩種(按照所觸發動作的間隔尺寸):
行級觸發器(FOR EACH ROW):觸發動作根據某個表的行數執行相應次
語句級觸發器(FOR EACH STATEMENT):無論該表有多少行,觸發動作只發生一次
在建立觸發器時,還必須指定觸發操作:insert、update、delete操作,至少指定一種,也可指定多種;
創建觸發器:
create trigger<觸發器名>{ before|after} <觸發事件> ON <表名>
for each{row|statement}
[when <觸發條件>]
<觸發動作體>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。