數(shù)據(jù)庫(kù)程序員面試分模擬題2_第1頁(yè)
數(shù)據(jù)庫(kù)程序員面試分模擬題2_第2頁(yè)
數(shù)據(jù)庫(kù)程序員面試分模擬題2_第3頁(yè)
數(shù)據(jù)庫(kù)程序員面試分模擬題2_第4頁(yè)
數(shù)據(jù)庫(kù)程序員面試分模擬題2_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)庫(kù)程序員面試分模擬題2簡(jiǎn)答題1.

在Undo表空間數(shù)據(jù)文件丟失的情況下如何恢復(fù)?正確答案:恢復(fù)大約可以分為3種情況:①有備份,這種情況下直接采用備份的文件進(jìn)行恢復(fù)即可;②無(wú)備份但是有完整的歸檔(江南博哥)文件存在,這種情況下可以使用命令“ALTERDATABASECREATEDATAFILE文件號(hào)AS'/u01/app/oracle/oradata/lhrdb/undotbs01.dbf'size50m;”來(lái)創(chuàng)建丟失的Undo文件,然后使用“RECOVERDATAFILE文件號(hào);”進(jìn)行數(shù)據(jù)庫(kù)文件恢復(fù)即可;③無(wú)備份,歸檔文件丟失,在這種情況下的恢復(fù)比較復(fù)雜。首先應(yīng)該切換Undo表空間到一個(gè)新建的Undo表空間中,并設(shè)置原有表空間的管理模式為手動(dòng)管理模式,然后將隱含參數(shù)“_OFFLINE_ROLLBACK_SEGMENTS”設(shè)置為TRUE,一些關(guān)鍵性的命令如下:

ALTERSYSTEMSETUNDO_TABLESPACE=UNDOTBS2SCOPE=SPFILE;

ALTERSYSTEMSETUNDO_MANAGEMENT=MANUALSCOPE=SPFILE;

ALTERSYSTEMSET"_OFFLINE_ROLLBACK_SEGMENTS"=TRUESCOPD=SPFILE;

ALTERSYSTEMSET"_CORRUPTED_ROLLBACK_SEGMENTS"='_SYSSMU1$','_SYSSMU2$'SCOPE=SPFILE;

CREATEUNDOTABLESPACEUNDOTBS1DATAFILE'/u03/app/oracte/oradata/ora1024g/undotbs01.dbf'SIZE50MAUTOEXTENDON;

ALTERSYSTEMSETUNDO_TABLESPACE=UNDOTES1

SCOPE=SPFILE;

ALTERSYSTEMSETUNDO_MANAGEMENT=AUTO

SCOPE=SPFILE;

ALTERSYSTEMRESET"_OFFLINE_ROLLBACK_SEGMENTS"SCOPE=SPFILESID='*';

ALTERSYSTEMRESET"_CORRUPTED_ROLLBACK_SEGMENTS"SCOPE=SPFILESID='*';[考點(diǎn)]RMAN

2.

什么是間隙(Next-Key)鎖?正確答案:當(dāng)使用范圍條件而不是相等條件檢索數(shù)據(jù)的時(shí)候,并請(qǐng)求共享或排它鎖時(shí),InnoDB會(huì)給符合條件的已有數(shù)據(jù)記錄的索引項(xiàng)加鎖;對(duì)于鍵值在條件范圍內(nèi)但并不存在的記錄,叫作“間隙(GAP)”,InnoDB也會(huì)對(duì)這個(gè)“間隙”加鎖,這種鎖機(jī)制就是所謂的間隙(Next-Key)鎖。間隙鎖是InnoDB中行鎖的一種,但是這種鎖鎖住的不止一行數(shù)據(jù),它鎖住的是多行,是一個(gè)數(shù)據(jù)范圍。間隙鎖的主要作用是為了防止出現(xiàn)幻讀(PhantomRead),用在Repeated-Read(簡(jiǎn)稱RR)隔離級(jí)別下。在Read-commited(簡(jiǎn)稱RC)下,一般沒(méi)有間隙鎖(有外鍵情況下例外,此處不考慮)。間隙鎖還用于恢復(fù)和復(fù)制。

間隙鎖的出現(xiàn)主要集中在同一個(gè)事務(wù)中先DELETE后INSERT的情況,當(dāng)通過(guò)一個(gè)條件刪除一條記錄的時(shí)候,如果條件在數(shù)據(jù)庫(kù)中已經(jīng)存在,那么這個(gè)時(shí)候產(chǎn)生的是普通行鎖,鎖住這個(gè)記錄,然后刪除,最后釋放鎖。如果這條記錄不存在,那么問(wèn)題就來(lái)了,數(shù)據(jù)庫(kù)會(huì)掃描索引,發(fā)現(xiàn)這個(gè)記錄不存在,這個(gè)時(shí)候的DELETE語(yǔ)句獲取到的就是一個(gè)間隙鎖,然后數(shù)據(jù)庫(kù)會(huì)向左掃描,掃到第一個(gè)比給定參數(shù)小的值,向右掃描,掃描到第一個(gè)比給定參數(shù)大的值,然后以此為界,構(gòu)建一個(gè)區(qū)間,鎖住整個(gè)區(qū)間內(nèi)的數(shù)據(jù),一個(gè)特別容易出現(xiàn)死鎖的間隙鎖就誕生了。

在MySQL的InnoDB存儲(chǔ)引擎中,如果更新操作是針對(duì)一個(gè)區(qū)間的,那么它會(huì)鎖住這個(gè)區(qū)間內(nèi)所有的記錄,例如,UPDATEXXXXWHEREIDBETWEENAANDB,那么它會(huì)鎖住A到B之間所有記錄,注意是所有記錄,甚至這個(gè)記錄并不存在也會(huì)被鎖住,這個(gè)時(shí)候,如果另外一個(gè)連接需要插入一條記錄到A與B之間,那么它就必須等到上一個(gè)事務(wù)結(jié)束。典型的例子就是使用AUTO_INCREMENTID,由于這個(gè)ID是一直往上分配的,因此,當(dāng)兩個(gè)事務(wù)都INSERT時(shí),會(huì)得到兩個(gè)不同的ID,但是這兩條記錄還沒(méi)有被提交,因此,也就不存在,如果這個(gè)時(shí)候有一個(gè)事務(wù)進(jìn)行范圍操作,而且恰好要鎖住不存在的ID,就是觸發(fā)間隙鎖問(wèn)題。所以,MySQL中盡量不要使用區(qū)間更新。InnoDB除了通過(guò)范圍條件加鎖時(shí)使用間隙鎖外,如果使用相等條件請(qǐng)求給一個(gè)不存在的記錄加鎖,那么InnoDB也會(huì)使用間隙鎖!

