1. 快取與資料庫一致性問題,對著個問題深有體會, 這是之前美團面試官的問題, 當時的回答並沒有答得多麼好, 只說到了先刪快取再修改資料庫, 以及執行緒加鎖, 之後寫了一篇部落格深入學習了下, 分很多種情況, 在先運算元據庫還是先操作快取的問題上通用的是先淘汰快取再寫資料庫, 快取與資料庫的操作的架構上的優化主流方案是, 增加乙個服務層來向上層遮蔽資料訪問與修改的細節., 非主流的是所有寫操作走資料庫, 所有讀操作走快取
2. 併發問題,通用的做法是加鎖, 比如悲觀鎖, 用資料庫自帶的機制實現, 在併發量大的情況下很適合, 但是併發量小的情況下用樂觀鎖實現較為合適, 雖然加鎖能解決問題, 但是必然會造成執行緒等待, 特別是分布式的資料庫中, 加鎖會造成資源浪費情況, 所以可以考慮使用某種策略, 比如與某個表相關的資料訪問與修改只和乙個執行緒相關, 來避免或者減少併發, 結合樂觀鎖與悲觀鎖來處理這類問題
3. 索引問題,合理利用索引可以大大加快查詢效率, 索引是b+樹實現的, 查詢效率非常高, 根據索引實現的機制, 在分組和排序上利用b+樹的性質可以顯著減少分組和排序的, 但是隨著資料量的增大, 索引的維護將耗費更多時間, 需要合理使用
4. 資料冗餘問題,課程學習中的重點內容, 三正規化相關, 實際中感覺麻煩的一點是當解決了傳遞依賴,到達3nf時, 查詢資料得先查完這張表得到某個值再用這個值到另一張表去查詢資料, 如果表非常大, 這樣做顯然是不划算的, 而如果我們考慮使用冗餘在某些情況可以大大提高效率, 故而3nf不應該成為設計資料表的目標而應只是乙個參考
5. 事務相關,事物的四個特性, 原子性,一致性, 隔離性, 永續性, 常常幾條語句組成乙個事務, 比如前面說到的快取與資料庫一致性問題, 可以將淘汰快取和改資料庫兩個操作當做乙個事務, 避免乙個成功乙個未成功帶來資料不一致的情況, 事務也常常與併發聯絡在一起, 比如髒讀的發生就是乙個事務讀取了另乙個事務正在修改但還未提交的資料, 這種可以利用鎖解決, 考慮使用悲觀鎖或樂觀鎖
2 資料庫的幾個重要的概念
資料庫管理系統 操縱和管理資料庫的大型軟體,簡歷 使用和維護資料庫。解釋 比如window上裝的資料庫管理系統mysql,裝完後它會有乙個快捷的方式,命令列的終端,輸入密碼後登陸到資料庫管理系統中是乙個資料庫管理系統中,如下圖,進入mysql,工作中我們所說的登入到資料庫其實就是登陸到資料庫管理系統...
資料庫的4個概念
1.資料 定義 描述事物的符號 可以是數字 文字 圖形等 特點 資料與其語義分不開。2.資料庫 定義 長期儲存在計算機內 有組織的 可共享的大量資料的集合。特點 永久儲存 有組織的 可共享。3.資料庫管理系統 定義 是一種計算機的基礎軟體。功能 資料定義功能 ddl,data definition ...
資料庫的概念
1 觸發器的作用?答 觸發器是一種特殊的儲存過程,它主要是通過事件來觸發而被執行的。它的作用是可以強化約束,維護資料的完整性和一致性,也可以可以跟蹤資料庫內的操作從而不允許未經許可的更新和變化。也可以聯級運算。如某錶上的觸發器上包含對另乙個表的資料操作,而該操作又會導致該錶觸發器被觸發。2 什麼是儲...