一、索引
(1)什麼是索引
索引是一種特殊的資料庫結構,它包含著對資料表裡所有記錄的引用指標,根據這個指標我們就可以找到這個指標所對應的記錄。可以對錶中的一列或多列建立索引,並指定索引的型別,各類索引有各自的資料結構實現。從某種程度上說,索引就相當於一本書的目錄,根據這個目錄中所寫的頁碼我們就能更快的找到我們需要的內容。除了提高檢索速度外,索引還可以強制表中的行具有唯一性,從而確保資料的完整性。
(2)索引要解決什麼問題
資料庫中的資料很多,比如說當我們在乙個表中要查詢一條記錄的時候,就必須從頭掃瞄這個表,看哪條記錄是我們想要找的,這樣查詢就很慢。那麼索引就是為了***加快查詢的效率***。
缺點:如果在乙個表中建立大量的索引,就會影響插入、刪除、更新資料的效能,增加索引調整的成本,降低系統的響應速度。
(3)索引的底層資料結構
a)為什麼不使用雜湊表:
雜湊表的查詢過程:雜湊表查詢時,是把key代入雜湊函式,通過雜湊函式計算對應的下標,再根據下標找到對應的鍊錶,再去遍歷key是否相等。
雜湊表只能處理相等的情況。
比如:select * from student where score=90.5
但是不能處理 select * from student where score>90.5 and score <95.5這樣的情況
b)為什麼不用二叉搜尋樹
二叉樹的那個節點最多有兩個分支,當有大量資料時,用二叉搜尋樹儲存時,這棵樹的高度就比較高,查詢效率也不高。
c)什麼是b樹(也稱作b-樹),它的優勢是什麼
b樹是個有序的n叉樹,它的每個節點可以儲存多個資料,因此在儲存大量資料的時候,樹的高度就大大減小了。從這棵樹的結構來看,乙個節點的出度=該節點可以儲存的資料數目+1。用專業一點的語言描述就是乙個內結點x若含有n[x]個關鍵字,那麼x將含有n[x]+1個子女。
d)什麼是b+樹,它的優勢是什麼
在b+樹裡面,非葉子節點不再儲存資料,僅僅存在索引,而葉子節點用來儲存具體的資料,並且最底層的資料之間從左到右是按照從小到大的順序分布,並且是乙個鍊錶的結構。
從這棵樹的結構來看,乙個節點能存多少資料,那麼它就有多少個子女。
索引加快了查詢效率,減慢了插入、刪除、修改效率(需要同步修改索引),也會占用格外的空間。
(4)索引的應用場景
索引適用在查詢操作頻繁,但插入、刪除、修改操作都不頻繁的場景。
(5)使用索引(舉例)
a)在建立主碼(primary key)、唯一約束(unique)、外來鍵(foreign key)時會自動建立索引;
b)檢視索引:show index from 表名;
c)建立普通索引:create index from 索引名 on (表名)列名;
d)刪除索引:drop index 索引名 on 表名
(6)索引的分類:
a)單值索引
b)唯一索引
c)主鍵索引
d)復合索引
e)覆蓋索引
f)聚集索引
g)輔助索引
(7)索引什麼時候失效
a)在where子句中進行null值判斷
b)在where子句中進行不等於!=、<>的判斷
c)在where子句中進行or值連線,因為只要有乙個屬性沒有建立索引,就會失效
d)使用模糊查詢,」%san"這樣的
e)使用函式操作
二、事務
(1)什麼是事務
將一組操作封裝起來就是事務,稱為乙個共同的執行單元。
(2)事務的基本特性
a)原子性:事務中的若干操作,要麼全部成功,要麼全部不執行(其實這裡並不是沒有執行,而是說在執行的過程當中某個步驟出錯,就把前面已經執行完畢的步驟回滾(roll back)。
b)一致性:執行事務前後,資料始終處於合法的狀態。
c)永續性:事務一旦執行完成,此時對於資料的修改就是持久生效的,修改結果寫入了磁碟中。
d)隔離性:多個事務併發執行時,事務之間不能相互干擾。
(3)事務併發操作可能會帶來的問題
a)髒讀:乙個事務讀取了另乙個事務未提交的資料。事務a在修改表中的某個資料,事務b讀取了修改後的內容,但是a並沒有提交,此時b的操作就是髒讀。
b)不可重複讀:乙個事務在執行過程中,兩次讀取到的資料不相同。事務a讀取了某個資料,事務b修改這個資料,事務a再次讀取,發現兩次讀到的結過不一樣。
c)幻讀:一次事務執行過程中,兩次讀到的結果集不一樣。事務a讀取了表中的記錄數,事務b對整個表進行操作,比如說增加了一行記錄,此時事務b再讀,發現結果集不一樣。
(4)事務的隔離級別
a)read uncommitted 讀未提交:允許讀取未提交的資料,此時會發生髒讀的問題。
b)read committed讀已提交:只允許讀取已提交的資料,(給寫加鎖,解決了髒讀的問題,但是又不可重複讀的問題)。
c)repeatable read::(mysql預設隔離級別),(給讀加鎖,解決了不可重複讀的問題,但是會有幻讀的問題。
d)serializable嚴格序列化:解決了幻讀問題。
(3)使用事務
start transaction; 開啟事務
sql語句
roll back;//commit; 事務結束,開始執行
資料庫索引事務相關
一 概念 索引是一種特殊的檔案,包含著對資料表裡所有記錄的引用指標。可以對錶中的一列或多列建立索引,並指定索引的型別,各類索引有各自的資料結構實現。二 作用 資料庫中的表 資料 索引之間的關係,類似於書架上的圖書 書籍內容和書籍目錄的關係。索引所起的作用類似書籍目錄,可用於快速定位 檢索資料。索引對...
資料庫事務和索引
事務的性質 原子性 同乙個事務中的所有操作要不然全部成功要不然全部失敗 一致性 一致性是指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。隔離性 隔離性是當多個使用者併發訪問資料庫時,比如操作同一張表時,資料庫為每乙個使用者開啟的事務,...
資料庫事務總結
資料庫併發訪問會出現以下4種問題 1 第一類丟失更新 事務b巢狀在事務a中,事務b已經更新,之後事務a更新失敗,a回滾,丟失了b的更新。支援事務的資料庫不會出現此問題 2 髒讀 讀到其他事務還未提交的資料。3 不可重複讀 在同一事務中,兩次讀取的資料不一致。被其他事務修改了 4 幻讀 兩次讀取的記錄...