間隙鎖也存在副作用,它會(huì)把鎖定范圍擴(kuò)大,有時(shí)候也會(huì)帶來(lái)麻煩。如果要關(guān)閉,那么一是將會(huì)話隔離級(jí)別改到RC下,或者開(kāi)啟innodb_locks_unsafe_for_binlog(默認(rèn)是OFF)。間隙鎖只會(huì)出現(xiàn)在輔助索引上,唯一索引和主鍵索引是沒(méi)有間隙鎖。間隙鎖(無(wú)論是S還是X)只會(huì)阻塞INSERT操作。

在MySQL數(shù)據(jù)庫(kù)參數(shù)中,控制間隙鎖的參數(shù)是innodb_locks_unsafe_for_binlog,這個(gè)參數(shù)的默認(rèn)值是OFF,也就是啟用間隙鎖,它是一個(gè)布爾值,當(dāng)值為TRUE時(shí),表示DISABLE間隙鎖。[考點(diǎn)]鎖

3.

如何在執(zhí)行恢復(fù)的時(shí)候?qū)?shù)據(jù)文件恢復(fù)到別的路徑?正確答案:主要采用命令“setnewnamefordatafile”和“switchdatafileall;”。[考點(diǎn)]RMAN

4.

如何插入單引號(hào)到數(shù)據(jù)庫(kù)表中?正確答案:可以用ASCII碼處理,其他特殊字符如&也一樣,如下:

INSERTINTOTVALUES('I'||CHR(39)||'m');

--CHR(39)代表字符'

或者用兩個(gè)單引號(hào)表示一個(gè):

INSERTINTOTVALUES('I"m');

--兩個(gè)"可以表示一個(gè)'

5.

密碼延遲驗(yàn)證是什么?如何屏蔽?正確答案:從Oracle11g開(kāi)始,如果一個(gè)用戶使用不正確的密碼嘗試登錄數(shù)據(jù)庫(kù),那么隨著登錄失敗次數(shù)的增加,每次登錄驗(yàn)證前延遲等待的時(shí)間也會(huì)增加。

通過(guò)設(shè)置EVENTS28401可以屏蔽密碼延遲驗(yàn)證:

ALTERSYSTEMSETEVENT='28401TRACENAMECONTEXTFOREVER,LEVEL1'SCOPE=SPFILE;

設(shè)置該事件后重啟數(shù)據(jù)庫(kù)即可。關(guān)于28401事件的解釋如下:

[oracle@orclalhr~]$oerrora284D1

28401,00000,"Eventtodisabledelayafterthreefailedloginattempts"

//*Document:NO

//*Cause:N/A

//*Action:Setthiseventinyourenvironmenttodisablethelogindelay

//

whichwillotherwisetakeplaceafierthreefailedloginattempts.

//*Note:THISISNOTAUSERERRORNUMBER/MESSAGE.THISDOESNOTNEEDTOBE

//

TRANSLATEDORDOCUMENTED.

對(duì)于正常的系統(tǒng),由于密碼的更改,可能存在某些被遺漏的客戶端,不斷重復(fù)嘗試使用錯(cuò)誤密碼登錄數(shù)據(jù)庫(kù),從而引起數(shù)據(jù)庫(kù)內(nèi)部長(zhǎng)時(shí)間的“l(fā)ibrarycachelock”或“rowcachelock”的等待,這種情形非常常見(jiàn)。這種現(xiàn)象在Oracle10.2和11.1中體現(xiàn)的等待事件為“rowcachelock”,而在Oracle11.2中體現(xiàn)的等待事件為“l(fā)ibrarycachelock”。

當(dāng)出現(xiàn)這類問(wèn)題時(shí),非常典型的AWR報(bào)告呈現(xiàn)如下。首先在TOP5中,可能會(huì)看到顯著的librarycachelock的等待,以下范例來(lái)自O(shè)racle版本的真實(shí)情況:

若數(shù)據(jù)庫(kù)版本小于11.2,則在AWR中可能的情況如下:

在這類情況下,時(shí)間模型(TimeModelStatistics)中會(huì)顯示如下指標(biāo),其中,“connectionmanagementcallelapsedtime”占據(jù)了主要的DBTime,這個(gè)等待直接表明是在建立數(shù)據(jù)庫(kù)連接時(shí)產(chǎn)生的:

此外,在AWR中的DictionaryCacheStats部分也可以看到很明顯的等待。

此問(wèn)題在MOS上相應(yīng)的文檔為“High'librarycachelock'WaitTimeDuetoInvalidLoginARempts(1309738.1)”。此外,從Oracle11g開(kāi)始,開(kāi)啟了密碼大小寫驗(yàn)證,如果數(shù)據(jù)庫(kù)是從Oracle10g升級(jí)或遷移過(guò)來(lái)的,那么需要特別地注意這個(gè)變化,可以通過(guò)初始化參數(shù)SEC_CASE_SENSITIVE_LOGON來(lái)控制這個(gè)特性。[考點(diǎn)]用戶

6.

什么是SQL語(yǔ)言?SQL有哪些特點(diǎn)?正確答案:SQL(StructureQueryLanguage,結(jié)構(gòu)化查詢語(yǔ)言)是一種在關(guān)系型數(shù)據(jù)庫(kù)中定義和操縱數(shù)據(jù)的標(biāo)準(zhǔn)語(yǔ)言。關(guān)系型數(shù)據(jù)庫(kù)采用SQL作為客戶端程序與數(shù)據(jù)庫(kù)服務(wù)器間溝通的標(biāo)準(zhǔn)接口??蛻舳税l(fā)送SQL指令到服務(wù)器端,服務(wù)器端執(zhí)行相關(guān)的指令并返回其查詢的結(jié)果。在數(shù)據(jù)庫(kù)服務(wù)器端執(zhí)行的SQL指令可以實(shí)現(xiàn)各種數(shù)據(jù)庫(kù)操作和管理功能,例如,數(shù)據(jù)的查詢和更新(包括添加、修改和刪除數(shù)據(jù))操作;創(chuàng)建、修改和刪除各種數(shù)據(jù)庫(kù)對(duì)象(如數(shù)據(jù)表、視圖、索引等);數(shù)據(jù)庫(kù)用戶賬戶管理、權(quán)限管理等。

