索引 事務和鎖

2021-10-21 10:24:53 字數 2499 閱讀 8238

一、索引

1、索引簡介

什麼是索引?

一般的應用系統,讀寫比例在 10:1 左右,而且插入操作和一般的更新操作很少出現效能問題,在生產環境中,我們遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,因此對查詢語句的優化顯然是重中之重。

說起加速查詢,就不得不提到索引了。

為什麼要有索引?

索引在 mysql 中也叫做「鍵」,是儲存引擎用於快速找到記錄的一種資料結構。索引對於良好的效能非常關鍵,尤其是當表中的資料量越來越大時,索引對於效能的影響愈發重要。

索引相當於字典的音序表,如果要查某個字,如果不使用音序表,則需要從幾百頁中逐頁去查。

索引的優劣勢:

索引的優勢:可以快速檢索,減少 i/o 次數,加快檢索速度;根據索引分組和排序,可以加快分組和排序。

索引的劣勢:索引本身也是表,因此會占用儲存空間,一般來說,索引表占用的空間是資料表的 1.5 倍;索引表的維護和建立需要時間成本,這個成本隨著資料量增大而增大;構建索引會降低資料表的修改操作(刪除,新增,修改)的效率,因為在修改資料表的同時還需要修改索引表。

-- 在新建表的同時新增乙個索引

create

table mytable (

id int

notnull

, username varchar(16

)not

null

,index myindex (username(16)

));-- 檢視索引是否建立成功 show是檢視,mytable是表名

show

index

from mytable;

-- 刪除索引 drop index 索引名 on 表名

drop

index myindex on mytable;

-- 新增索引方式 create index 索引名 on 表名(字段)

create

index myindex on mytable(username(16)

);-- 或者

alter

table mytable

二、事務1、事務簡介

什麼是事務?

事務(transaction):乙個最小的不可再分的工作單元;通常乙個事務對應乙個完整的業務(例如銀行賬戶轉賬業務,該業務就是乙個最小的工作單元)。事務只和 dml 語句有關,或者說 dml 語句才有事務。

2、mysql 中事務的使用

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

開啟事務

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

start

transaction

; 或者 begin

transaction

;

提交事務

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

commit

;

回滾事務

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

rollback

;

測試

1、手動開啟事務,向 t_act 表中插入一行記錄,提交事務。**如下所示:

start

transaction

;-- 手動開啟事務

insert

into t_act values(3

,300);

-- 更新操作

commit

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

select

*from t_act;

執行結果如下:

2、手動開啟事務,向 t_act 表中插入一行記錄,回滾事務。**如下所示:

start

transaction

;-- 手動開啟事務

insert

into t_act values(4

,200);

-- 更新操作

rollback

;-- 回滾事務

select

*from t_act;

共享鎖與排它鎖

共享鎖(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 上的鎖。

索引 事務 鎖

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

mysql索引,事務,鎖

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

MySQL高階 索引 事務和鎖的了解

一 索引 1 什麼是索引?1 舉例來講就是 索引相當於字典的音序表,如果要查某個字,如果不使用音序表,則需要從幾百頁中逐頁去查。2 索引的優劣勢 1 索引的 優勢 可以快速檢索,減少 i o 次數,加快檢索速度 根據索引分組和排序,可以加快分組和排序。2 索引的 劣勢 索引本身也是表,因此會占用儲存...