Python Mysql 事務 索引

2021-09-26 15:34:14 字數 2425 閱讀 5616

事務就是使用者定義的一系列執行sql語句的操作, 這些操作要麼完全地執行,要麼完全地都不執行, 它是乙個不可分割的工作執行單元。

事務的使用場景:

在日常生活中,有時我們需要進行銀行轉賬,這個銀行轉賬操作背後就是需要執行多個sql語句,假如這些sql執行到一半突然停電了,那麼就會導致這個功能只完成了一半,這種情況是不允許出現,要想解決這個問題就需要通過事務來完成。接下來,我就以銀行轉賬為例進行講解事務四大特性

原子性:

乙個事務必須被視為乙個不可分割的最小工作單元,整個事務中的所有操作要麼全部提交成功,要麼全部失敗回滾,對於乙個事務來說,不可能只執行其中的一部分操作,這就是事務的原子性

一致性:

資料庫從乙個一致性的狀態轉換到另乙個一致性的狀態。例如:我給大哥轉賬200元,就算轉賬過程中系統崩潰,我也不會損失200元,因為事務最終沒有提交,所以事務中所做的修改也不會儲存到資料庫中。

隔離性:

通常來說,乙個事務所做的修改操作在提交事務之前,對於其他事務來說是不可見的。例如:我給大哥轉賬,大哥給大哥的大哥轉賬,這是屬於兩個事務,乙個事務的執行,不會影響到另乙個事務,強調的是資料庫中事務之間相互不可見。

永續性:

一旦事務提交,則其所做的修改會永久儲存到資料庫。

事務能夠保證資料的完整性和一致性,讓使用者的操作更加安全。

在使用事務之前,先要確保表的儲存引擎是 innodb 型別, 只有這個型別才可以使用事務,mysql資料庫中表的儲存引擎預設是 innodb 型別。

檢視mysql資料庫支援的表的儲存引擎:

show engines;
檢視資料庫預設的儲存引擎:
show variables like 'storage_engine';
修改表的引擎:
alter table 表名 engine = 引擎型別;

例:alter table students engine = 'myisam';

注意:索引在mysql中也叫做「鍵」,它是乙個特殊的檔案,它儲存著資料表裡所有記錄的位置資訊,更通俗的來說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。

當資料庫中資料量很大時,查詢資料會變得很慢,我們就可以通過索引來提高資料庫的查詢效率。

檢視表中已有索引:

show index from 表名;
建立索引:
alter table 表名 add index 索引名[可選]

(列名,..

)#給name欄位新增索引

例:alter table classes add index my_name (name)

;

刪除索引:
alter table 表名 drop index 索引名

例:alter table classes drop index my_name;

聯合索引:
alter table teacher add index (索引欄位1,索引欄位2);
聯合索引的好處:

減少磁碟空間開銷,因為每建立乙個索引,其實就是建立了乙個索引檔案,那麼會增加磁碟空間的開銷。

聯合索引最左原則:

下面的查詢使用到了聯合索引

select *

from stu where name=

'張三'

-- 這裡使用了聯合索引的name部分

select *

from stu where name=

'李四'

and age=10-

- 這裡完整的使用聯合索引,包括 name 和 age 部分

下面的查詢沒有使用到聯合索引

select *

from stu where age=10-

- 因為聯合索引裡面沒有這個組合,只有 name | name age 這兩種組合

說明:

在使用聯合索引的查詢資料時候一定要保證聯合索引的最左側字段出現在查詢條件裡面,否則聯合索引失效

mysql中索引的優點和缺點和使用原則

優點:

補充說明:

1,通過優缺點對比,不是索引越多越好,而是需要自己合理的使用。

2,對經常更新的表就避免對其進行過多索引的建立,對經常用於查詢的字段應該建立索引,

3,資料量小的表最好不要使用索引,因為由於資料較少,可能查詢全部資料花費的時間比遍歷索引的時間還要短,索引就可能不會產生優化效果。

4,在一字段上相同值比較多不要建立索引,比如在學生表的"性別"欄位上只有男,女兩個不同值。相反的,在乙個欄位上不同值較多可是建立索引。

python mysql 事務 索引

1事務的四大特性 acid 原子性 一致性 隔離性 永續性 銀行轉賬例子 原子性 每乙個事務都是乙個不可分割的最小單元 一致性 乙個事務從乙個一致性狀態轉換成另乙個一致性狀態 隔離性 乙個事務所做的修改另乙個事務是看不見的。永久性 一旦乙個事務commit提交了資料,資料將永久儲存。2.事務過程 1...

Python MySQL(索引的使用補充)

索引 作用 索引普通索引 加速查詢 主鍵索引 加速查詢 不能為空 不能重複 唯一索引 加速查詢 不能重複 聯合索引 聯合唯一索引 聯合主鍵索引 多列聯合起來作為主鍵索引 聯合唯一索引 多列聯合起來作為唯一索引 聯合普通索引 加速查詢 索引就像乙個目錄一樣,如果沒有目錄就要從頭到尾看一遍 無索引 從前...

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

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