關(guān)系數(shù)據(jù)語(yǔ)言的共同特點(diǎn):語(yǔ)言具有完備的表達(dá)能力,是非過(guò)程化的集合操作語(yǔ)言,功能強(qiáng),能夠嵌入高級(jí)語(yǔ)言中使用。[考點(diǎn)]SQL分類

7.

Linux下如何查看系統(tǒng)啟動(dòng)時(shí)間和運(yùn)行時(shí)間?正確答案:可以用uptime和查看/proc/uptime文件。

1)uptime命令

輸出:16:11:40up59days,4:21,2users,loadaverage:0.00,0.01,0.00

2)查看/proc/uptime文件計(jì)算系統(tǒng)啟動(dòng)時(shí)間

cat/proc/uptime

輸出:5113396.94575949.85

第一數(shù)字即是系統(tǒng)己運(yùn)行的時(shí)間5113396.94秒,運(yùn)用系統(tǒng)工具date即可算出系統(tǒng)啟動(dòng)時(shí)間。

date-d"$(awk-F'{print$1}'/proc/uptime)secondago"+"%Y-%m-%d%H:%M:%S"

輸出:2008-11-0911:50:31

3)查看/proc/uptime文件計(jì)算系統(tǒng)運(yùn)行時(shí)間

more/proc/uptime|awk-F.'{run_days=$1/86400;run_hour=($1%86400)/3600;run_minute=($1%3600)/60;run_second=$1%60;printf("系統(tǒng)已運(yùn)行:%d天%d時(shí)%d分%d秒\n",run_days,run_hour,run_minute,run_second)}'

輸出:系統(tǒng)已運(yùn)行:59天4時(shí)13分9秒

此外,還可以使用如下命令查詢:

who-b查看最后一次系統(tǒng)啟動(dòng)的時(shí)間

who-r查看當(dāng)前系統(tǒng)運(yùn)行時(shí)間

lastreboot可以看到Linux系統(tǒng)歷史啟動(dòng)的時(shí)間

top命令的up后表示系統(tǒng)到目前運(yùn)行了多久時(shí)間

w命令的up后表示系統(tǒng)到目前運(yùn)行了多久時(shí)間

8.

MySQL中的索引有什么優(yōu)點(diǎn)?正確答案:索引(Index)是數(shù)據(jù)庫(kù)優(yōu)化中最常用也是最重要的手段之一,通過(guò)索引通??梢詭椭脩艚鉀Q大多數(shù)的SQL性能問(wèn)題。索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),它用于快速找出在某個(gè)列中含有某一特定值的行。如果不使用索引,那么MySQL必須從第1條記錄開(kāi)始讀完整個(gè)表直到找出相關(guān)的行。表越大,花費(fèi)的時(shí)間越多。如果表中查詢的列有一個(gè)索引,那么MySQL就能快速到達(dá)一個(gè)位置去搜尋數(shù)據(jù)文件的中間,沒(méi)有必要看所有數(shù)據(jù)。

索引在MySQL中也叫作“鍵(Key)”,是存儲(chǔ)引擎用于快速找到記錄的一種數(shù)據(jù)結(jié)構(gòu)??傮w來(lái)說(shuō),索引有如下幾個(gè)優(yōu)點(diǎn):

1)索引大大減少了服務(wù)器需要掃描的數(shù)據(jù)量。

2)索引可以幫助服務(wù)器避免排序和臨時(shí)表。

3)索引可以將隨機(jī)I/O變?yōu)轫樞騃/O。[考點(diǎn)]索引

9.

E-R圖向關(guān)系模型的轉(zhuǎn)換一般遵循哪些原則?正確答案:E-R圖向關(guān)系模型的轉(zhuǎn)換一般遵循如下原則:

1)一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性。實(shí)體的碼就是關(guān)系的碼。

例如,學(xué)生實(shí)體可以轉(zhuǎn)換為如下關(guān)系模式,其中,學(xué)號(hào)為學(xué)生關(guān)系的碼:

學(xué)生(學(xué)號(hào),姓名,出生日期,所在系,年級(jí),平均成績(jī))。同樣,性別、宿舍、班級(jí)、檔案材料、教師、課程、教室、教科書都分別轉(zhuǎn)換為一個(gè)關(guān)系模式。

2)一個(gè)聯(lián)系轉(zhuǎn)化為一個(gè)關(guān)系模式,與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系的屬性轉(zhuǎn)化為關(guān)系的屬性。該關(guān)系的碼有如下3種情況:

①若聯(lián)系為1:1,則每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。

②若聯(lián)系為1:n,則關(guān)系的碼為n端實(shí)體的碼。

③若聯(lián)系為m:n,則關(guān)系的碼為諸實(shí)體碼的組合。

下面分別來(lái)講解這3種情況。

①聯(lián)系為1:1

一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。

a)如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,那么與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。

b)如果與某一端對(duì)應(yīng)的關(guān)系模式合并,那么需要在該關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的碼和聯(lián)系本身的屬性。

②聯(lián)系為1:n

一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。

a)如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,那么與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為n端實(shí)體的碼。

b)如果與n端對(duì)應(yīng)的關(guān)系模式合并,那么在n端實(shí)體對(duì)應(yīng)模式中加入1端實(shí)體所對(duì)應(yīng)關(guān)系模式的碼,以及聯(lián)系本身的屬性。而關(guān)系的碼為n端實(shí)體的碼。

③聯(lián)系為m:n

一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為各實(shí)體碼的組合。

3)同一實(shí)體集的實(shí)體間的聯(lián)系,即自聯(lián)系,也可按上述1:1、1:n和m:n三種情況分別處理。

例如,如果教師實(shí)體集內(nèi)部存在領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)的1:n自聯(lián)系,那么可以將該聯(lián)系與教師實(shí)體合并,這時(shí)主鍵職工號(hào)將多次出現(xiàn),但作用不同,可用不同的屬性名加以區(qū)分。例如,在合并后的關(guān)系模式中,主鍵仍為職工號(hào),再增設(shè)一個(gè)“系主任”屬性,存放相應(yīng)系主任的職工號(hào)。

4)具有相同碼的關(guān)系模式可合并。

