1. 程式人生 > 資料庫 >資料庫方面面試

資料庫方面面試

1、你知道nosql嗎?你用的nosql都有哪些?

nosql:非關係型的資料庫,比如Redis,Memcache,MongoDb

2、mysql索引優化

主鍵優化、唯一索引、外來鍵優化、列索引、字首索引、全文索引、空間索引、多列索引

3、mysql的優化方案

 

4、什麼是事務?及其特性?

事務:是一系列的資料庫操作,是資料庫應用的基本邏輯單位。

特性:

(1)原子性:即不可分割性,事務要麼全部被執行,要麼就全部不被執行。

(2)一致性或可串性。事務的執行使得資料庫從一種正確狀態轉換成另一種正確狀態

(3)隔離性。在事務正確提交之前,不允許把該事務對資料的任何改變提供給任何其他事務,

(4) 永續性。事務正確提交後,其結果將永久儲存在資料庫中,即使在事務提交後有了其他故障,事務的處理結果也會得到儲存。

簡單理解:在事務裡的操作,要麼全部成功,要麼全部失敗。
 

5、mysql的讀寫分離

簡單來說,讀寫分離就是隻在主伺服器上寫,只在從伺服器上讀。基本原理是讓主資料庫處理事務性查詢,而從伺服器處理select查詢。資料庫複製被用來把事務性查詢導致的變更同步到從資料庫中。

基於中間代理層實現:代理一般位於客戶端和伺服器之間,代理伺服器接到客戶段的請求通過判斷後轉發到後端資料庫。

6、訊息佇列如何實現

非同步,解耦,削峰.

  1. 非同步. A系統需要傳送個請求給B系統處理,由於B系統需要查詢更新資料庫花費時間較長,以至於A系統要等待B系統處理完畢後再發送下個請求,造成A系統資源浪費.使用訊息佇列後,A系統生產完訊息後直接丟進訊息訊息佇列,就完成一次請求,繼續處理下個請求.
  2. 解耦. A系統傳送個數據到BCD三個系統,介面呼叫傳送,那如果E系統也要這個資料呢?那如果C系統現在不需要了呢?現在A系統又要傳送第二種資料了呢?A系統負責人瀕臨崩潰中。。。再來點更加崩潰的事兒,A系統要時時刻刻考慮BCDE四個系統如果掛了咋辦?我要不要重發?我要不要把訊息存起來?使用訊息佇列就能解決這個問題,A系統只負責生產資料,不需要考慮訊息被哪個系統來消費.
  3. 削峰. A系統呼叫B系統處理資料,每天0點到11點,A系統風平浪靜,每秒併發請求數量就100個。結果每次一到11點~1點,每秒併發請求數量突然會暴增到1萬條。但是B系統最大的處理能力就只能是每秒鐘處理1000個請求啊。。。尷尬了,系統會崩掉。。。引入訊息佇列,把請求資料先存入訊息中介軟體系統中,消費系統慢慢拉取消費.

7、查詢優化

 

8、msyql的儲存引擎,以及各自的區別

https://blog.csdn.net/Java_fenxiang/article/details/82870335

9、redis和memcache有什麼區別

https://blog.csdn.net/klfsk/article/details/100130046

10、索引有哪些,你是如何做索引的?

https://www.cnblogs.com/xiaowenboke/p/10430670.html

11、如何分表

https://blog.csdn.net/hu_feng903/article/details/84930136