目錄
1.索引
1.1.概念
1.2 作用
1.3 使用場景
1.4 索引的分類
1.5 使用
2.事務
2.1 事務概念
2.2 事務的四大特性
2.3 MySQL事務操作的兩種方法
1.索引
1.1.概念
索引是一種特殊的檔案,包含着對資料庫表裡所有記錄的引用指針。可以對表中的一列或多列建立索引,并指定縮印的類型,各類索引有各自的資料結構實作。通縮的說,就是一本書的目錄,有了目錄就可以快速的定位需要找到的内容。資料庫中的表、資料、索引之間的關系,類似于書架上的圖書、資料内容何書記目錄的關系。
1.2 作用
- 最主要的作用就是有了索引就會加快資料查詢速度
- 當庫中的表很大時,索引的作用就展現的非常明顯,一個字“快”
- 降低資料庫的IO成本,就是輸出和輸入的成本
- 建立唯一性索引,可以保持資料庫表中每一行資料的唯一性
- 加快表與表之間的連接配接
1.3 使用場景
要考慮對資料庫表的某列或某幾列建立索引,需要考慮以下幾點:
資料量較大,且經常對這些列進行條件查詢。
該資料庫表的插入操作,及對這些列的修改操作頻率較低。
索引會占用額外的磁盤空間。
滿足以上條件時,考慮對表中的這些字段建立索引,以提高查詢效率。
反之,如果非條件查詢列,或經常做插入、修改操作,或磁盤空間不足時,不考慮建立索引。
- 對于插入、删除資料頻率高的表,不适用索引
- 對于某列修改頻率高的,該列不适用索引
- 通過某列或某幾列的條件查詢頻率高的,可以對這些列建立索引
1.4 索引的分類
- 普通索引:這是最基本的索引類型,沒有唯一性限制
- 唯一性索引:和普通索引基本相同,唯一的差別是索引列的所有值隻能是唯一的
- 主鍵索引:是唯一索引的特定類型,它必須指定為“PRIMARY KEY”。在資料庫中為表定義主鍵将自動建立主鍵索引。
- 全文索引,索引類型為FULLTEXT,全文索引可以在CHAR、VARCHAR的列上建立
- 單列索引與多列索引:索引可以是單列上建立的索引,可以是多列上建立的索引
1.5 使用
建立主鍵限制、唯一限制、外鍵限制時,會自動建立對應列的索引。
- 檢視索引
show index from 表名;
例子:檢視學生表已有的索引
show index from student;
- 建立索引
對于非主鍵、非唯一限制、非外鍵的字段,可以建立普通索引;
create index 索引名 on 表名(字段名);
例子:建立班級表中,name的字段的索引
create index idx_classes_name on classes(name);
- 删除索引
drop index 索引名 on 表名;
例子:删除班級表中name字段的索引
drop index classes_name on classes;
2.事務
2.1 事務概念
- 事務是一種機制、一個操作序列,包含了一組資料庫操作指令,并且把所有的指令作為一個整體以起向系統送出或撤銷操作請求,通俗的來說就是這一組指令要麼都執行,要麼不執行。
- 事務是一個不可分割的工作邏輯單元,在資料庫系統上執行并發操作時,事務是最小的控制單元。
- 事務适用于使用者同時操作資料庫系統的場景,比如:銀行、保險公司、證券交易系統等,通過事務的整體性保證資料的一緻性
- 事務是保持了一組操作的平穩性和可預測性的技術。
總結一下:你執行的一系列操作,要麼完整的執行,要麼完全不執行。一般情況下,操作順利進行,最終操作成功。但是如果在這一系列過程中任何一個環節除了差錯,資料庫中的所有資訊都必須保持在你開始操作前的狀态。否則,資料庫的資訊将會一片混亂而不可預測。使用事務是為了保證資料一緻性。
2.2 事務的四大特性
- 事務的原子性:事務時一個完整的操作,各個元素是不可分的。
- 事務的一緻性:當完成時,資料必須處于一緻狀态;在事務開始之前,資料庫中儲存的資料處于一緻狀态;在正在進行的事務中,資料可能處于不一緻的狀态;當事務完成時,資料必須再次回到已知的一緻狀态
- 隔離性:對資料進行修改的所有并發事務時彼此隔離的,這表名事務必須時獨立的,它不會以任何方式依賴于或影響其他事務。
- 持久性:不管系統是否發送了故障,事務處理的結果都是永久的。一旦事務被送出,事務的效果會被永久地保留在資料庫中。
2.3 MySQL事務操作的兩種方法
第一種:使用事務處理指令控制
第二種:使用set設定事務的處理方式
事務處理指令控制:
begin :表示開始一個事務,後面會有多條資料庫操作語句執行。
commit:表示送出一個事務,對應前面的begin操作,他們之間的資料庫操作語句以起完成
rollback:表示復原一個事務,在begin和commit之間,如果某一個資料庫操作語句出現錯誤,執行rollback 復原,資料庫就會回到begin之前的狀态,也就是操作語句都沒執行。
參考部落格:參考部落格