為了減少系統(tǒng)中的關(guān)系個(gè)數(shù),如果兩個(gè)關(guān)系模式具有相同的主鍵,那么可以考慮將它們合并為一個(gè)關(guān)系模式。合并方法是將其中一個(gè)關(guān)系模式的全部屬性加入另一個(gè)關(guān)系模式中,然后去掉其中的同義屬性(可能同名也可能不同名),并適當(dāng)調(diào)整屬性的次序。[考點(diǎn)]E-R模型

10.

在Oracle中,什么是異常?正確答案:異常(Exception)處理是用來(lái)處理正常執(zhí)行過(guò)程中未預(yù)料到的事件,包括程序塊的異常處理、預(yù)定義的錯(cuò)誤和自定義錯(cuò)誤。如果PL/SQL程序塊一旦產(chǎn)生異常,而程序并沒(méi)有指出如何處理,那么程序就會(huì)自動(dòng)終止運(yùn)行。

異常處理部分一般放在PL/SQL程序體的后半部分,結(jié)構(gòu)如下。

EXCEPTION

WHENfirst_exception

THEN

<codetohandlefirstexertion>

WHENsecond_exception

THEN

<codetohandlesecondexception>

WHENOTHERSTHEN<codetohandleOTHERSexception>[考點(diǎn)]程序處理

11.

RESETLOGS和NORESETLOGS的區(qū)別是什么?正確答案:RESETLOGS和NORESETLOGS主要用在兩個(gè)地方,第一是在創(chuàng)建控制文件的時(shí)候,第二是在打開(kāi)數(shù)據(jù)庫(kù)的時(shí)候。當(dāng)將控制文件備份到TRACE文件時(shí),可以看到里面包含了兩部分的重建語(yǔ)句,一個(gè)是使用RESETLOGS,另一個(gè)是使用NORESETLOGS。

備份控制文件的SQL如下:

SQL>alterdatabasebackupcontrolfiletotraceas'/home/oracle/cct_etl_lhr.sql';

若當(dāng)前的所有在線日志可用時(shí),則在創(chuàng)建控制文件的時(shí)候使用NORESETLOGS。若當(dāng)前的在線日志有所損壞時(shí),則在創(chuàng)建控制文件的時(shí)候需要使用RESETLOGS。若使用RESETLOGS則將導(dǎo)致在線日志里的內(nèi)容丟失,并且所有的備份失效。

在打開(kāi)數(shù)據(jù)庫(kù)的時(shí)候也可以使用RESETLOGS或NORESETLOGS選項(xiàng)。在做了不完全恢復(fù)后,RESETLOGS會(huì)初始化日志,重置日志序列號(hào)(從1開(kāi)始),并且創(chuàng)建一個(gè)新的INCARNATION??梢允褂肦MAN命令查看INCARNATION的信息:

RMAN>LISTINCARNATION;

做不完全恢復(fù)必須使用RESETLOGS,但是RESETLOGS也可以做完全恢復(fù)。而NORESETLOGS則必須是在做完全恢復(fù)時(shí)使用。RESETLOGS會(huì)重置日志序列號(hào),強(qiáng)制清空或重建在線日志,而NORESETLOGS則不會(huì)這么做。[考點(diǎn)]RMAN

12.

如何查找邏輯讀、物理讀、執(zhí)行次數(shù)和解析次數(shù)最多以及執(zhí)行時(shí)間最長(zhǎng)的SQL語(yǔ)句?如何查找或監(jiān)控效率低下的SQL語(yǔ)句?正確答案:效率低下的SQL一股是執(zhí)行時(shí)間較長(zhǎng)的SQL語(yǔ)句,可以通過(guò)如下幾種方式來(lái)監(jiān)控分析:

1)當(dāng)前系統(tǒng)的SQL可以通過(guò)監(jiān)控V$SQL_MONITOR、V$SESSION視圖來(lái)實(shí)現(xiàn),記錄執(zhí)行時(shí)間較長(zhǎng)的SQL語(yǔ)句。對(duì)于歷史SQL可以通過(guò)分析DBA_HIST_SQLSTAT視圖。

2)分析現(xiàn)有的系統(tǒng)中的執(zhí)行計(jì)劃,重點(diǎn)檢查驅(qū)動(dòng)表與被驅(qū)動(dòng)表順序、表連接算法、排序是否有索引、索引使用。

3)分析AWR、ASH和ADDM。

4)通過(guò)OEM中性能監(jiān)控捕獲5s以上的SQL。

5)通過(guò)GV$SQLAREA視圖來(lái)分析。[考點(diǎn)]性能診斷

13.

如何計(jì)算一個(gè)字符在字符串中出現(xiàn)的次數(shù)?正確答案:可以利用REGEXP_COUNT、REGEXP_REPLACE或TRANSLATE系統(tǒng)函數(shù),也可以自定義函數(shù)來(lái)計(jì)算一個(gè)字符在字符串中出現(xiàn)的次數(shù)。[考點(diǎn)]函數(shù)相關(guān)

14.

如何快速地清理Oracle的進(jìn)程?正確答案:若想要快速清理掉Oracle的進(jìn)程,最直接的辦法是殺pmon進(jìn)程。有如下3條命令可供選擇,其中加粗的orcl替換成ORACLE_SID的值即可。

kill-9'ps-ef|greporcl|grep-vgrep|awk'{print$2}''

ps-ef|greporcl|grep-vgrep|awk'{print$2}'|xargskill-9

ipcs-m|greporacle|awk'{print$2}'|xargsipcrmshm

若想要快速殺掉集群的進(jìn)程,則可以執(zhí)行如下命令:

km-9'ps-ef|grepd.bin|grep-vgrep|awk'{print$2}''

注意,生產(chǎn)庫(kù)上嚴(yán)禁使用,否則可能導(dǎo)致集群不能正常啟動(dòng)。[考點(diǎn)]會(huì)話

15.

