mysql中的索引 事務 鎖

2021-10-21 10:20:47 字數 2848 閱讀 9579

一、索引

什麼是索引?為什麼要有索引?

索引相當於字典的音序表,如果要查某個字,如果不使用音序表,則需要從幾百頁中逐頁去查。索引在 mysql 中也叫做「鍵」,是儲存引擎用於快速找到記錄的一種資料結構。索引對於良好的效能非常關鍵,尤其是當表中的資料量越來越大時,索引對於效能的影響愈發重要。索引優化應該是對查詢效能優化最有效的手段了。善用索引能夠輕易將查詢效能提高好幾個數量級。

在建立表時建立索引,**如下所示:

create

table mytable(

id int

notnull

, username varchar(16

)not

null

,index myindex (username(16)));

在建立表之後建立索引,**如下所示:

create

index myindex on mytable(username(16)

);或者alter

table mytable add

index myindex(username)

檢視索引

show

index

from mytable

刪除索引

drop

index myindex on mytable;

或者alter

table mytable drop

index myindex;

通過 explain 分析 sql 是否使用到索引

explain

select

*from mytable where username =

'jack'

索引分類常見的索引型別有:主鍵索引、唯一索引、普通索引、全文索引、組合索引。

二、事務

在 mysql 中,事務的常規操作包括:開啟事務、提交事務與回滾事務

開啟事務的語法如下所示:

start

transaction;或者

begin

transaction

;

提交事務的語法如下所示:

commit

;

回滾事務的語法如下所示:

rollback

;

案例:

start

transaction

;-- 手動開啟事務

insert

into t_act values(3

,300);

-- 更新操作

commit

;-- 提交事務,commit 之後即改變底層資料庫資料

看到這個結果,似乎和直接執行插入一條記錄沒什麼不同。確實,在 mysql 中,預設情況下,事務是自動提交的,也就是說,只要執行一條 dml 語句就開啟了事務,並且提交了事務。

start

transaction

;-- 手動開啟事務

insert

into t_act values(4

,200);

-- 更新操作

rollback

;-- 回滾事務

從執行結果中可以看到,回滾事務會撤銷更新操作,**執行前後資料表中的資料沒有發生任何變化

事務四大特徵(acid)

事務的隔離級別有 4 個

樂觀鎖

樂觀鎖不是資料庫自帶的,需要我們自己去實現。樂觀鎖是指運算元據庫時(更新操作),想法很樂觀,認為這次的操作不會導致衝突,在運算元據時,並不進行任何其他的特殊處理(也就是不加鎖),而在進行更新後,再去判斷是否有衝突了。

悲觀鎖

mysql 中鎖的實現主要有兩種:共享鎖(s)與排它鎖(x),它們分別對應資料的讀和寫操作。共享鎖(s):也稱為讀鎖,允許事務讀取一行資料。例如事務 t 對資料物件 a 加上 s 鎖,則事務 t 可以讀 a但不能修改 a,其他事務只能再對 a 加 s 鎖,而不能加 x 鎖,直到 t 釋放 a 上的 s 鎖。這保證了其他事務可以讀a,但在 t 釋放 a 上的 s 鎖之前不能對 a 做任何修改。

排它鎖(x):也稱寫鎖,允許事務刪除或更新一行資料。例如事務 t 對資料物件 a 加上 x 鎖,事務 t 可以讀a 也可以修改 a,其他事務不能再對 a 加任何鎖,直到 t 釋放 a 上的鎖。

mysql索引,事務,鎖

索引就是用來優化查詢,加快查詢速度。索引是優化查詢的最有效手段 優勢 優化查詢加快檢索速度 根據索引分組和排序可以加快分組和排序 劣勢 索引本身也是表,在一定程度上會占用儲存空間 create table mytable id int not null,username varchar 16 not...

索引 事務 鎖

索引 一 索引的簡介 1.什麼是索引?概念 索引是用於快速找到記錄的一種資料結構,索引優化應該是對查詢效能優化最有效的手段了 索引的本質 索引是資料結構 可以簡單理解為 排好序的快速查詢資料結構 加速查詢 2.為什麼使用索引?簡單理解 優化查詢速度 索引優化應該是對查詢效能優化最有效的手段了,善用索...

mysql中的事務和鎖 MySQL中的事務和鎖

鎖 行級鎖select for update nowaitfalse,skip false 注意必須用在事物裡面 所有匹配的行將被鎖定,知道事務結束。這意味著可以通過鎖防止資料被其他事務修改。一般情況下如果其他事務鎖定了相關行,那麼本查詢將被阻塞,直到鎖被釋放。事務事務的四大特性 1.原子性 事務包...