JAVA面試筆試之-關係型數據庫

1.MySQL 索引使用的注意事項
      索引是數據結構,, 索引的優勢:檢索查詢會,排序快; 劣勢:寫操作會變慢,索引佔磁盤空間
     什麼情況下適合創建索引: 頻繁查詢的字段,或者多表關聯的字段建立索引,排序分組操作的字段, 會提高查詢
     不適合建索引: 表數據少,經常增刪改的, where 條件不需要用到的字段,過濾性不好的字段, 不要建索引,

     
2.DDL、DML、DCL分別指什麼

      DDL -數據庫定義語言: 在創建表的時候用到的一些sql,比如說:CREATE、ALTER、DROP等。DDL主要是用在定義或改變表的結構,數據類型,表之間的鏈接和約束等初始化工作上。

     DML -數據操作語言: 也就是平時我們對數據進行增刪改查,主要用來對數據庫的數據進行一些操作。

     DCL-數據庫控制語言:是用來設置或更改數據庫用戶或角色權限的語句,包括(grant,deny,revoke等)語句。這個比較少用到。比如Commint , rollback ,SET TRANSACTION (設置事物) 等,較少用到

3.explain命令

    數據庫性能分析Explain命令,執行 Explain select * from emp where empno = 3333\G  語句

    這裏寫圖片描述

 對於返回的信息,我們主要關心一下幾個 
1) Type                 》 ALL全表掃描,通常是不好的,其他的如index、range、const、ref、system則是較好的 
2) Possible_keys 》可能被用到的索引 
3) Key                  》查詢過程中實際使用的索引,當爲null時表示沒有使用索引,通常是不好的 
4) key_len            》索引字段最大可能使用的長度,也叫索引基數。索引基數越大,表明可能查找的行數越多,查詢效率越慢。 
5) Rows               》 MySQL 估計的需要掃描的行數。只是一個估計。越多表明查找的行數越多,自然越慢。 
6) Extra               》顯示上述信息之外的其它信息,非常重要。其主要有一下返回結果。 

4.left join,right join,inner join
    比如A 和B兩個表  select  A表 去left join B  條件是 on A.id=B.id A全顯示 B 只顯示等於A.id 的數據,不足的會是NULL ; 
    right join 相反;
    inner join 只顯示a.id= b.id 的共有數據

    
5.數據庫事物ACID(原子性、一致性、隔離性、持久性)

6.事物的隔離級別(讀未提交、讀以提交、可重複讀、可序列化讀)

7.髒讀、幻讀、不可重複讀

8.數據庫的幾大範式

9.數據庫常見的命令

10.說說分庫與分表設計

11.分庫與分錶帶來的分佈式困境與應對之策(如何解決分佈式下的分庫分表,全局表?)

12.說說 SQL 優化之道

13.MySQL遇到的死鎖問題、如何排查與解決

14.存儲引擎的 InnoDB與MyISAM區別,優缺點,使用場景

15.MyISAM是非事務安全型的,而InnoDB是事務安全型的(支持事務處理等高級處理);
  
16.MyISM:如果執行大量的SELECT,MyISAM是更好的選擇
  
17.InnoDB:如果你的數據執行大量的INSERT或UPDATE,出於性能方面的考慮,應該使用InnoDB表
  
18.索引類別(B+樹索引、全文索引、哈希索引)、索引的原理

19.什麼是自適應哈希索引(AHI)

20.爲什麼要用 B+tree作爲MySQL索引的數據結構

21.聚集索引與非聚集索引的區別

22.遇到過索引失效的情況沒,什麼時候可能會出現,如何解決
  
23.limit 20000 加載很慢怎麼解決

24.如何選擇合適的分佈式主鍵方案

25.選擇合適的數據存儲方案

26.常見的幾種分佈式ID的設計方案

27.常見的數據庫優化方案,在你的項目中數據庫如何進行優化的
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章