阿里-測(cè)試開發(fā)面經(jīng)(九)
點(diǎn)擊藍(lán)字關(guān)注我們,獲取更多面經(jīng)



1、優(yōu)點(diǎn):
a)可以保證數(shù)據(jù)庫表中每一行的數(shù)據(jù)的唯一性
b)可以大大加快數(shù)據(jù)的索引速度
c)加速表與表之間的連接,特別是在實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義
d)在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),同樣可以顯著減少查詢中分組和排序的時(shí)間
f)通過使用索引,可以在時(shí)間查詢的過程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能
2、 缺點(diǎn):
a) 創(chuàng)建索引和維護(hù)索引要耗費(fèi)時(shí)間,這種時(shí)間隨著數(shù)據(jù)量的增加而增加
b) 索引需要占物理空間,除了數(shù)據(jù)表占用數(shù)據(jù)空間之外,每一個(gè)索引還要占用一定的物理空間,如果需要建立聚簇索引,那么需要占用的空間會(huì)更大
c) 以表中的數(shù)據(jù)進(jìn)行增、刪、改的時(shí)候,索引也要?jiǎng)討B(tài)的維護(hù),這就降低了整數(shù)的維護(hù)速度
d) 建立索引的原則
e) 在經(jīng)常需要搜索的列上,可以加快搜索的速度
f) 在作為主鍵的列上,強(qiáng)制該列的唯一性和組織表中數(shù)據(jù)的排列結(jié)構(gòu)
g) 在經(jīng)常用在連接的列上,這些列主要是外鍵,可以加快連接的速度
h) 在經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,其指定的范圍是連續(xù)的
i) 在經(jīng)常需要排序的列上,因為索引已經(jīng)排序,這樣井底可以利用索引的排序,加快排序井底時(shí)間
j) 在經(jīng)常使用在where子句中的列上,加快條件的判斷速度