MySQL有幾種存儲(chǔ)引擎(表類型)?各自有什么區(qū)別?正確答案:MySQL官方有多種存儲(chǔ)引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。第三方存儲(chǔ)引擎中比較有名的有TokuDB、Infobright、InnfiniDB、XtraDB(InnoDB增強(qiáng)版本)。其中,最常見(jiàn)的兩種存儲(chǔ)引擎是MyISAM和InnoDB。MyISAM是MySQL關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)的默認(rèn)存儲(chǔ)引擎(MySQL5.5以前)。這種MySQL表存儲(chǔ)結(jié)構(gòu)從舊ISAM代碼擴(kuò)展出許多有用的功能。從MySQL5.5開(kāi)始,InnoDB引擎由于其對(duì)事務(wù)參照完整性,以及更高的并發(fā)性等優(yōu)點(diǎn)開(kāi)始逐步地取代MyISAM,作為MySQL數(shù)據(jù)庫(kù)的默認(rèn)存儲(chǔ)引擎。下面逐一介紹各種存儲(chǔ)引擎。

1.MyISAM

MyISAM存儲(chǔ)引擎管理非事務(wù)表,提供高速存儲(chǔ)和檢索,以及全文搜索能力。該引擎插入數(shù)據(jù)快,空間和內(nèi)存使用比較低。

(1)存儲(chǔ)組成

每個(gè)MyISAM在磁盤上存儲(chǔ)成三個(gè)文件。每一個(gè)文件的名字就是表的名字,文件名都和表名相同,擴(kuò)展名指出了文件類型。這里特別要注意的是,MyISAM不緩存數(shù)據(jù)文件,只緩存索引文件。

1)表定義的擴(kuò)展名為.frm(frame,存儲(chǔ)表定義)。

2)數(shù)據(jù)文件的擴(kuò)展名為.MYD(MYData,存儲(chǔ)數(shù)據(jù))。

3)索引文件的擴(kuò)展名是.MYI(MYIndex,存儲(chǔ)索引)。

數(shù)據(jù)文件和索引文件可以放置在不同的目錄,平均分布I/O,獲得更快的速度,而且其索引是壓縮的,能加載更多索引,這樣內(nèi)存使用率就對(duì)應(yīng)提高了不少,壓縮后的索引也能節(jié)約一些磁盤空間。

(2)特點(diǎn)

1)不支持事務(wù),不支持外鍵約束,但支持全文索引,這可以極大地優(yōu)化LIKE查詢的效率。

2)表級(jí)鎖定(更新時(shí)鎖定整個(gè)表):其鎖定機(jī)制是表級(jí)索引,這雖然可以讓鎖定的實(shí)現(xiàn)成本很小,但是也同時(shí)大大降低了其并發(fā)性能。MyISAM不支持行級(jí)鎖,只支持并發(fā)插入的表鎖,主要用于高負(fù)載的查詢。

3)讀寫互相阻塞:不僅會(huì)在寫入的時(shí)候阻塞讀取,MyISAM還會(huì)在讀取的時(shí)候阻塞寫入,但讀本身并不會(huì)阻塞另外的讀。

4)不緩存數(shù)據(jù),只緩存索引:MyISAM可以通過(guò)key_buffer緩存,以大大提高訪問(wèn)性能,減少磁盤I/O,但是這個(gè)緩存區(qū)只會(huì)緩存索引,而不會(huì)緩存數(shù)據(jù)。

[root@mysql]#grepkey_bufferf

key_buffer_size=16M

5)讀取速度較快,占用資源相對(duì)少。

6)MyISAM引擎是MySQL5.5之前版本缺省的存儲(chǔ)引擎。

7)并發(fā)量較小,不適合大量UPDATE。

(3)適用場(chǎng)景

如果表主要用于插入新記錄和讀出新記錄,那么選擇MyISAM存儲(chǔ)引擎能實(shí)現(xiàn)處理的高效率。如果應(yīng)用的完整性和并發(fā)性要求很低,那么也可以選擇MyISAM存儲(chǔ)引擎。它是在Web、數(shù)據(jù)倉(cāng)儲(chǔ)和其他應(yīng)用環(huán)境下最常使用的存儲(chǔ)引擎之一。具體來(lái)說(shuō),適用于以下場(chǎng)景:

1)不需要事務(wù)支持的業(yè)務(wù),一般為讀數(shù)據(jù)比較多的網(wǎng)站應(yīng)用。

2)并發(fā)相對(duì)較低的業(yè)務(wù)(純讀純寫高并發(fā)也可以)。

3)數(shù)據(jù)修改相對(duì)較少的業(yè)務(wù)。

4)以讀為主的業(yè)務(wù),例如,WWW、BLOG、圖片信息數(shù)據(jù)庫(kù)、用戶數(shù)據(jù)庫(kù)、商品數(shù)據(jù)庫(kù)等業(yè)務(wù)。

5)對(duì)數(shù)據(jù)一致性要求不是非常高的業(yè)務(wù)。

6)中小型網(wǎng)站的部分業(yè)務(wù)。

小結(jié):?jiǎn)我粚?duì)數(shù)據(jù)庫(kù)的操作都可以使用MyISAM,所謂單一就是盡量純讀,或純寫(INSERT,UPDATE,DELETE)等。生產(chǎn)建議:沒(méi)有特別需求,一律用InnoDB。

(4)MyISAM引擎調(diào)優(yōu)精要

1)盡量索引(緩存機(jī)制)。

2)調(diào)整讀寫優(yōu)先級(jí),根據(jù)實(shí)際需要確保重要操作更優(yōu)先。

3)啟用延遲插入改善大批量寫入性能(降低寫入頻率,盡可能多條數(shù)據(jù)一次性寫入)。

4)盡量順序操作讓INSERT數(shù)據(jù)都寫入尾部,減少阻塞。

5)分解大的操作,降低單個(gè)操作的阻塞時(shí)間。

6)降低并發(fā)數(shù),某些高并發(fā)場(chǎng)景通過(guò)應(yīng)用進(jìn)行排隊(duì)機(jī)制。

7)對(duì)于相對(duì)靜態(tài)的數(shù)據(jù),充分利用QueryCache可以極大地提高訪問(wèn)效率。

[root@mysql3307]#grepqueryf

query_cache_size=2M

query_cache_limit=1M

query_cache_min_res_unit=2k

這幾個(gè)參數(shù)都是MySQL自身緩存設(shè)置。

8)MyISAM的COUNT只有在全表掃描的時(shí)候特別高效,帶有其他條件的COUNT都需要進(jìn)行實(shí)際的數(shù)據(jù)訪問(wèn)。

9)把主從同步的主庫(kù)使用InnoDB,從庫(kù)使用MyISAM引擎。

2.InnoDB

