天天看點

【MySQL資料庫】資料庫索引事務1.索引2.事務

目錄

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成本,就是輸出和輸入的成本
  • 建立唯一性索引,可以保持資料庫表中每一行資料的唯一性
  • 加快表與表之間的連接配接
【MySQL資料庫】資料庫索引事務1.索引2.事務

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 事務概念

  1. 事務是一種機制、一個操作序列,包含了一組資料庫操作指令,并且把所有的指令作為一個整體以起向系統送出或撤銷操作請求,通俗的來說就是這一組指令要麼都執行,要麼不執行。
  2. 事務是一個不可分割的工作邏輯單元,在資料庫系統上執行并發操作時,事務是最小的控制單元。
  3. 事務适用于使用者同時操作資料庫系統的場景,比如:銀行、保險公司、證券交易系統等,通過事務的整體性保證資料的一緻性
  4. 事務是保持了一組操作的平穩性和可預測性的技術。
總結一下:你執行的一系列操作,要麼完整的執行,要麼完全不執行。一般情況下,操作順利進行,最終操作成功。但是如果在這一系列過程中任何一個環節除了差錯,資料庫中的所有資訊都必須保持在你開始操作前的狀态。否則,資料庫的資訊将會一片混亂而不可預測。使用事務是為了保證資料一緻性。

2.2 事務的四大特性

  • 事務的原子性:事務時一個完整的操作,各個元素是不可分的。
  • 事務的一緻性:當完成時,資料必須處于一緻狀态;在事務開始之前,資料庫中儲存的資料處于一緻狀态;在正在進行的事務中,資料可能處于不一緻的狀态;當事務完成時,資料必須再次回到已知的一緻狀态
  • 隔離性:對資料進行修改的所有并發事務時彼此隔離的,這表名事務必須時獨立的,它不會以任何方式依賴于或影響其他事務。
  • 持久性:不管系統是否發送了故障,事務處理的結果都是永久的。一旦事務被送出,事務的效果會被永久地保留在資料庫中。

2.3 MySQL事務操作的兩種方法

第一種:使用事務處理指令控制

第二種:使用set設定事務的處理方式

事務處理指令控制:

begin :表示開始一個事務,後面會有多條資料庫操作語句執行。

commit:表示送出一個事務,對應前面的begin操作,他們之間的資料庫操作語句以起完成

rollback:表示復原一個事務,在begin和commit之間,如果某一個資料庫操作語句出現錯誤,執行rollback 復原,資料庫就會回到begin之前的狀态,也就是操作語句都沒執行。

參考部落格:參考部落格