1**信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作
2**成功,操作被成功接收并處理
3**重定向,需要進(jìn)一步的操作以完成請(qǐng)求
4**客戶端錯(cuò)誤,請(qǐng)求包含語法錯(cuò)誤或無法完成請(qǐng)求
5**服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過程中發(fā)生了錯(cuò)誤
100Continue繼續(xù)。客戶端應(yīng)繼續(xù)其請(qǐng)求
101Switching Protocols切換協(xié)議。服務(wù)器根據(jù)客戶端的請(qǐng)求切換協(xié)議。只能切換到更高級(jí)的協(xié)議,例如,切換到HTTP的新版本協(xié)議
200OK請(qǐng)求成功。一般用于GET與POST請(qǐng)求
201Created已創(chuàng)建。成功請(qǐng)求并創(chuàng)建了新的資源
202Accepted已接受。已經(jīng)接受請(qǐng)求,但未處理完成
203Non-Authoritative Information非授權(quán)信息。請(qǐng)求成功。但返回的meta信息不在原始的服務(wù)器,而是一個(gè)副本
204No Content無內(nèi)容。服務(wù)器成功處理,但未返回內(nèi)容。在未更新網(wǎng)頁的情況下,可確保瀏覽器繼續(xù)顯示當(dāng)前文檔
205Reset Content重置內(nèi)容。服務(wù)器處理成功,用戶終端(例如:瀏覽器)應(yīng)重置文檔視圖。可通過此返回碼清除瀏覽器的表單域
206Partial Content部分內(nèi)容。服務(wù)器成功處理了部分GET請(qǐng)求
300Multiple Choices多種選擇。請(qǐng)求的資源可包括多個(gè)位置,相應(yīng)可返回一個(gè)資源特征與地址的列表用于用戶終端(例如:瀏覽器)選擇
301Moved Permanently永久移動(dòng)。請(qǐng)求的資源已被永久的移動(dòng)到新URI,返回信息會(huì)包括新的URI,瀏覽器會(huì)自動(dòng)定向到新URI。今后任何新的請(qǐng)求都應(yīng)使用新的URI代替
302Found臨時(shí)移動(dòng)。與301類似。但資源只是臨時(shí)被移動(dòng)。客戶端應(yīng)繼續(xù)使用原有URI
303See Other查看其它地址。與301類似。使用GET和POST請(qǐng)求查看
304Not Modified未修改。所請(qǐng)求的資源未修改,服務(wù)器返回此狀態(tài)碼時(shí),不會(huì)返回任何資源。客戶端通常會(huì)緩存訪問過的資源,通過提供一個(gè)頭信息指出客戶端希望只返回在指定日期之后修改的資源
305Use Proxy使用代理。所請(qǐng)求的資源必須通過代理訪問
306Unused已經(jīng)被廢棄的HTTP狀態(tài)碼
307Temporary Redirect臨時(shí)重定向。與302類似。使用GET請(qǐng)求重定向
400Bad Request客戶端請(qǐng)求的語法錯(cuò)誤,服務(wù)器無法理解
401Unauthorized請(qǐng)求要求用戶的身份認(rèn)證
402Payment Required保留,將來使用
403Forbidden服務(wù)器理解請(qǐng)求客戶端的請(qǐng)求,但是拒絕執(zhí)行此請(qǐng)求
404Not Found服務(wù)器無法根據(jù)客戶端的請(qǐng)求找到資源(網(wǎng)頁)。通過此代碼,網(wǎng)站設(shè)計(jì)人員可設(shè)置"您所請(qǐng)求的資源無法找到"的個(gè)性頁面
405Method Not Allowed客戶端請(qǐng)求中的方法被禁止
406Not Acceptable服務(wù)器無法根據(jù)客戶端請(qǐng)求的內(nèi)容特性完成請(qǐng)求
407Proxy Authentication Required請(qǐng)求要求代理的身份認(rèn)證,與401類似,但請(qǐng)求者應(yīng)當(dāng)使用代理進(jìn)行授權(quán)
408Request Time-out服務(wù)器等待客戶端發(fā)送的請(qǐng)求時(shí)間過長,超時(shí)
409Conflict服務(wù)器完成客戶端的 PUT 請(qǐng)求時(shí)可能返回此代碼,服務(wù)器處理請(qǐng)求時(shí)發(fā)生了沖突
410Gone客戶端請(qǐng)求的資源已經(jīng)不存在。410不同于404,如果資源以前有現(xiàn)在被永久刪除了可使用410代碼,網(wǎng)站設(shè)計(jì)人員可通過301代碼指定資源的新位置
411Length Required服務(wù)器無法處理客戶端發(fā)送的不帶Content-Length的請(qǐng)求信息
412Precondition Failed客戶端請(qǐng)求信息的先決條件錯(cuò)誤
413Request Entity Too Large由于請(qǐng)求的實(shí)體過大,服務(wù)器無法處理,因此拒絕請(qǐng)求。為防止客戶端的連續(xù)請(qǐng)求,服務(wù)器可能會(huì)關(guān)閉連接。如果只是服務(wù)器暫時(shí)無法處理,則會(huì)包含一個(gè)Retry-After的響應(yīng)信息
414Request-URI Too Large請(qǐng)求的URI過長(URI通常為網(wǎng)址),服務(wù)器無法處理
415Unsupported Media Type服務(wù)器無法處理請(qǐng)求附帶的媒體格式
416Requested range not satisfiable客戶端請(qǐng)求的范圍無效
417Expectation Failed服務(wù)器無法滿足Expect的請(qǐng)求頭信息
500Internal Server Error服務(wù)器內(nèi)部錯(cuò)誤,無法完成請(qǐng)求
501Not Implemented服務(wù)器不支持請(qǐng)求的功能,無法完成請(qǐng)求
502Bad Gateway作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請(qǐng)求時(shí),從遠(yuǎn)程服務(wù)器接收到了一個(gè)無效的響應(yīng)
503Service Unavailable由于超載或系統(tǒng)維護(hù),服務(wù)器暫時(shí)的無法處理客戶端的請(qǐng)求。延時(shí)的長度可包含在服務(wù)器的Retry-After頭信息中
504Gateway Time-out充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,未及時(shí)從遠(yuǎn)端服務(wù)器獲取請(qǐng)求
505HTTP Version not supported服務(wù)器不支持請(qǐng)求的HTTP協(xié)議的版本,無法完成處理