InnoDB用于事務(wù)處理應(yīng)用程序,主要面向OLTP方面的應(yīng)用。該引擎由InnoDB公司開(kāi)發(fā),其特點(diǎn)是行鎖設(shè)置,并支持類似于Oracle的非鎖定讀,即默認(rèn)情況下讀不產(chǎn)生鎖。InnoDB將數(shù)據(jù)放在一個(gè)邏輯表空間中。InnoDB通過(guò)多版本并發(fā)控制來(lái)獲得高并發(fā)性,實(shí)現(xiàn)了ANSI標(biāo)準(zhǔn)的4種隔離級(jí)別,默認(rèn)為Repeatable,使用一種被稱為next-keylocking的策略避免幻讀。對(duì)于表中數(shù)據(jù)的存儲(chǔ),InnoDB采用類似Oracle索引組織表Clustered的方式進(jìn)行存儲(chǔ)。如果對(duì)事務(wù)的完整性要求比較高,要求實(shí)現(xiàn)并發(fā)控制,那么選擇InnoDB引擎有很大的優(yōu)勢(shì)。需要頻繁地進(jìn)行更新,刪除操作的數(shù)據(jù)庫(kù),也可以選擇InnoDB存儲(chǔ)引擎。因?yàn)镮nnoDB存儲(chǔ)引擎提供了具有提交(COMMIT)、回滾(ROLLBACK)和崩潰恢復(fù)能力的事務(wù)安全。

InnoDB類型的表只有ibd文件,分為數(shù)據(jù)區(qū)和索引區(qū),有較好的讀寫并發(fā)能力。物理文件有日志文件、數(shù)據(jù)文件和索引文件。其中,索引文件和數(shù)據(jù)文件是放在一個(gè)目錄下,可以設(shè)置共享文件、獨(dú)享文件兩種格式。

(1)特點(diǎn)

1)支持事務(wù):包括ACID事務(wù)支持,支持4個(gè)事務(wù)隔離級(jí)別,支持多版本讀。

2)行級(jí)鎖定(更新時(shí)一般是鎖定當(dāng)前行):通過(guò)索引實(shí)現(xiàn),全表掃描仍然會(huì)是表鎖,注意間隙鎖的影響。

3)支持崩潰修復(fù)能力和MVCC。

4)讀寫阻塞與事務(wù)隔離級(jí)別相關(guān)。

5)具有非常高效的緩存特性:能緩存索引,也能緩存數(shù)據(jù)。

6)整個(gè)表和主鍵以CLUSTER方式存儲(chǔ),組成一棵平衡樹(shù)。

7)所有SECONDARYINDEX都會(huì)保存主鍵信息。

8)支持分區(qū)、表空間,類似Oracle數(shù)據(jù)庫(kù)。

9)支持外鍵約束(ForeignKey),外鍵所在的表稱為子表,而所依賴的表稱為父表。

10)InnoDB支持自增長(zhǎng)列(AUTO_INCREMENT),自增長(zhǎng)列的值不能為空。

11)InnoDB是索引和數(shù)據(jù)緊密捆綁的,沒(méi)有使用壓縮,從而會(huì)造成InnoDB比MyISAM體積龐大得多。

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

支持事務(wù),用于事務(wù)處理應(yīng)用程序,具有眾多特性,包括ACID事務(wù)支持,支持外鍵,同時(shí)支持崩潰修復(fù)能力和并發(fā)控制。并發(fā)量較大,適合大量UPDATE。

(3)缺點(diǎn)

對(duì)比MyISAM的存儲(chǔ)引擎,InnoDB寫的處理效率差一些,并且會(huì)占用更多的磁盤空間以保留數(shù)據(jù)和索引。相比MyISAM引擎,InnoDB引擎更消耗資源,速度沒(méi)有MyISAM引擎快。

(4)適用場(chǎng)景

如果對(duì)事務(wù)的完整性要求比較高,要求實(shí)現(xiàn)并發(fā)控制,那么選擇InnoDB引擎有很大的優(yōu)勢(shì)。需要頻繁地進(jìn)行更新,刪除操作的數(shù)據(jù)庫(kù),也可以選擇InnoDB存儲(chǔ)引擎。具體分類如下:

1)需要事務(wù)支持(具有較好的事務(wù)特性)。

2)行級(jí)鎖定對(duì)高并發(fā)有很好的適應(yīng)能力,但需要確保查詢是通過(guò)索引完成。

3)數(shù)據(jù)更新較為頻繁的場(chǎng)景,例如,BBS(BulletinBoardSystem,電子公告牌系統(tǒng))、SNS(SocialNetworkSite,社交網(wǎng))等。

4)數(shù)據(jù)一致性要求較高的業(yè)務(wù)。例如,充值、銀行轉(zhuǎn)賬等。

5)硬件設(shè)備內(nèi)存較大,可以利用InnoDB較好的緩存能力來(lái)提高內(nèi)存利用率,盡可能減少磁盤I/O。

物理數(shù)據(jù)文件:

[root@mysql3307]#11data/ibdatal

-rw-rw----1mysqlmysql134217728May1508:31data/ibdata1

6)相比MyISAM引擎,InnoDB引擎更消耗資源,速度沒(méi)有MyISAM引擎快。

(5)InnoDB引擎調(diào)優(yōu)精要

1)主鍵盡可能小,避免給SECONDARYINDEX帶來(lái)過(guò)大的空間負(fù)擔(dān)。

2)避免全表掃描,因?yàn)闀?huì)使用表鎖。

3)盡可能緩存所有的索引和數(shù)據(jù),提高響應(yīng)速度,減少磁盤I/O消耗。

4)在執(zhí)行大量插入操作的時(shí)候,盡量自己控制事務(wù)而不要使用AUTOCOMMIT自動(dòng)提交。有開(kāi)關(guān)可以控制提交方式。

5)合理設(shè)置innodb_flush_log_at_trx_commit參數(shù)值,不要過(guò)度追求安全性。

6)避免主鍵更新,因?yàn)檫@會(huì)帶來(lái)大量的數(shù)據(jù)移動(dòng)。

3.MEMORY(HEAP)

