首頁 > 軟體

Mysql事務索引知識彙總

2022-03-16 13:00:30

一、事務

          mysql事務是用於處理操作量大、複雜性高的資料

1. 事務特性

  • 原子性:保證每個事務所有操作要麼全部完成或全部不完成,不可能停滯在中間環節;如事務在執行過程中出現錯誤,則會回滾到一致性:事務開始結束後保證資料庫的完整性沒有被破壞,資料都是按照資料庫要求的規範寫入。
  • 隔離性:資料庫允許多個事務同時對資料進行讀寫改操作,隔離性則可以防止多個事務由於交叉執行時導致資料不一致;事務中隔離分為4個級別。【出現:√ 不會出現:×】
 

髒讀

不可重複讀幻讀
讀未提交

✔️

✔️✔️
讀已提交✖️✔️✔️
可重複讀✖️✖️✔️
序列化✖️✖️✖️

永續性:事務提交後對資料庫中的修改則是永久性的。

2. 事務並行時出現的問題

  • 髒讀:一個事務在處理過程中讀取了另一個未提交的事務資料,當未提交的資料提交後,最終導致資料不一致。
  • 不可重複讀:一個事務在多次進行查詢返回資料時,另一個事務將資料修改後提交,導致前事務資料產生不同的結果。
  • 幻讀:A事務將資料修改完畢時,同一時間B事務新增一條資料,A事務提交後查詢發現還有一條資料沒有進行修改,好似產生幻覺一樣則為幻讀。

二、索引

    索引能加快資料庫的查詢速度並高效獲取指定的資料。

優勢:

  • 提高資料檢索效率,降低資料庫IO成本
  • 通過索引列可以對資料進行排序,降低CPU消耗
  • 確保資料唯一性
  • 加速表與表之間連線,實現表與表之間參照完整性

劣勢:

  • 佔據磁碟空間
  • 降低更新表的效率

1. 索引使用

        建立索引     
              普通索引:
                  create index 索引名稱 on 表名(列名)

              其他索引(舉例唯一索引unique):  
                  公式:
                      create unique index 索引名稱 on 表名(列名)
                  範例:
                      create table Demo(id int,
                                        name varchar(20),
                                        sex int,
                                        unique index Demo_id(id ASC));
            刪除索引
                刪除:
                    公式:
                        drop index 索引名 on 表名;
                    範例:
                        drop index Dmoe_id on Demo;

2. 索引型別

  • 主鍵索引(primary key):對主鍵進行索引,主鍵不允許空值。
  • 普通索引(index/key):預設型別,無限制,允許定義索引時有重複值和空值。
  • 唯一索引(unique key):專注於對唯一型別資料進行索引,允許空值。 
  • 全文索引(full key):用於數值比較、範圍過濾、關鍵字匹配的範圍性快速查詢。 
  • 聯合索引:多列值組成索引,用於多列組合查詢。

3. 索引注意原則

  • 索引不是越多越好,資料量小的表不建議新增索引
  • 不建議在經常增刪改操作的表中新增索引
  • 索引一般新增在需要索引的列上

三、SQL

             SQL是一種結構化查詢語言,用於對資料進行插入、查詢、更新、刪除操作來管理資料庫系統。

1. SQL優點

  • 簡單易學,操作性強
  • 大多數資料庫都支援SQL
  • SQL運算元據庫時大部分的工作由DBMS來完成

2. SQL分類

  • DDL[資料定義語言]:用於運算元據庫、表、列,常用語句create、alter、drop;
  • DML[資料操作語言]:用於運算元據庫中資料,常用語句insert、update、delect;
  • DCL[資料控制語言]:用於操作存取許可權和安全級別,常用語句grant、deny;
  • DQL[資料查詢語言]:用於查詢資料,常用語句select;

3. SQL語法及關鍵字                

  • insert into:資料插入操作,語法為insert into 表名(列1,列2)value(值1,值2),插入時列名和值需要一一對應。
  • select from:資料查詢操作,語法為select * from 表名;*則代表全部列名,可通過輸入列名來查詢特定資料。
  • update set:更新操作,語法為update 表名 set 條件A where 條件B,條件A為修改條件,條件B為修改操作。
  • delete from:刪除操作,語法為delect from 表名 where 條件A,條件A為刪除條件。
  • where:用於sql中條件判斷、條件過濾等操作。
  • having:類似於where,一般使用於group by之後,與where區別在於where過濾行,having過濾組。
  • like:用於模糊查詢,主要只針對於“字元型”欄位,常用"_"和"%"這兩種萬用字元,前者充當預留位置,後者代表匹配任意字元。
  • order by:用於資料排序,常用ASC升序排列和DESC降序排列。
  • group by:用於對欄位進行分組。
  • not:用於判斷表示式真假,類似於java語言中boolean。
  • and:用於在where子句後面將多個條件結合起來。
  • between:用於取兩個值之間的資料範圍。
  • lnner join:內連線,多表連線時只會顯示滿足條件的資料結果。
  • left join:左連線,多表連線時只會以左表為基準顯示左表全部資料,右表只會顯示對應資料,若無對應資料顯示null。
  • right join:右連線,與左連線相反;多表連線時只會以右表為基準顯示左表全部資料,左表只會顯示對應資料,若無對應資料顯示null。
  • in:用於巢狀語句查詢,常用語子查詢中。

四、資料庫設計

1. 資料庫三大正規化

  • 每個欄位具有原子性不可再分。
  • 建立在第一規格化的基礎上,確保資料庫表列中只儲存一種資料,不可以把多種資料儲存在一個資料庫表列中。
  • 建立在地二正規化的基礎上,資料不能存在傳遞關係,資料庫中每個欄位和主鍵都是直接關係。

2. 資料庫規範設計

  • 系統需求分析
  • 概念結構設計
  • 邏輯結構設計
  • 物理結構設計
  • 資料庫實施
  • 資料庫運維

到此這篇關於Mysql事務索引知識彙總的文章就介紹到這了,更多相關Mysql事務索引內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com