久久综合色一综合色88欧美|久久er热在这里只有精品66|国产福利一区二区不卡|日本精品动漫二区三区

    1. <address id="l3apk"><var id="l3apk"><source id="l3apk"></source></var></address>

      數(shù)據(jù)庫(kù)常見(jiàn)面試題

      時(shí)間:2022-11-26 04:25:48 面試技巧 我要投稿

      數(shù)據(jù)庫(kù)常見(jiàn)面試題

        數(shù)據(jù)庫(kù)的求職者應(yīng)該要做好面試準(zhǔn)備,提前了解面試常見(jiàn)試題很重要。下面陽(yáng)光網(wǎng)小編已經(jīng)為你們整理了數(shù)據(jù)庫(kù)常見(jiàn)面試題,一起來(lái)看看吧。

      數(shù)據(jù)庫(kù)常見(jiàn)面試題

        數(shù)據(jù)庫(kù)常見(jiàn)面試題一

        1. 在一個(gè)查詢(xún)中,使用哪一個(gè)關(guān)鍵字能夠除去重復(fù)列值?

        答案:使用distinct關(guān)鍵字

        2. 什么是快照?它的作用是什么?

        答案:快照Snapshot是一個(gè)文件系統(tǒng)在特定時(shí)間里的鏡像,對(duì)于在線(xiàn)實(shí)時(shí)數(shù)據(jù)備份非常有用?煺諏(duì)于擁有不能停止的應(yīng)用或具有常打開(kāi)文件的文件系統(tǒng)的備份非常重要。對(duì)于只能提供一個(gè)非常短的備份時(shí)間而言,快照能保證系統(tǒng)的完整性。

        3. 解釋存儲(chǔ)過(guò)程和觸發(fā)器

        答案:

        存儲(chǔ)過(guò)程是一組Transact-SQL語(yǔ)句,在一次編譯后可以執(zhí)行多次。因?yàn)椴槐刂匦戮幾gTransact-SQL語(yǔ)句,所以執(zhí)行存儲(chǔ)過(guò)程可以提高性能。

        觸發(fā)器是一種特殊類(lèi)型的存儲(chǔ)過(guò)程,不由用戶(hù)直接調(diào)用。創(chuàng)建觸發(fā)器時(shí)會(huì)對(duì)其進(jìn)行定義,以便在對(duì)特定表或列作特定類(lèi)型的數(shù)據(jù)修改時(shí)執(zhí)行。

        4. SQL Server是否支持行級(jí)鎖,有什么好處?

        答案:支持動(dòng)態(tài)行級(jí)鎖定

        SQL Server 2000動(dòng)態(tài)地將查詢(xún)所引用的每一個(gè)表的鎖定粒度調(diào)整到合適的級(jí)別。當(dāng)查詢(xún)所引用的少數(shù)幾行分散在一個(gè)大型表中時(shí),優(yōu)化數(shù)據(jù)并行訪(fǎng)問(wèn)的最佳辦法是使用粒度鎖,如行鎖。但是,如果查詢(xún)引用的是一個(gè)表中的大多數(shù)行或所有行,優(yōu)化數(shù)據(jù)并行訪(fǎng)問(wèn)的最佳辦法可以是鎖定整個(gè)表,以盡量減少鎖定開(kāi)銷(xiāo)并盡快完成查詢(xún)。

        SQL Serve 2000通過(guò)為每個(gè)查詢(xún)中的每個(gè)表選擇適當(dāng)?shù)?鎖定級(jí)別,在總體上優(yōu)化了數(shù)據(jù)并發(fā)訪(fǎng)問(wèn)。對(duì)于一個(gè)查詢(xún),如果只引用一個(gè)大型表中的幾行,則數(shù)據(jù)庫(kù)引擎可以使用行級(jí)鎖定;如果引用一個(gè)大型表的幾頁(yè)中的多行,則使用頁(yè)級(jí)鎖定;如果引用一個(gè)小型表中的所有行,則使用表級(jí)鎖定。

        5. 數(shù)據(jù)庫(kù)日志干什么用,數(shù)據(jù)庫(kù)日志滿(mǎn)的時(shí)候再查詢(xún)數(shù)據(jù)庫(kù)時(shí)會(huì)出現(xiàn)什么情況。

        答案:每個(gè)數(shù)據(jù)庫(kù)都有事務(wù)日志,用以記錄所有事務(wù)和每個(gè)事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的修改。

        6. 存儲(chǔ)過(guò)程和函數(shù)的區(qū)別?

        答案:存儲(chǔ)過(guò)程是用戶(hù)定義的一系列SQL語(yǔ)句的集合,涉及特定表或其它對(duì)象的任務(wù),用戶(hù)可以調(diào)用存儲(chǔ)過(guò)程,而函數(shù)通常是數(shù)據(jù)庫(kù)已定義的方法,它接收參數(shù)并返回某種類(lèi)型的值并且不涉及特定用戶(hù)表

        數(shù)據(jù)庫(kù)常見(jiàn)面試題二

        1. 事務(wù)是什么?

        答案:事務(wù)是作為一個(gè)邏輯單元執(zhí)行的一系列操作,一個(gè)邏輯工作單元必須有四個(gè)屬性,稱(chēng)為 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成為一個(gè)事務(wù):

        (1) 原子性

        事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。

        (2) 一致性

        事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致?tīng)顟B(tài)。在相關(guān)數(shù)據(jù)庫(kù)中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如 B 樹(shù)索引或雙向鏈表)都必須是正確的。

        (3) 隔離性

        由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)查看中間狀態(tài)的數(shù)據(jù)。這稱(chēng)為可串行性,因?yàn)樗軌蛑匦卵b載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時(shí)的'狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。

        (4) 持久性

        事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。

        2. 游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?

        答案:游標(biāo)用于定位結(jié)果集的行,通過(guò)判斷全局變量@@FETCH_STATUS可以判斷是否到了最后,通常此變量不等于0表示出錯(cuò)或到了最后。

        3. 觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有何區(qū)別?語(yǔ)句級(jí)觸發(fā)和行級(jí)觸發(fā)有何區(qū)別?

        答案:

        事前觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之前,而事后觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之后。通常事前觸發(fā)器可以獲取事件之前和新的字段值。

        語(yǔ)句級(jí)觸發(fā)器可以在語(yǔ)句執(zhí)行前或后執(zhí)行,而行級(jí)觸發(fā)在觸發(fā)器所影響的每一行觸發(fā)一次。

        4. 解決死鎖的方法有哪些?

        答案:

        解決手段一:SQL Server自動(dòng)檢測(cè)和消除死鎖

        解決手段二:設(shè)置死鎖優(yōu)先級(jí)

        解決手段三:設(shè)置鎖定超時(shí)

        解決手段四:使用更新鎖避免死鎖

        數(shù)據(jù)庫(kù)常見(jiàn)面試題三

        1. 提高數(shù)據(jù)庫(kù)運(yùn)行效率的辦法有哪些?

        答案:在給定的系統(tǒng)硬件和系統(tǒng)軟件條件下,提高數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行效率的辦法是:

        (1) 在數(shù)據(jù)庫(kù)物理設(shè)計(jì)時(shí),降低范式,增加冗余, 少用觸發(fā)器, 多用存儲(chǔ)過(guò)程。

        (2) 當(dāng)計(jì)算非常復(fù)雜、而且記錄條數(shù)非常巨大時(shí)(例如一千萬(wàn)條),復(fù)雜計(jì)算要先在數(shù)據(jù)庫(kù)外面,以文件系統(tǒng)方式用C++語(yǔ)言計(jì)算處理完成之后,最后才入庫(kù)追加到表中去。這是電信計(jì)費(fèi)系統(tǒng)設(shè)計(jì)的經(jīng)驗(yàn)。

        (3) 發(fā)現(xiàn)某個(gè)表的記錄太多,例如超過(guò)一千萬(wàn)條,則要對(duì)該表進(jìn)行水平分割。水平分割的做法是,以該表主鍵PK的某個(gè)值為界線(xiàn),將該表的記錄水平分割為兩個(gè)表。若發(fā)現(xiàn)某個(gè)表的字段太多,例如超過(guò)八十個(gè),則垂直分割該表,將原來(lái)的一個(gè)表分解為兩個(gè)表。

        (4) 對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS進(jìn)行系統(tǒng)優(yōu)化,即優(yōu)化各種系統(tǒng)參數(shù),如緩沖區(qū)個(gè)數(shù)。

        (5) 在使用面向數(shù)據(jù)的SQL語(yǔ)言進(jìn)行程序設(shè)計(jì)時(shí),盡量采取優(yōu)化算法?傊,要提高數(shù)據(jù)庫(kù)的運(yùn)行效率,必須從數(shù)據(jù)庫(kù)系統(tǒng)級(jí)優(yōu)化、數(shù)據(jù)庫(kù)設(shè)計(jì)級(jí)優(yōu)化、程序?qū)崿F(xiàn)級(jí)優(yōu)化,這三個(gè)層次上同時(shí)下功夫。

        2. 通俗地理解三個(gè)范式

        答案:通俗地理解三個(gè)范式,對(duì)于數(shù)據(jù)庫(kù)設(shè)計(jì)大有好處。在數(shù)據(jù)庫(kù)設(shè)計(jì)中,為了更好地應(yīng)用三個(gè)范式,就必須通俗地理解三個(gè)范式(通俗地理解是夠用的.理解,并不是最科學(xué)最準(zhǔn)確的理解):

        第一范式:1NF是對(duì)屬性的原子性約束,要求屬性具有原子性,不可再分解;

        第二范式:2NF是對(duì)記錄的惟一性約束,要求記錄有惟一標(biāo)識(shí),即實(shí)體的惟 一性;

        第三范式:3NF是對(duì)字段冗余性的約束,即任何字段不能由其他字段派生出來(lái),它要求字段沒(méi)有冗余。沒(méi)有冗余的數(shù)據(jù)庫(kù)設(shè)計(jì)可以做到。但是,沒(méi)有冗余的數(shù)據(jù)庫(kù)未必是最好的數(shù)據(jù)庫(kù),有時(shí)為了提高運(yùn)行效率,就必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù)。具體做法是:在概念數(shù)據(jù)模型設(shè)計(jì)時(shí)遵守第三范式,降低范式標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計(jì)時(shí)考慮。降低范式就是增加字段,允許冗余。

        3. 簡(jiǎn)述存儲(chǔ)過(guò)程的優(yōu)缺點(diǎn)

        優(yōu)點(diǎn):

        1. 更快的執(zhí)行速度:存儲(chǔ)過(guò)程只在創(chuàng)造時(shí)進(jìn)行編譯,以后每次執(zhí)行存儲(chǔ)過(guò)程都不需再重新編譯,而一般SQL語(yǔ)句每執(zhí)行一次就編譯一次,所以使用存儲(chǔ)過(guò)程可提高數(shù)據(jù)庫(kù)執(zhí)行速度;

        2. 與事務(wù)的結(jié)合,提供更好的解決方案:當(dāng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行復(fù)雜操作時(shí)(如對(duì)多個(gè)表進(jìn)行Update、Insert、Query和Delete時(shí)),可將此復(fù)雜操作用存儲(chǔ)過(guò)程封裝起來(lái)與數(shù)據(jù)庫(kù)提供的事務(wù)處理結(jié)合一起使用;

        3. 支持代碼重用:存儲(chǔ)過(guò)程可以重復(fù)使用,可減少數(shù)據(jù)庫(kù)開(kāi)發(fā)人員的工作量;4. 安全性高:可設(shè)定只有某此用戶(hù)才具有對(duì)指定存儲(chǔ)過(guò)程的使用權(quán)。

        缺點(diǎn):

        1. 如果更改范圍大到需要對(duì)輸入存儲(chǔ)過(guò)程的參數(shù)進(jìn)行更改,或者要更改由其返回的數(shù)據(jù),則您仍需要更新程序集中的代碼以添加參數(shù)、更新 GetValue() 調(diào)用,等等,這時(shí)候估計(jì)比較繁瑣了。

        2. 可移植性差由于存儲(chǔ)過(guò)程將應(yīng)用程序綁定到 SQL Server,因此使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯將限制應(yīng)用程序的可移植性。如果應(yīng)用程序的可移植性在您的環(huán)境中非常重要,則將業(yè)務(wù)邏輯封裝在不特定于 RDBMS 的中間層中可能是一個(gè)更佳的選擇。

      【數(shù)據(jù)庫(kù)常見(jiàn)面試題】相關(guān)文章:

      數(shù)據(jù)庫(kù)常見(jiàn)面試題04-09

      數(shù)據(jù)庫(kù)面試題04-04

      女生常見(jiàn)的面試題12-09

      android常見(jiàn)面試題04-04

      2017常見(jiàn)的php面試題04-05

      酒店前臺(tái)常見(jiàn)的經(jīng)典面試題12-09

      常見(jiàn)的壓力面試題及回答12-09

      測(cè)試常見(jiàn)面試題04-08

      常見(jiàn)軟件測(cè)試面試題04-03