資料庫學習筆記 01 初步了解

2021-09-06 22:21:24 字數 1998 閱讀 8054

原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影響。

事務開始前和結束後,資料庫的完整性約束沒有被破壞。比如a向b轉賬,不可能a扣了錢,b卻沒收到。

隔離性是當多個使用者併發訪問資料庫時,比如操作同一張表時,資料庫為每乙個使用者開啟的事務,不能被其他事務的操作所干擾,多個併發事務之間要相互隔離。

同一時間,只允許乙個事務請求同一資料,不同的事務之間彼此沒有任何干擾。比如a正在從一張銀行卡中取錢,在a取錢的過程結束前,b不能向這張卡轉賬。

關於事務的隔離性資料庫提供了多種隔離級別

讀未提交:另乙個事務修改了資料,但尚未提交,而本事務中的 select 會讀到這些未被提交的資料髒讀

不可重複讀:事務 a 多次讀取同一資料,事務 b 在事務a多次讀取的過 程中,對資料作了更新並提交,導致事務a多次讀取同一資料時,結果 因此本事務先後兩次讀到的資料結果會不一致。 

可重複讀:在同乙個事務裡,select 的結果是事務開始時時間點的狀態,因此,同樣的 select 操作讀到的結果會是一致的。但是,會有幻讀 現象 

序列化:最高的隔離級別,在這個隔離級別下,不會產生任何異常。併發的事務,就像事務是在乙個個按照順序執行一樣

mysql預設的事務隔離級別為 repeatable-read

mysql 支援 4 中事務隔離級別.

事務的隔離級別要得到底層資料庫引擎的支援, 而不是應用程式或者框架的支援.

oracle 支援的 2 種事務隔離級別:read_commited , serializable

隔離級別越高,越能保證資料的完整性和一致性,但是對併發效能的影響也越大,魚和熊掌不可兼得啊。對於多數應用程式,可以優先考慮把資料庫系統的隔離級別設為 read committed,它能夠避免髒讀取,而且具有較好的併發效能。儘管它會導致不可重複讀、幻讀這些併發問題,在可能出現這類問題的個別場合,可以由應用程式採用悲觀鎖或樂觀鎖來控制。

永續性是指乙個事務一旦被提交了,那麼對資料庫中的資料的改變就是永久性的,即便是在資料庫系統遇到故障的情況下也不會丟失提交事務的操作。

事務a讀取了事務b更新的資料,然後b回滾操作,那麼a讀取到的資料是髒資料

不可重複讀

事務 a 多次讀取同一資料,事務b在事務a多次讀取的過程中,對資料作了更新並提交,導致事務a多次讀取同一資料時,結果因此本事務先後兩次讀到的資料結果會不一致。

幻讀解決了不重複讀,保證了同乙個事務裡,查詢的結果都是事務開始時的狀態(一致性)。

例如:事務t1對乙個表中所有的行的某個資料項做了從「1」修改為「2」的操作

這時事務t2又對這個表中插入了一行資料項,而這個資料項的數值還是為「1」並且提交給資料庫。

而操作事務t1的使用者如果再檢視剛剛修改的資料,會發現還有跟沒有修改一樣,其實這行是從事務t2中新增的,就好像產生幻覺一樣,這就是發生了幻讀。

小結:不可重複讀的和幻讀很容易混淆,不可重複讀側重於修改,幻讀側重於新增或刪除。解決不可重複讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表

第一正規化 列不可分 同一字段不能包含多種內容 如

id**

位址性別+姓名

愛好第二正規化 主鍵完全依賴 所有非主鍵字段必須依賴於主鍵

第三正規化 無傳遞依賴 如a是主鍵 b依賴a c依賴b而不依賴於a 則不符合

索引可以對資料庫表中乙個或多個列的值進行排序而提高查詢速度

索引的實現通常使用 b_tree 及其變種

無法使用索引的情況

什麼樣的字段適合建立索引?

索引的缺點

索引的分類

主鍵、自增主鍵、主鍵索引與唯一索引概念區別

主鍵就是聚集索引嗎?主鍵和索引有什麼區別?

資料庫初步學習

mysql資料庫基本操作 前段時間自學了資料庫的基本操作,寫點總結撒 一.資料庫檔案操作 1.建立資料庫檔案 create database 資料庫名稱 2.刪除資料庫檔案 drop database 資料庫名稱 3.顯示資料庫檔案 show databases 4.開啟資料庫檔案 use 資料庫名...

資料庫學習初步學習

select from web insert into web name,url,alexa,country values 13,cn insert into web name,url,alexa,country values 菜鳥教程 4689,cn insert into web name,ur...

學習筆記 MySQL資料庫初步 概念

什麼是資料庫,資料庫就是對大量資訊進行管理的高效的解決方案,按照資料結構來組織 儲存和管理資料的載體。而我們常說的資料庫可以分為關係型和非關係型資料庫。這裡說的關係型資料庫,是指基於關係型模型的資料庫。而實體集,如在乙個教學科室裡就起碼有三個實體集,教師實體集,學生實體集 就是如要創一 教學科室 資...