資料庫正規化 事務 鎖學習

2021-08-06 03:45:51 字數 1154 閱讀 4439

資料庫三大正規化:

1、第一正規化:保證每列的原子性,不能再拆分,比如****,能拆成使用者名稱和手機,就不要合在一起;

2、第二正規化:保證每列都和主鍵關聯;

3、第三正規化:保證每列都和主鍵直接相關,而不是間接相關,這個涉及到拆分欄位到其他表,主表只顯示其他表主鍵資訊。

--------------------------

資料庫事務:

1、原子性:要麼都執行,要麼都不執行;

2、一致性:事務開始和結束後,資料保持一致性的狀態。一致性包含強一致性、弱一致性、最終一致性;

3、隔離性:分為 讀未提交(可能出現髒讀、不可重複讀、幻讀),讀已提交(可能出現不可重複讀、幻讀),可重複讀(可能出現幻讀),序列讀。髒讀是讀到別的事務未提交的事務;不可重複讀是乙個事務內讀2次,資料不一樣,可能被另乙個事務更新了;幻讀是讀2次,返回的記錄數不一樣了,可能被新增或刪除了記錄。innodb預設是 可重複讀級別。

4、永續性:事務提交後,對資料庫造成的影響是永久的。

--------------------------

mysql中的鎖:

1)myisam支援表級鎖。

表級鎖又分為共享讀鎖和獨佔寫鎖。

1、共享讀,其他事務還可以讀;

2、獨佔寫鎖,其他事務讀也不行,整個表鎖了就為了寫。

2)innodb支援表級鎖和行級鎖。行級鎖分為共享鎖和排他鎖。

1、共享鎖允許乙個事務去讀一行,阻止其他事務獲得相同資料集的排他鎖。( select * from table_name where ......lock in share mode)。

2、排他鎖允許獲得排他鎖的事務更新資料,阻止其他事務取得相同資料集的共享讀鎖和排他寫鎖。(select * from table_name where.....for update) 。為了允許行鎖和表鎖共存,實現多粒度鎖機制;同時還有兩種內部使用的意向鎖(都是表鎖),分別為意向共享鎖和意向排他鎖。

3)對比表級鎖和行級鎖

表級鎖加鎖快、開銷小,但是鎖定粒度大,影響併發

行級鎖加鎖慢、開銷大、但是鎖定粒度小,併發高

--------------------------

jdbc的事務依賴資料庫的事務支援,通過conn.setautocommit(false),conn.settransactionisolation(...)來設定隔離級別

資料庫 正規化和事務

所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化 1nf 中表的每一行只包含乙個例項的...

資料庫事務和正規化理解

學習自用.網上大把資料,主要為了貼上自己理解.老實說標題和內容真難對的上.以後再修改下.2020年7月23日已改 事務的acid 每項事務 的全部操作,要麼做了就成功,要麼就失敗了全部回滾,而不會存在中間狀態.回滾通過undo log來實現,為什麼要有這個概念的,有什麼資料庫的原子性的反例嗎 und...

資料庫事務和鎖

事務是作為單個邏輯工作單元執行的一系列操作,乙個邏輯工作單元必須有四個屬性 原子性,一致性,隔離性和永續性 acid 屬性。事務的回滾 將顯式事務或者隱式事務回滾到事務的起始點或者是事務內的儲存點。關於鎖的引入 併發導致的幾種問題 引入鎖既可以在一段時間內禁止使用者做某些操作以免導致產生資料不一致。...