數據庫相關概念

數據庫事務:是指作爲單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向數據的資源。通過將一組相關操作組合爲一個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程序更加可靠。

 1).事務相關屬性:

  • 1.原子性

  • 事務必須是原子工作單元;對於其數據修改,要麼全都執行,要麼全都不執行。通常,與某個事務關聯的操作具有共同的目標,並且是相互依賴的;如果系統只執行這些操作的一個子集,則可能會破壞事務的總體目標,原子性消除了系統處理操作子集的可能性;

  • 2.一致性

事務在完成時,必須使所有的數據都保持一致狀態。在相關數據庫中,所有規則都必須應用於事務的修改,以保持所有數據的完整性。事務結束時,所有的內部數據結構(如 B 樹索引或雙向鏈表)都必須是正確的;

3:隔離性

由併發事務所作的修改必須與任何其它併發事務所作的修改隔離。事務查看數據時數據所處的狀態,要麼是另一併發事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會查看中間狀態的數據。這稱爲隔離性,因爲它能夠重新裝載起始數據,並且重播一系列事務,以使數據結束時的狀態與原始事務執行的狀態相同。當事務可序列化時將獲得最高的隔離級別。在此級別上,從一組可並行執行的事務獲得的結果與通過連續運行每個事務所獲得的結果相同。由於高度隔離會限制可並行執行的事務數,所以一些應用程序降低隔離級別以換取更大的吞吐量;

4.持久性

事務完成之後,它對於系統的影響是永久性的。該修改即使出現致命的系統故障也將一直保持;

2).事務的三種模型:

  1. 1.隱式事務是指每一條數據操作語句都自動地成爲一個事務,事務的開始是隱式的,事務的結束有明確的標記;

  2. 2.顯式事務是指有顯式的開始和結束標記的事務,每個事務都有顯式的開始和結束標記;

  3. 3.自動事務是系統自動默認的,開始和結束不用標記;

3).使用事務的語句:

  1. 開始事物:BEGIN  TRANSACTION

  2. 提交事物:COMMIT  TRANSACTION

  3. 回滾事務:ROLLBACK  TRANSACTION


  4. 索引:索引是對數據庫表中一個或多個列的值進行排序的數據結構,是用於提高在數據庫表中訪問數據的速度的數據庫對象。索引就比如書的目錄,如果沒有索引,要想在數據庫中查找某一特定的值就需要遍歷整個數據庫表,但是有了索引之後就可以在索引當中查找,有助於更快地獲取信息;

  5. 索引可分爲聚集索引和非聚集索引。

聚集索引:是按照數據存放的物理位置爲順序的;而非聚集索引中,表數據存儲順序與索引順序無關;一張表上只能創建一個聚集索引,因爲真實數據的物理順序只可能是一種;如果一張表沒有聚集索引,那麼它被稱爲“堆集”,這樣的表中的數據行沒有特定的順序,所有的新行將被添加到表的末尾位置。

  1.     一條索引記錄中包含的基本信息有:鍵值(定義索引時指定的所有字段的值)+邏輯指針(指向數據頁或另一索引頁);

  2. 根據數據庫的功能,可以在數據庫設計器中創建三種索引:

  3. 唯一索引 :是不允許其中任何兩行具有相同索引值的索引

  4. 當現有數據中存在重複的鍵值時,大多數數據庫不允許將新創建的唯一索引與表一起保存。數據庫還可能防止添加將在表中創建重複鍵值的新數據。例如,如果在employee表中職員的姓(lname)上創建了唯一索引,則任何兩個員工都不能同姓;

  5. 主鍵索引:該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對數據的快速訪問

  6. 主鍵:數據庫表經常有一列或多列組合,其值唯一標識表中的每一行

  7. 聚集索引

  8. 在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引;如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的數據訪問速度。

  9.     雖然說建立索引的目的是加快對錶中記錄的查找或排序,但是爲表設置索引要付出代價的:一是增加了數據庫的存儲空間,二是在插入和修改數據時要花費較多的時間(因爲索引也要隨之變動)。數據庫索引就是爲了提高表的搜索效率而對某些字段中的值建立的目錄 ;其各有優缺點:

  10. 優點:創建索引可以大大提高系統的性能;

  11. 通過創建唯一性索引,可以保證數據庫表中每一行數據的唯一性;

  12. 可以大大加快數據的檢索速度,這也是創建索引的最主要的原因;

  13. 可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義;

  14. 在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間;

  15. 第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。

  16. 缺點:增加索引也有許多不利的方面;

  17. 創建索引和維護索引要耗費時間,這種時間隨着數據量的增加而增加;

  18. 索引需要佔物理空間,除了數據表佔數據空間之外,每一個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大;

  19. 當對錶中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。

  20. 存儲引擎:

  21.         MySQL中的數據用各種不同的技術存儲在文件(或者內存)中,這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力,通過選擇不同的技術,能夠獲得額外的速度或者功能,從而改善應用的整體功能。這些不同的技術以及配套的相關功能在MySQL中被稱作存儲引擎(也稱作表類型);

  22.  MySQL默認配置了許多不同的存儲引擎,可以預先設置或者在MySQL服務器中啓用。可以選擇適用於服務器、數據庫和表格的存儲引擎,以便在選擇如何存儲你的信息、如何檢索這些信息以及需要數據結合什麼性能和功能的時候能提供最大的靈活性。

  23.  觸發器:是一種特殊類型的存儲過程,它在指定的表中的數據進行變化的時候自動生效;觸發器是一個特殊的事務單元,可以引用其他表中的列執行特殊的業務規則或數據邏輯關係。一旦定義,任何用戶對錶的INSERT、UPDATE 或 DELETE均由服務器自動激活相應的觸發器。觸發器可以查詢其它表。將觸發器和觸發它的語句作爲可在觸發器內回滾的單個事務對待。如果檢測到嚴重錯誤(例如,磁盤空間不足),則整個事務即自動回滾,即撤銷。

  24. 觸發器類型分爲兩種(按照所觸發動作的間隔尺寸):

  25. 行級觸發器(FOR EACH ROW):觸發動作根據某個表的行數執行相應次

  26. 語句級觸發器(FOR EACH STATEMENT):無論該表有多少行,觸發動作只發生一次

  27. 在建立觸發器時,還必須指定觸發操作:insert、update、delete操作,至少指定一種,也可指定多種;

  28. 創建觸發器:

    create trigger<觸發器名>{ before|after} <觸發事件> ON <表名>

  29. for each{row|statement}

  30. [when <觸發條件>]

  31. <觸發動作體>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章