mysql索引,事務,鎖

2021-10-21 11:08:03 字數 2575 閱讀 2292

索引就是用來優化查詢,加快查詢速度。

索引是優化查詢的最有效手段

優勢:優化查詢加快檢索速度;根據索引分組和排序可以加快分組和排序;

劣勢:索引本身也是表,在一定程度上會占用儲存空間;

create table mytable( 

id int not null,

username varchar(16) not null,

index myindex (username(16))

);

關鍵字:index 索引;myindex 索引名字;(username(16)) 索引要加在的列

create index myindex on mytable(username(16));
show index from mytable;
drop index myindex on mytable;
-- 建立索引語法

create table mytable(

id int not null,

username varchar(16) not null,

index myindex (username(16))

);-- index 索引 myindex 索引名字 (username(16))欄位名字和長度

-- 檢視索引

show index from mytable;

-- 刪除索引

drop index myindex on mytable;

-- 新增索引2

create index myindex on mytable(username(16));

1、主鍵索引:根據主鍵建立索引,不允許重複,不允許空值;

2、唯一索引:建立索引的那一列的值必須是唯一的,允許空值;

3、普通索引:加在普通列上的索引,沒有任何限制;

1、主鍵自動建立唯一索引;

2、經常出現在where和order by後的要加索引

3、作為排序的列適合加索引

1、經常增刪改的列不要加

2、大量重複的列不要加

3、資料太少的不要加

事務是乙個不可再分的工作單位,事務保障了資料的一致性要麼都成功要麼都失敗。

開啟事務

start transaction;
提交事務

commit;
發生異常,回滾事務

rollback;
-- 事務

create table t_act(

actno int primary key,

balance int

);-- 提交事務

start transaction;-- 開啟事務

insert into t_act value(3,900);-- 新增資料

commit;-- 提交事務

select * from t_act;

-- 回滾事務

start transaction;-- 開啟事務

update t_act set balance=balance-100 where actno=3;-- 修改資料

rollback;-- 回滾事務

原子性:事務是最小的單位,不可再分;

一致性:事務要求所有的dml語句操作的時候必須保證同時成功或者同事失敗;

隔離性:同一時間,只允許乙個事務請求同一資料,不同的事務之間彼此沒有任何干擾;

永續性:是事務的保證,事務終結的標誌(記憶體的資料持久到硬碟檔案中)。

讀未提交:事務a和事務b,a讀到了b沒有提交的資料

讀已提交:a和b a提交了b才能讀取到 預設級別

不可重複讀:前後讀取不一致

可重複讀:幻讀 插入了一條資料 讀出來符合條件的的資料前後多

可序列化:串串一樣排隊

隔離級別越高,越能保證資料的完整性和一致性,但是對併發效能的影響也越大

鎖是計算機協調多個程序或執行緒併發訪問某一資源的機制

自己去實現的,認為這次操作不會導致衝突,在運算元據時,並不進行任何其他的特殊處理(也就是不加鎖),而在進行更新後,

再去判斷是否有衝突了

悲觀鎖就是在運算元據時,認為此操作會出現資料衝突,所以在進行每次 操作時都要通過獲取鎖才能進行對相同資料的操作

也稱為讀鎖,允許事務讀取一行資料

也稱寫鎖,允許事務刪除或更新一行資料

鎖的粒度就是你要鎖定的範圍是多大。使用鎖時,鎖定的東西越少,對其他競爭者影響越小,這個東西的大 小就是鎖粒度

開銷小,加鎖快,不會出現死鎖。鎖定粒度最大,適合查詢為主的,只有少量按索引條件更新 資料的操作。缺點是資源爭用概率高

開銷大,加鎖慢,會出現死鎖。鎖定粒度最小,適合大量按索引條件併發更新少量不同資料, 同時又有併發查詢的操作。

開銷介於表鎖與行鎖之間,會出現死鎖

共享鎖之間是相容的,而排它鎖與其他任意鎖都不相容。因此我們在資料庫中可以並行讀,但只 能序列寫,只有這樣才不會發生執行緒競爭

索引 事務 鎖

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

mysql中的索引 事務 鎖

一 索引 什麼是索引?為什麼要有索引?索引相當於字典的音序表,如果要查某個字,如果不使用音序表,則需要從幾百頁中逐頁去查。索引在 mysql 中也叫做 鍵 是儲存引擎用於快速找到記錄的一種資料結構。索引對於良好的效能非常關鍵,尤其是當表中的資料量越來越大時,索引對於效能的影響愈發重要。索引優化應該是...

索引 事務和鎖

一 索引 1 索引簡介 什麼是索引?一般的應用系統,讀寫比例在 10 1 左右,而且插入操作和一般的更新操作很少出現效能問題,在生產環境中,我們遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,因此對查詢語句的優化顯然是重中之重。說起加速查詢,就不得不提到索引了。為什麼要有索引?索引在 mys...