MEMORY存儲(chǔ)引擎(之前稱為HEAP)提供“內(nèi)存中”的表。如果需要很快的讀寫速度,對(duì)數(shù)據(jù)的安全性要求較低,那么可選擇MEMORY存儲(chǔ)引擎。MEMORY存儲(chǔ)引擎對(duì)表大小有要求,不能建太大的表。所以,這類數(shù)據(jù)庫(kù)只適用相對(duì)較小的數(shù)據(jù)庫(kù)表。如果mysqld進(jìn)程發(fā)生異常,那么數(shù)據(jù)庫(kù)就會(huì)重啟或崩潰,數(shù)據(jù)就會(huì)丟失,因此,MEMORY存儲(chǔ)引擎中的表的生命周期很短,一般只使用一次,非常適合存儲(chǔ)臨時(shí)數(shù)據(jù)。

(1)特點(diǎn)

1)MEMORY存儲(chǔ)引擎將所有數(shù)據(jù)保存在內(nèi)存(RAM)中,在需要快速查找引用和其他類似數(shù)據(jù)的環(huán)境下,可提供極快的訪問(wèn)速度。

2)每個(gè)基于MEMORY存儲(chǔ)引擎的表實(shí)際對(duì)應(yīng)一個(gè)磁盤文件,該文件的文件名和表名是相同的,類型為.frm。該文件只存儲(chǔ)表的結(jié)構(gòu),而其數(shù)據(jù)文件都是存儲(chǔ)在內(nèi)存中,這樣有利于對(duì)數(shù)據(jù)的快速處理,提高整個(gè)表的處理能力。

3)MEMORY存儲(chǔ)引擎默認(rèn)使用哈希(HASH)索引,其速度比使用B-Tree型要快,但安全性不高。如果希望使用B-Tree型,那么在創(chuàng)建的時(shí)候可以引用。

(2)適用場(chǎng)景

如果需要很快的讀寫速度,那么在需要快速查找引用和其他類似數(shù)據(jù)的環(huán)境下,對(duì)數(shù)據(jù)的安全性要求較低,可選擇MEMORY存儲(chǔ)引擎。

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

將所有數(shù)據(jù)保存在內(nèi)存(RAM)中,默認(rèn)使用HASH索引,數(shù)據(jù)的處理速度快。

(4)缺點(diǎn)

不支持事務(wù),安全性不高;MEMORY存儲(chǔ)引擎對(duì)表大小有要求,不能建太大的表。

4.MERGE

MERGE存儲(chǔ)引擎允許將一組使用MyISAM存儲(chǔ)引擎的并且表結(jié)構(gòu)相同(即每張表的字段順序、字段名稱、字段類型、索引定義的順序及其定義的方式必須相同)的數(shù)據(jù)表合并為一個(gè)表,方便了數(shù)據(jù)的查詢。需要注意的是,使用MERGE“合并”起來(lái)的表結(jié)構(gòu)相同的表最好不要有主鍵,否則會(huì)出現(xiàn)這種情況:一共有兩個(gè)成員表,其主鍵在兩個(gè)表中存在相同情況,但是寫了一條按相同主鍵值查詢的SQL語(yǔ)句,這時(shí)只能查到UNION列表中第一個(gè)表中的數(shù)據(jù)。MERGE存儲(chǔ)引擎允許集合將被處理同樣的MyISAM表作為一個(gè)單獨(dú)的表。

適用場(chǎng)景:MERGE存儲(chǔ)引擎允許MySQLDBA或開(kāi)發(fā)人員將一系列等同的MyISAM表以邏輯方式組合在一起,并作為1個(gè)對(duì)象引用它們。對(duì)于諸如數(shù)據(jù)倉(cāng)庫(kù)等,VLDB(VeryLargeDataBase,超大型數(shù)據(jù)庫(kù))環(huán)境十分適合。

優(yōu)點(diǎn):便于同時(shí)引用多個(gè)數(shù)據(jù)表而無(wú)須發(fā)出多條查詢。

缺點(diǎn):不支持事務(wù)。

5.BDB(BerkeleyDB)

BDB是事務(wù)型存儲(chǔ)引擎,支持COMMIT、ROLLBACK和其他事務(wù)特性,它由××軟件公司(http://www.***.com)開(kāi)發(fā)。BDB是一個(gè)高性能的嵌入式數(shù)據(jù)庫(kù)編程庫(kù)(引擎),它可以用來(lái)保存任意類型的鍵/值對(duì)(Key/ValuePair),而且可以為一個(gè)鍵保存多個(gè)數(shù)據(jù)。BDB可以支持?jǐn)?shù)干的并發(fā)線程同時(shí)操作數(shù)據(jù)庫(kù),支持最大256TB的數(shù)據(jù)。BDB存儲(chǔ)引擎處理事務(wù)安全的表,并以哈希為基礎(chǔ)的存儲(chǔ)系統(tǒng)。

適用場(chǎng)景:BDB存儲(chǔ)引擎適合快速地讀寫某些數(shù)據(jù),特別是不同KEY的數(shù)據(jù)。

優(yōu)點(diǎn):支持事務(wù)。

缺點(diǎn):在沒(méi)有索引的列上操作速度很慢。

6.EXAMPLE

EXAMPLE存儲(chǔ)引擎是一個(gè)“存根”引擎,可以用這個(gè)引擎創(chuàng)建表,但數(shù)據(jù)不能存儲(chǔ)在該引擎中。EXAMPLE存儲(chǔ)引擎可為快速創(chuàng)建定制的插件式存儲(chǔ)引擎提供幫助。

7.NDB

NDB存儲(chǔ)引擎是一個(gè)集群存儲(chǔ)引擎,是被MySQLCluster用來(lái)實(shí)現(xiàn)分割到多臺(tái)計(jì)算機(jī)上的表的存儲(chǔ)引擎,類似于Oracle的RAC,但它是ShareNothing的架構(gòu),因此,能提供更高級(jí)別的高可用性和可擴(kuò)展性。NDB的特點(diǎn)是數(shù)據(jù)全部放在內(nèi)存中,因此,通過(guò)主鍵查找非???。它在MySQL-Max5.1二進(jìn)制分發(fā)版里提供。

(1)特性

1)分布式:分布式存儲(chǔ)引擎,可以由多個(gè)NDBCluster存儲(chǔ)引擎組成集群分別存放整體數(shù)據(jù)的一部分。

2)支持事務(wù):和InnoDB一樣,支持事務(wù)。

3)可與mysqld不在一臺(tái)主機(jī):可以和mysqld分開(kāi)存在于獨(dú)立的主機(jī)上,然后通過(guò)網(wǎng)絡(luò)和mysqld通信交互。

4)內(nèi)存需求量巨大:新版本索引以及被索引的數(shù)據(jù)必須存放在內(nèi)存中,老版本所有數(shù)據(jù)和索引必須存在于內(nèi)存中。

