更新時間:2022-12-30 16:59:33 來源:動力節(jié)點 瀏覽1913次
問題 1:為什么 group by 和 order by 會使查詢變慢?
答:groupby 和order by 操作通常需要創(chuàng)建一個臨時表來處理查詢的結(jié)果,所以如果查詢結(jié)果很多的話會嚴重影響性能。
問題 2:delete、truncate 和 drop 的區(qū)別?
答:Delete 命令用來刪除表的全部或者一部分數(shù)據(jù)行,執(zhí)行 delete 之后,用戶需要提交(commmit)或者回滾(rollback)ransaction 來執(zhí)行刪除或者撤銷刪除,delete 命會觸發(fā)這個表上所有的 delete 觸發(fā)器Truncate 刪除表中的所有數(shù)據(jù),這個操作不能回滾,也不會觸發(fā)這個表上的觸發(fā)器,tuncate比 delete更快,占用的空間更小。
Drop 命令從數(shù)據(jù)庫中刪除表,所有的數(shù)據(jù)行,索引和權限也會被刪除,所有的 DML觸發(fā)器也不會被觸發(fā),這個命令也不能回滾。
問題3:簡述數(shù)據(jù)庫的設計過程。
答:數(shù)據(jù)庫設計分為以下五個階段: 需求分析:主要是準確收集用戶信息需求和處理需求,并對收集的結(jié)果進行整理和分析,形成需求說
概念結(jié)構(gòu)設計:對用戶需求進行綜合、歸納、抽象,形成一個與與具體的 DBMS 無關概念模型(一般為ER模型)。
邏輯結(jié)構(gòu)設計:將概念結(jié)構(gòu)設計的概念模型轉(zhuǎn)化為某個特定的 DBMS所支持的數(shù)據(jù)模型,建立數(shù)據(jù)庫邏輯模式,并對其進行優(yōu)化,同時為各種用戶和應用設計外模式。物理結(jié)構(gòu)設計:為設計好的邏輯模型選擇物理結(jié)構(gòu),包括存儲結(jié)構(gòu)和存取方法等,建立數(shù)據(jù)庫物理模
實施和維護:實施就是使用DLL 語言建立數(shù)據(jù)庫模式,將實際數(shù)據(jù)載入數(shù)據(jù)庫,建立真正的數(shù)據(jù)庫維護階段是對運行中的數(shù)據(jù)庫進行評價、調(diào)整和修改。問題4:插入記錄時可以不指定字段名稱嗎?
答:不管使用哪種INSERT 語法,都必須給出 VALUES 的正確數(shù)目。如果不提供字段名,則必須給每個字段提供一個值,否則將產(chǎn)生一條錯誤消息。如果要在INSERT 操作中省略某些字段,這些字段需要滿足一定條件:該列定義為允許空值,或者表定義時給出默認值,如果不給出值,將使用默認值。
問題4:插入記錄時可以不指定字段名稱嗎?
答:不管使用哪種INSERT 語法,都必須給出 VALUES 的正確數(shù)目。如果不提供字段名,則必須給每個字段提供一個值,否則將產(chǎn)生一條錯誤消息。如果要在INSERT 操作中省略某些字段,這些字段需要滿足一定條件:該列定義為允許空值,或者表定義時給出默認值,如果不給出值,將使用默認值
問題5:本地索引與全局索引的差別與適用情況
答:對于本地索引,每一個表分區(qū)對應一個索引分區(qū),當表的分區(qū)發(fā)生變化時,索引的維護由數(shù)據(jù)庫自動進行。對于全局索引,可以選擇是否分區(qū),而且索引的分區(qū)可以不與表分區(qū)相對應。當對分區(qū)進行維護操作時,通常會導致全局索引的INVALDED,必須在執(zhí)行完操作后 REBUILD
問題6:事務和鎖有什么關系?
答:可以使用多種機制來確保數(shù)據(jù)的完整性,例如約束、觸發(fā)器以及本章介紹的事務和鎖等。事務和鎖的關系非常緊密。事務包含一系列的操作,這些操作要么全部成功,要么全部失敗,通過事務機制管理多個事務,保證事務的一致性,事務中使用鎖保護指定的資源,防止其他用戶修改另外一個還沒有完成的事務中的數(shù)據(jù)。
問題 7:談談你對索引的理解?
答:索引是若干數(shù)據(jù)行的關鍵字的列表,查詢數(shù)據(jù)時,通過索引中的關鍵字可以快速定位到要訪問的記錄所在的數(shù)據(jù)塊,從而大大減少讀取數(shù)據(jù)塊的 I/0 次數(shù),因此可以顯著提高性能
以上就是“數(shù)據(jù)庫工程師常見的一些參考性面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內(nèi)容,可以關注動力節(jié)點Java官網(wǎng)。