資料庫概念

2021-08-07 10:41:54 字數 1616 閱讀 7952

資料庫事務的acid屬性:

1.原子性(atomicity):指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。

2.一致性(consistency):事務必須是資料庫從乙個一致性狀態轉到另乙個一致性狀態,如a、b賬戶分別有100塊,a給b匯款50塊,一致性必須保證a賬戶剩50塊,b賬戶有150塊。

3.隔離性(isolation):乙個事務的執行不能被其他事務干擾。

4永續性(durability):事務一旦提交,資料就被永久改變。

要保證事務的acid屬性,必須使事務中的所有操作處於同乙個connection中。

資料庫的併發問題:

1.髒讀:兩個事務a和b,a讀取了被b更新但還沒提交的字段,若b回滾,則a讀取的資料是無效的。

2.不可重複讀:兩個事務a和b,a先讀取了乙個字段,然後b更新了該字段,接著a再讀該字段,值不同了。

3.幻讀:兩個事務a和b,a先讀取了乙個字段,然後b在該表中插入了幾行記錄,之後如果a再讀該字段,就會多出幾行。

注意:不可重複讀和幻讀是正常情況,需要避免的是髒讀。

資料庫的隔離級別:

1.讀未提交:允許事務讀取未被其他事務提交的變更。髒讀,不可重複讀,幻讀都可能出現。(併發性最高,資料一致性最弱)

2.讀已提交:只允許事務讀取已經被其他事務提交的變更,可避免髒讀,但不可重複讀,幻讀可能出現。(推薦使用)

3.可重複讀:確保事務可以多次從同乙個字段讀取相同的值,在此事務期間,禁止其他事務更新該欄位。可避免髒讀和不可重複讀,仍可能出現幻讀。(併發性很弱,一致性很強)

4.序列化:確保事務可以從乙個表中讀取相同的行,在此事務期間,禁止其他事務對該錶進行插入,更新和刪除操作。可避免所有併發問題。(併發性最低,資料一致性最強)

mysql支援四種隔離級別,預設是可重複讀。

在mysql中,實現了這四種隔離級別,分別有可能產生問題如下所示:

內連線:

內連線相當於普通的查詢,只是語法稍有不同;比如普通查詢select * from ta a, tb b where a.id=b.id

內連線寫成select * from ta a inner join tb b on a.id=b.id

左連線(也即左外連線):以左表的記錄為準,顯示左表的所有記錄。對於左表的每一條記錄,同時列出右表中滿足條件的記錄,如果右表中沒有滿足條件的記錄,則不顯示。舉例:

表t1:  id

name                表t2:         id

score

1          bob

1           88

2          luna

3          pig

select * from t1 left outer join t2 on t1.id=t2.id,結果得到

id     name                id

score

1          bob

1           88

2          luna

3          pig

右連線同理。

資料庫概念

函式依賴 設r u 是屬性集u上的關係模式,x,y是u的子集,r是r u 上的任意乙個關係,如果成立對屬於r的任意t,s,若t x s x 則t y s y 那麼稱 x函式決定y 或 y函式依賴於x 記作x y。稱x為決定因素。部分函式依賴,完全函式依賴 在r u 中,如果x y,且對於任意x的真子...

資料庫概念

1 資料 資料是客觀事物的反映和記錄,是用以載荷資訊的物理符號。資料不等同於數字,資料報括兩大類,及 數值型資料 和非數值型資料。2 資訊 資訊是指有意義的資料,即在資料上定義的有意義的描述。3 資料處理 4 資料庫 資料庫是資料庫系統的核心,是被管理的物件。5 資料庫管理系統 資料庫管理系統負責對...

資料庫概念

資料庫是乙個以某種有組織的方式儲存的資料集合。最簡單的辦法是將資料庫想象為乙個檔案櫃。這個檔案櫃是乙個存放資料的物理位置,不管資料是什麼,也不管資料是如何組織的。什麼是表?表是一種結構化的檔案,可用來儲存某種特定型別的資料。表可以儲存顧客清單 產品目錄,或者其他資訊清單。儲存在表中的資料是同一種型別...