(2)適用場(chǎng)景

1)具有非常高的并發(fā)需求。

2)對(duì)單個(gè)請(qǐng)求的響應(yīng)并不是非常嚴(yán)格。

3)查詢簡(jiǎn)單,過(guò)濾條件較為固定,每次請(qǐng)求數(shù)據(jù)量較少。

4)具有高性能查找要求的應(yīng)用程序,這類查找需求還要求具有最高的正常工作時(shí)間和可用性。

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

1)分布式:分布式存儲(chǔ)引擎,可以由多個(gè)NDBCluster存儲(chǔ)引擎組成集群分別存放整體數(shù)據(jù)的一部分。

2)支持事務(wù):和InnoDB一樣,支持事務(wù)。

3)可與mysqld不在一臺(tái)主機(jī):可以和mysqld分開(kāi)存在于獨(dú)立的主機(jī)上,然后通過(guò)網(wǎng)絡(luò)和mysqld通信交互。

(4)缺點(diǎn)

內(nèi)存需求量巨大:新版本索引以及被索引的數(shù)據(jù)必須存放在內(nèi)存中,老版本所有數(shù)據(jù)和索引必須存在于內(nèi)存中。它的連接操作是在MySQL數(shù)據(jù)庫(kù)層完成,不是在存儲(chǔ)引擎層完成的,這意味著,復(fù)雜的連接操作需要巨大的網(wǎng)絡(luò)開(kāi)銷,查詢速度會(huì)很慢。

8.ARCHIVE

ARCHIVE存儲(chǔ)引擎只支持INSERT和SELECT操作,其設(shè)計(jì)的主要目的是提供高速的插入和壓縮功能。

適用場(chǎng)景:ARCHIVE非常適合存儲(chǔ)歸檔數(shù)據(jù),如日志信息。

優(yōu)點(diǎn):ARCHIVE存儲(chǔ)引擎被用來(lái)無(wú)索引地、非常小地覆蓋存儲(chǔ)的大量數(shù)據(jù)。為大量很少引用的歷史、歸檔或安全審計(jì)信息的存儲(chǔ)和檢索提供了完美的解決方案。

缺點(diǎn):不支持事務(wù),只支持INSERT和SELECT操作。

9.CSV

CSV存儲(chǔ)引擎把數(shù)據(jù)以逗號(hào)分隔的格式存儲(chǔ)在文本文件中。

10.BLACKHOLE

BLACKHOLE存儲(chǔ)引擎接收但不存儲(chǔ)數(shù)據(jù),并且檢索總是返回一個(gè)空集。用于臨時(shí)禁止對(duì)數(shù)據(jù)庫(kù)的應(yīng)用程序輸入。該存儲(chǔ)引擎支持事務(wù),而且支持MVCC的行級(jí)鎖,主要用于日志記錄或同步歸檔。

11.FEDERATED

FEDERATED存儲(chǔ)引擎不存放數(shù)據(jù),它至少指向一臺(tái)遠(yuǎn)程MySQL數(shù)據(jù)庫(kù)服務(wù)器上的表,該存儲(chǔ)引擎把數(shù)據(jù)存在遠(yuǎn)程數(shù)據(jù)庫(kù)中,非常類似于Oracle的透明網(wǎng)關(guān)。在MySQL5.1中,它只和MySQL一起工作,使用MySQLCClientAPI。在未來(lái)的分發(fā)版中,想要讓它使用其他驅(qū)動(dòng)器或客戶端連接方法連接到另外的數(shù)據(jù)源。該存儲(chǔ)引擎能夠?qū)⒍鄠€(gè)分離的MySQL服務(wù)器連接起來(lái),從多個(gè)物理服務(wù)器創(chuàng)建一個(gè)邏輯數(shù)據(jù)庫(kù),十分適合于分布式環(huán)境或數(shù)據(jù)集市環(huán)境。

12.ISAM

最原始的存儲(chǔ)引擎就是ISAM,它管理著非事務(wù)性表,后來(lái)被MyISAM代替了,而且MyISAM是向后兼容的,因此可以忘記這個(gè)ISAM存儲(chǔ)引擎。

可以在MySQL中使用顯示引擎的命令得到一個(gè)可用引擎的列表,如下:

上面查詢結(jié)果顯示了可用的數(shù)據(jù)庫(kù)引擎的全部名單以及在當(dāng)前的數(shù)據(jù)庫(kù)服務(wù)器中是否支持這些引擎。

下面的表格列出了一些常見(jiàn)的比較重要的存儲(chǔ)引擎。

16.

SCN與時(shí)間戳如何相互轉(zhuǎn)換?正確答案:一個(gè)SCN值總是發(fā)生在某一個(gè)特定的時(shí)刻,只不過(guò)由于粒度的不一樣,通常會(huì)存在多個(gè)SCN對(duì)應(yīng)同一個(gè)時(shí)間戳的情況。Oracle10g提供了兩個(gè)新函數(shù)用于SCN和時(shí)間戳進(jìn)行相互轉(zhuǎn)換,這兩個(gè)函數(shù)分別是SCN_TO_TIMESTAMP和TIMESTAMP_TO_SCN,通過(guò)對(duì)SCN和時(shí)間戳進(jìn)行轉(zhuǎn)換,極大方便了Oracle的很多備份和恢復(fù)過(guò)程。

1)SCN_TO_TIMESTAMP(scn_number):將SCN轉(zhuǎn)換成時(shí)間戳。

2)TIMESTAMP_TO_SCN(timestamp):將時(shí)間戳轉(zhuǎn)換成SCN。

通過(guò)以上這兩個(gè)函數(shù),最終Oracle將SCN和時(shí)間的關(guān)系建立起來(lái)。在Oracle10g之前,是沒(méi)有辦法通過(guò)函數(shù)轉(zhuǎn)換得到SCN和時(shí)間的對(duì)應(yīng)關(guān)系的,一般可以通過(guò)LogMiner分析日志獲得。但是這兩種函數(shù)轉(zhuǎn)換要依賴于數(shù)據(jù)庫(kù)內(nèi)部表SMON_SCN_TIME,對(duì)于久遠(yuǎn)的SCN則不能轉(zhuǎn)換。[考點(diǎn)]RMAN

17.

文件b.txt,每行以“:”符分成5列,如“1:app

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論