(三)事務和索引

2022-06-02 22:27:11 字數 2077 閱讀 5489

transaction controller language 事務控制語言

innodb

myisam

使用預設使用

早些年使用

事務支援

支援不支援

資料行鎖定

支援不支援(表鎖定,效率低)

外來鍵約束

支援不支援

表空間的大小

較大較小

事務就是使用者定義的一系列資料庫操作,這些操作可以視為乙個邏輯處理工作單元,要麼全部執行,要麼全部不執行。

set autocommit=0;

start transaction;【可選】

.....

commit/rollback;

acid

原子性:要麼都做,要麼都不做

一致性:操作前後的狀態是一致的

永續性:

事務如果提交成功,持久化到資料庫

事務沒有提交成功,恢復到原狀

事務一旦提交就不可逆了

隔離性:多個使用者不會互相影響

髒讀:乙個事務a讀取到另乙個事務b未提交的資料,若另乙個事務b回滾,則事務a讀到髒資料

不可重複讀:沒有髒讀的情況,事務b未提交,事務a讀到資料不變。但是b提交後,事務a再次讀取,發現前後兩次提交資料不一樣。

幻讀:沒有不可重複讀,解決了更新時候的問題,但是插入或刪除沒有解決(b提交前後資料不一致)

檢視當前隔離級別

mysql> select @@tx_isolation;

+-----------------+

| @@tx_isolation |

+-----------------+

| repeatable-read |

+-----------------+

將當前會話設定成最低的隔離級別

set session transaction isolation level read uncommitted;

mysql支援4種事務隔離級別,mysql預設的事務隔離級別為repeatable read事務隔離級別

髒讀不可重複讀

幻讀read uncommitted√√

√read committed√√

reaptable read

√serializable

官網對索引的定義:index 是幫助mysql高效獲取資料的資料結構

講索引的部落格:

唯一索引(unique key)

常規索引(key/index)

全文索引(full_text)

--檢視乙個表的所有索引

show index from student

--新增乙個全文索引(注意括號裡面不能用student.`studentname`)

alter table `student` add fulltext index `fi_student_name`(`studentname`);

--全文索引

explain select * from student where match(studentname) against('小');

加100 0000資料

delimiter $$ -- 寫函式之前必須寫

索引在小資料量不明顯,在大的資料量明顯

索引不是越多越好

索引一般加在常用來查詢的字段上

mysql索引和事務 MySql索引和事務

mysqlde 索引 目的 是為了加快查詢的速度,避免順序查詢,但是拖慢了插入和刪除的速度.應用在在經常查詢,很少少出插入的場景中.結構 b 樹,n叉搜尋樹,使用鏈式的結構把每一層的節點連線在一起,葉子節點中儲存資料,非葉子節點輔助查詢.主鍵索引和其他索引的不一樣 主鍵索引葉子節點儲存一條一條的資料...

索引和事務

索引 避免進行遍歷,優化查詢速度 相當於一本書的目錄,幫助我們快速找到想要的記錄,如果沒有索引的話,此時查詢方式就是順序遍歷,資料結構中,啥樣的資料結構查詢的速度快呢?雜湊表 二叉搜尋樹 索引讓我們避免出現順序遍歷的情況,但是用雜湊作為索引,是不太可行的,像where id 10,用hash是完全可...

索引和事務

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