1. 程式人生 > >Java面試題大全(資料庫部分三)

Java面試題大全(資料庫部分三)

11、Oracle資料常用的備份與恢復?

Oracle的備份與恢復有三種標準的模式,大致分為兩大類,備份恢復(物理上的)以及匯入匯出(邏輯上的),而備份恢復又可以根據資料庫的工作模式分為非歸檔模式(Nonarchivelog-style)和歸檔模式(Archivelog-style),通常,我們把非歸檔模式稱為冷備份,而相應的把歸檔模式稱為熱備份。
邏輯備份方式的方法,利用Export可將資料從資料庫中提取出來,利用Import則可將提取出來的資料送回到Oracle資料庫中去。如:
匯出資料檔案: exp scott/tiger file=d:/scott.dmp
匯入資料檔案: imp scott/tiger file=:/scott.dmp

12、Oracle的資料優化(經常被問到)?

以Oracle資料庫舉例:
(a-G要求掌握,H一般為DBA操作,瞭解就可以了)
a。
建庫:以知將儲存海量資料的時候,因為Oracle是通過使用者來管理資料的,
第一步我們先建一個tableaspace(假設表空間名為TEST),
然後建立使用者TEST(一般情況下使用者名稱和表空間同名),
建立的使用者TEST使用已建立的tablespace(TEST).
這樣做是避免訪問上產生熱點。
b。
建表:建表時最好依照第三正規化去建表(請回答三個正規化),
這樣可以最大程度避免出現數據冗餘、插入、刪除和更新異常,保證資料完整性。
而且表結構合理的情況下,可以加快查詢速度。
c。
索引:在經常查詢的欄位上面建立索引,
利用index對查詢進行優化,(index可以避免對錶的一個全面掃描)
原理:當以某個欄位建立一個索引的時候,資料庫就會生成一個索引頁,
索引頁不單單儲存索引的資料,還儲存了索引在資料庫的具體的實體地址,
當我們查詢資料時,oracle會先查索引頁,這樣就能夠很快的定位查詢到要找的記錄)。
注意:
如果表的列很少,不適合建索引.
當執行過多次的insert,delete,update後,會出現索引碎片,
影響查詢速度,我們應該對索引進行重組.
D:
sql語句的優化:
多使用共享語句
儘量使你的sql語句能夠使用索引。
怎樣使sql語句能夠使用到索引呢:
當sql語句中包含not in,<>,is null,is not null,like ‘%%’的時候不會用索引。
IN: in會拆成一堆or的,可以使用表的索引。
NOT IN:強列推薦不使用,因為它不能應用表的索引。
<> 操作符(不等於): 不等於操作符是永遠不會用到索引的,因此對它的處理只會產生全表掃描。
優化方案:用其它相同功能的操作運算代替,如a<>0 改為 a>0 or a<0;a<>’’ 改為 a>’’.
IS NULL 或IS NOT NULL操作(判斷欄位是否為空):
判斷欄位是否為空一般是不會應用索引的,因為B樹索引(oracle大多是使用B樹索引)是不索引空值的。
優化方案:用其它相同功能的操作運算代替,如 a is not null 改為 a>0 或a>’’等。
is null 時,用一個預設值代替空值,例如業擴申請中狀態欄位不允許為空,預設為申請。
LIKE:LIKE操作符可以應用萬用字元查詢,裡面的萬用字元組合可能達到幾乎是任意的查詢,但是如果用得不好則會產生效能上的問題,
優化方案:如LIKE ‘%001%’ 這種查詢不會引用索引,會產生全表掃描,
而LIKE ‘001%’則會引用範圍索引。進行範圍的查詢,效能肯定大大提高。
E:
多表查詢時,一般一個大表關聯幾個小表,最好不要幾個大表相關聯,那樣也會影響到查詢速度。
F:
oralce訪問表中的資料共有三種方式,全表掃描,通過索引掃描,使用共享語句(一模一樣)。
select id,name from tb_sutdent;
Select id,name from tb_sutdent;
我們JDBC查詢中使用PreparedStatement實際上就是使用共享語句。
所以我們要多使用共享語句來加快查詢速度。
G:
經常查詢的SQL可以寫成儲存過程。
H:
當表資料達到幾十到幾百GB時,就要考慮對錶進行分割槽了,
分割槽的優點:
1.增強可用性:如果表的某個分割槽出現故障,表在其他分割槽的資料仍然可用
2.維護方便:如果表的某個分割槽出現故障,需要修復資料,只修復該分割槽即可;
3.均衡I/O:可以把不同的分割槽對映到磁碟以平衡I/O,改善整個系統性能;
4.改善查詢效能:對分割槽物件的查詢可以僅搜尋自己關心的分割槽,提高檢索速度。
分割槽的幾種方法:範圍分割槽 ,Hash分割槽(雜湊分割槽) ,複合分割槽 。
應用:實際專案中大多使用範圍分割槽,
例如按時間範圍(日期欄位)來分割槽,如2005-2006資料作為一個分割槽,2006-2007作為一個分割槽。