1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設(shè)計(jì)的缺陷)
2、I/O吞吐量小,形成了瓶頸效應(yīng)。
3、沒有創(chuàng)建計(jì)算列導(dǎo)致查詢不優(yōu)化。
4、內(nèi)存不足
5、網(wǎng)絡(luò)速度慢
6、查詢出的數(shù)據(jù)量過大(可以采用多次查詢,其他的方法降低數(shù)據(jù)量)
7、鎖或者死鎖(這也是查詢慢最常見的問題,是程序設(shè)計(jì)的缺陷)
8、sp_lock,sp_who,活動(dòng)的用戶查看,原因是讀寫競爭資源。
9、返回了不必要的行和列
10、查詢語句不好,沒有優(yōu)化,可以通過如下方法來優(yōu)化查詢 :
1、把數(shù)據(jù)、日志、索引放到不同的I/O設(shè)備上,增加讀取速度,以前可以將Tempdb應(yīng)放在RAID0上,SQL2000不在支持。數(shù)據(jù)量(尺寸)越大,提高I/O越重要.
2、縱向、橫向分割表,減少表的尺寸(sp_spaceuse)
3、升級(jí)硬件
4、根據(jù)查詢條件,建立索引,優(yōu)化索引、優(yōu)化訪問方式,限制結(jié)果集的數(shù)據(jù)量。注意填充因子要適當(dāng)(最好是使用默認(rèn)值0)。索引應(yīng)該盡量小,使用字節(jié)數(shù)小的列建索引好(參照索引的創(chuàng)建),不要對(duì)有限的幾個(gè)值的字段建單一索引如性別字段
5、提高網(wǎng)速;
6、擴(kuò)大服務(wù)器的內(nèi)存,Windows 2000和SQL server 2000能支持4-8G的內(nèi)存。配置虛擬內(nèi)存:虛擬內(nèi)存大小應(yīng)基于計(jì)算機(jī)上并發(fā)運(yùn)行的服務(wù)進(jìn)行配置。運(yùn)行 Microsoft SQL Server? 2000 時(shí),可考慮將虛擬內(nèi)存大小設(shè)置為計(jì)算機(jī)中安裝的物理內(nèi)存的 1.5 倍。如果另外安裝了全文檢索功能,并打算運(yùn)行 Microsoft 搜索服務(wù)以便執(zhí)行全文索引和查詢,可考慮:將虛擬內(nèi)存大小配置為至少是計(jì)算機(jī)中安裝的物理內(nèi)存的 3 倍。將 SQL Server max server memory 服務(wù)器配置選項(xiàng)配置為物理內(nèi)存的 1.5 倍(虛擬內(nèi)存大小設(shè)置的一半)。
7、增加服務(wù)器CPU個(gè)數(shù);但是必須明白并行處理串行處理更需要資源例如內(nèi)存。使用并行還是串行程是MsSQL自動(dòng)評(píng)估選擇的。單個(gè)任務(wù)分解成多個(gè)任務(wù),就可以在處理器上運(yùn)行。例如耽擱查詢的排序、連接、掃描和GROUP BY字句同時(shí)執(zhí)行,SQL SERVER根據(jù)系統(tǒng)的負(fù)載情況決定最優(yōu)的并行等級(jí),復(fù)雜的需要消耗大量的CPU的查詢最適合并行處理。但是更新操作UPDATE,INSERT,DELETE還不能并行處理。
8、如果是使用like進(jìn)行查詢的話,簡單的使用index是不行的,但是全文索引,耗空間。like 'a%' 使用索引 like '%a' 不使用索引用 like '%a%' 查詢時(shí),查詢耗時(shí)和字段值總長度成正比,所以不能用CHAR類型,而是VARCHAR。對(duì)于字段的值很長的建全文索引。
9、DB Server 和APPLication Server 分離;OLTP和OLAP分離
更多面經(jīng)
掃描二維碼
獲取更多面經(jīng)
扶搖就業(yè)
