(1)資料庫的四個特性acid
原子性(atomicity):整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
一致性(correspondence):在事務開始之前和事務結束以後,資料庫的完整性約束沒有被破壞。
隔離性(isolation):隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,執行在相同的時間內,執行 相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。
永續性(durability):在事務完成以後,該事務所對資料庫所作的更改便持久的儲存在資料庫之中,並不會被回滾。
資料庫索引
是資料庫管理系統中乙個排序的資料結構,以協助快速查詢、更新資料庫表中資料。索引的實現通常使用b樹及其變種b+樹。
優點:加快資料的檢索速度
缺點:建立和維護索引(動態更新)需要時間,資料量增加需要的時間也增加;索引也需要占用物理空間
所以不可能在每一列上都建立索引,一般需要建立索引的列:
①經常搜尋的列②主鍵列(可以使用索引強制唯一)③經常進行連線的列,主要是一些外來鍵④經常進行排序的列
⑤經常進行where的列,可以加快判斷速度
當某一列修改效能遠大於檢索效能的時候,就不能建立索引
3種索引:唯一索引、主鍵索引、聚集索引
唯一索引是不允許其中任何兩行具有相同索引值的索引。當現有資料中存在重複的鍵值時,大多數資料庫不允許將新建立的唯一索引與表一起儲存。資料庫還可能防止新增將在表中建立重複鍵值的新資料。例如,如果在employee表中職員的姓(lname)上建立了唯一索引,則任何兩個員工都不能同姓。 主鍵索引 資料庫表經常有一列或列組合,其值唯一標識表中的每一行。該列稱為表的主鍵。在資料庫關係圖中為表定義主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特定型別。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對資料的快速訪問。 聚集索引 在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。乙個表只能包含乙個聚集索引。
如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的資料訪問速度。
b-/+樹可以用來建立索引,在b-樹中,一次檢索最多需要h-1次i/o(根節點常駐記憶體),漸進複雜度o(h)=o(logdn)。一般實際應用中,出度d是非常大的數字,通常超過100,因此h非常小(通常不超過3)。
在mysql中,索引都是以b-樹的形式儲存
(3)資料庫之間怎麼同步?
可以使用觸發器
(4)怎麼保證資料庫同時操作幾個表的一致性?
一旦service層的方法開啟事務操作的時候發生異常,立刻回滾所有的操作,這樣保證資料一致
(5)關係型資料庫和非關係型資料庫的區別
資料庫型別特性
優點缺點
關係型資料庫
sqlite、oracle、mysql
1、關係型資料庫,是指採用了關係模型來組織
資料的資料庫;
2、關係型資料庫的最大特點就是事務的一致性;
3、簡單來說,關係模型指的就是二維**模型,
而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個資料組織。
1、容易理解:二維表結構是非常貼近邏輯世界乙個概念,關係模型相對網狀、層次等其他模型來說更容易理解;
2、使用方便:通用的sql語言使得操作關係型資料庫非常方便;
3、易於維護:豐富的完整性(實體完整性、參照完整性和使用者定義的完整性)大大減低了資料冗餘和資料不一致的概率;
4、支援sql,可用於複雜的查詢。
1、為了維護一致性所付出的巨大代價就是其讀寫效能比較差;
2、固定的表結構;
3、高併發讀寫需求;
4、海量資料的高效率讀寫;
非關係型資料庫
mongodb、redis、hbase
1、使用鍵值對儲存資料;
2、分布式;
3、一般不支援acid特性;
4、非關係型資料庫嚴格上不是一種資料庫,應該是一種資料結構化儲存方法的集合。
1、無需經過sql層的解析,讀寫效能很高;
2、基於鍵值對,資料沒有耦合性,容易擴充套件;
3、儲存資料的格式:nosql的儲存格式是key,value形式、文件形式、形式等等,文件形式、形式等等,而關係型資料庫則只支援基礎型別。
1、不提供sql支援,學習和使用成本較高;
2、無事務處理,附加功能bi和報表等支援也不好;
(6)sqlite資料庫
sqlite,是一款輕型的資料庫,是遵守acid的關係型資料庫管理系統,它包含在乙個相對小的c庫中。嵌入式,只需要幾百k記憶體就可以執行,並且無需進行配置。
面試經驗複習之資料庫(三)
1 資料庫第三正規化 1 第一正規化 1nf 在任何乙個關聯式資料庫中,第一正規化是對關係模式的基本要求,不滿足第一正規化的資料庫就不是關聯式資料庫。所謂第一正規化是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。2 第二正規化 ...
面試前複習SQL資料庫1
觸發器是乙個特殊的儲存過程,當對指定的表進行某種特定操作 如 insert,delete或update 時,觸發器產生作用。觸發器可以呼叫儲存過程。觸發器的限制 乙個表最多只能有三個觸發器,insert,update,delete 每個觸發器只能用於乙個表 不能對檢視 臨時表建立觸發器 trunca...
資料庫複習
這是本科資料庫課程的複習。考試內容主要是資料庫的基本概念,資料庫設計資料庫系統的優化和恢復。至於設計底層的資料庫管理系統原理,坑先挖了,日後補,是我計畫中的一門課程。目錄資料庫系統 一般由資料庫。資料庫管理系統 及其開發工具 應用系統 資料庫管理員構成。目的 儲存資訊並支援使用者檢索和更新所需的資訊...