MySQL索引事務
1. 索引
索引是一種特殊的檔案,包含著對資料表裡所有記錄的引用指標。
它的作用類似於書籍目錄,可用於快速定位、檢索資料。所以它可以極大的提高資料庫的效能。
要考慮對資料庫表的某列或某幾列建立索引,需要考慮以下幾點:
- 資料量較大,且經常對這些列進行條件查詢。
- 該資料庫表的插入操作,及這些列的修改操作頻率比較低。
- 索引會佔用額外的磁碟空間。
1.1 使用
在建立主鍵約束(PRIMARY KEY)、唯一約束(UNIQUE)、外來鍵約束(FOREIGN KEY)時,會自動建立對應列的索引。
- 檢視索引
show index from 表名;
例如:檢視學生表已有的索引
show index from student;
- 建立索引
對於非主鍵、非唯一約束、非外來鍵的欄位,可以建立普通索引。
create index 索引名 on 表名(欄位名);
例如:建立班級表中,name欄位的索引。
create index idx_classes_name on classes(name);
- 刪除索引
drop index 索引名 on 表名;
例如:刪除班級表中name欄位的索引。
drop index idx_classes_name on classes;
索引儲存的資料結構主要為B+樹,及hash的方式。
2. 事務
什麼是事務?事務是邏輯上的一組操作,例如銀行轉賬操作,這組操作包括 從你的賬戶扣除轉賬金額和從對方的賬戶存入轉賬金額,要麼全部執行成功,要麼全部執行失敗。
事務的使用
(1)開啟事務:start transaction;
(2)執行多條SQL語句
(3)回滾或提交:rollback/commit;
rollback即是全部失敗,commit即是全部成功。
測試案例:
建立測試表:
drop table if exists accout;
create table accout(
id int primary key auto_increment,
name varchar(20) comment '賬戶名稱',
money decimal(11,2) comment '金額'
);
insert into accout(name, money) values
('張三', 5000),
('李四', 1000);
start transaction;
-- 張三賬戶減少2000
update accout set money=money-2000 where name = '張三';
-- 李四賬戶增加2000
update accout set money=money+2000 where name = '李四';
commit;
假如我們在轉賬時當系統從張三這邊已經扣除了2000元,但是在執行李四賬戶增加2000元時由於網路波動或者其他一些原因導致這一語句執行失敗,導致張三這邊已經扣除了2000,但是李四這邊卻沒有收到轉賬金額,那麼這2000元就被系統黑吃了。
事務就是為了解決這一問題,當我們開啟事務直到事務結束,中間所執行的多條SQL語句,假如有一條語句執行失敗,那麼從事務開始到失敗之前的語句全部失效,然後我們重新提交,直到這些SQL語句全部執行成功,然後事務結束,資料庫將資料存入,那麼就可以避免這一類似的問題出現。
相關文章
- Mysql基礎 --- 索引+事務MySql索引
- MySQL 的索引和事務MySql索引
- MySQL索引、事務與儲存引擎MySql索引儲存引擎
- MySQL 核心三劍客 —— 索引、鎖、事務MySql索引
- mysql 拾遺提高(函式、事務、索引)MySql函式索引
- MySql 三大知識點——索引、鎖、事務!MySql索引
- MySql索引那些事MySql索引
- MySQL 事務、日誌、鎖、索引學習總結,MySql索引
- MySql 三大知識點,索引、鎖、事務,原理分析MySql索引
- Mysql索引以及使用索引注意事項MySql索引
- mysql 事務MySql
- mysql事務MySql
- 解讀mysql的索引和事務的正確姿勢MySql索引
- MySQL事務(一)認識事務MySql
- MySQL--事務MySql
- MySQL-事務MySql
- MySQL--->事務MySql
- MySQL 三 事務MySql
- MySQL 事務操作MySql
- MySQL索引、事務以及儲存引擎的相關知識和命令MySql索引儲存引擎
- MySQL 資料庫-索引注意事項MySql資料庫索引
- mysql索引使用技巧及注意事項MySql索引
- MySQL事務處理MySql
- 細談Mysql事務MySql
- MySQL事務隔離MySql
- MySQL 事務和鎖MySql
- MySQL事務與鎖MySql
- MySQL 事務隔離MySql
- MySQL事務和鎖MySql
- mysql基礎_事務MySql
- MySql中的事務MySql
- MySQL 事務機制MySql
- MySQL 事務日誌MySql
- 資料庫事務與 MySQL 事務總結資料庫MySql
- mysql總結:索引,儲存引擎,大批量資料插入,事務,鎖MySql索引儲存引擎
- 深入淺出Mysql索引的那些事兒MySql索引
- MySQL索引那些事:什麼是索引?為什麼加索引就查得快了?MySql索引
- MySQL-14.MySQL事務日誌MySql