版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)基礎(chǔ)知識(shí)面試題庫
資料僅供參考
對(duì)于項(xiàng)目
1.明確你的項(xiàng)目到底是做什么的,有哪些功能
2.明確你的項(xiàng)目的整體架構(gòu),在面試的時(shí)候能夠清楚地畫給面試官看而且清
楚地指出從哪里調(diào)用到哪里、使用什么方式調(diào)用
3.明確你的模塊在整個(gè)項(xiàng)目中所處的位置及作用
4.明確你的模塊用到了哪些技術(shù),更好一些的能夠再了解一下整個(gè)項(xiàng)目用到
了哪些技術(shù)
操作系統(tǒng)
1.操作系統(tǒng)的四大特性:
a)并發(fā)性
b)共享性
c)虛擬性
d)不確定性
2.清敘述一下并發(fā)和并行兩個(gè)概念的區(qū)別?
a)并行是指兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)生,
并發(fā)是指兩個(gè)或多個(gè)事件在同一時(shí)間間隔內(nèi)
發(fā)生。
3.什么是進(jìn)程?什么是線程?
資料僅供參考
a)“進(jìn)程是一個(gè)可并發(fā)執(zhí)行的,具有獨(dú)立功能的
程序關(guān)于某個(gè)數(shù)據(jù)集合的一次執(zhí)行過程,也
是操作系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單
位”。進(jìn)程是資源分配的基本單位。
b)線程也稱為輕量級(jí)進(jìn)程(LWP),是程序執(zhí)行
流■的最小單位,它是進(jìn)程的一個(gè)實(shí)體,是
系統(tǒng)獨(dú)立調(diào)度和分派處理機(jī)的基本單位。線
程是操作系統(tǒng)調(diào)度的最小單位。
4.進(jìn)程和線程的區(qū)別?從調(diào)度、并發(fā)性、擁有
資源和系統(tǒng)開銷四個(gè)方面來比較:
a)調(diào)度。在引入線程的操作系統(tǒng)中,把線程作
為調(diào)度和分派CPU的基本單位,把進(jìn)程作為
資源分配的基本單位,顯著提高了并發(fā)程
度。由于系統(tǒng)調(diào)度的基本單位是線程,因此
資料僅供參考
每個(gè)進(jìn)程至少創(chuàng)立一個(gè)線程,否則無法被調(diào)
度。
b)并發(fā)性。多線程能夠提高服務(wù)的質(zhì)■,在一
個(gè)線程阻塞時(shí),還有其它線程提供服務(wù)。
c)擁有資源。進(jìn)程是擁有資源的獨(dú)立單位,線
程自己不擁有系統(tǒng)資源,而是共享進(jìn)程的資
源(包括代碼段、數(shù)據(jù)段即系統(tǒng)資源等)。
d)系統(tǒng)開銷。進(jìn)程切換的開銷遠(yuǎn)遠(yuǎn)大于線程切
換的開銷,進(jìn)程的切換需要保存很多現(xiàn)場(chǎng),
但線程只需要保存和設(shè)置少■的寄存器內(nèi)
容,不涉及存儲(chǔ)器管理方面的操作。
5.進(jìn)程的特征:
a)動(dòng)態(tài)性:進(jìn)程是動(dòng)態(tài)產(chǎn)生和動(dòng)態(tài)消亡的,有
其生存周期。
資料僅供參考
b)并發(fā)性:一個(gè)進(jìn)程能夠與其它進(jìn)程一起向前
推進(jìn)。
C)獨(dú)立性:一個(gè)進(jìn)程是一個(gè)相對(duì)完整的調(diào)度單
位。
d)異步性:每個(gè)進(jìn)程都已相對(duì)獨(dú)立、不可預(yù)知
的速度向前推進(jìn)。
e)結(jié)構(gòu)性:為了控制和管理進(jìn)程,系統(tǒng)為每個(gè)
進(jìn)程設(shè)立一個(gè)進(jìn)程控制塊(PCB)。
6.進(jìn)程有幾種狀態(tài)?
a)就緒狀態(tài)
b)運(yùn)行狀態(tài):?jiǎn)蜟PU環(huán)境下,系統(tǒng)處于運(yùn)行狀
態(tài)的進(jìn)程最多只有一個(gè)。
c)阻塞狀態(tài)
7.進(jìn)程的組成:
a)程序:
資料僅供參考
b)數(shù)據(jù)集合:進(jìn)程獨(dú)有
c)進(jìn)程控制塊(PCB):它和進(jìn)程一一對(duì)應(yīng),
PCB是操作系統(tǒng)能感知進(jìn)程存在的唯一標(biāo)
識(shí),操作系統(tǒng)正是經(jīng)過管理PCB來管理進(jìn)程
的。系統(tǒng)創(chuàng)立進(jìn)程時(shí),為每個(gè)進(jìn)程分配
PCB,進(jìn)程執(zhí)行完成后,系統(tǒng)釋放PCB,進(jìn)
程也隨之消亡。
8.進(jìn)程的切換:
a)進(jìn)程上下文包含用戶級(jí)上下文、系統(tǒng)級(jí)上下
文、寄存器上下文
b)進(jìn)程上下文切換是核心態(tài)的切換,不發(fā)生在
用戶態(tài)。
c)用戶態(tài)到核心態(tài)之間的轉(zhuǎn)變是CPU模式的改
變。模式切換不同于進(jìn)程切換,并不引起進(jìn)
程狀態(tài)的改變。
資料僅供參考
9.為什么會(huì)提出線程這個(gè)概念?進(jìn)程的缺點(diǎn)是
什么?
a)進(jìn)程切換開銷大
b)進(jìn)程通信代價(jià)大
c)進(jìn)程之間并發(fā)性粒度粗,并發(fā)度不高
d)不適合并行計(jì)算和分布式并行計(jì)算的要求
e)不適合客戶-服務(wù)器計(jì)算的要求
f)操作系統(tǒng)中引入進(jìn)程的目的是為了使多個(gè)程
序并發(fā)執(zhí)行,改進(jìn)資源的利用率以提高系統(tǒng)
的吞吐
10.線程的分類:
a)用戶級(jí)線程-ULT,優(yōu)點(diǎn)是線程切換不需要
系統(tǒng)狀態(tài)的轉(zhuǎn)換,每個(gè)進(jìn)程能夠使用專門的
調(diào)度算法來調(diào)度線程,不需要依賴操作系統(tǒng)
底層的內(nèi)核。缺點(diǎn)是父進(jìn)程阻塞會(huì)導(dǎo)致線程
資料僅供參考
全都阻塞,不能真正的并行。Java的線程就
是一種用戶級(jí)的線程。
b)內(nèi)核級(jí)線程-KLT,優(yōu)點(diǎn)是同一個(gè)進(jìn)程內(nèi)多
個(gè)線程能夠并行執(zhí)行,缺點(diǎn)是線程狀態(tài)轉(zhuǎn)換
時(shí)內(nèi)核態(tài)的任務(wù),一般很慢。
c)混合式線程-上兩種的結(jié)合,有良好的效
果。
11.進(jìn)程控制塊的作用?它是如何描述進(jìn)程動(dòng)
態(tài)性質(zhì)的?
a)PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志,是進(jìn)
程動(dòng)態(tài)特性的集中反映,和進(jìn)程一一對(duì)應(yīng),
操作系統(tǒng)經(jīng)過管理PCB來管理進(jìn)程。
b)進(jìn)程控制塊包含進(jìn)程描述信息,控制信息,
和資源管理信息三類。這些信息的變化反映
進(jìn)程的動(dòng)態(tài)性質(zhì)。
資料僅供參考
12.操作系統(tǒng)內(nèi)核都包括哪些內(nèi)容?
a)一是支撐功能,包括中斷處理,時(shí)鐘管理和
原語操作等,二是資源管理功能,包括進(jìn)程
管理,存儲(chǔ)器管理和設(shè)備管理等。
13.處理機(jī)調(diào)度的三個(gè)分類?
a)高級(jí)調(diào)度-作業(yè)調(diào)度
b)中級(jí)調(diào)度-交換調(diào)度(內(nèi)存和硬盤之間的交
換)
c)低級(jí)調(diào)度-進(jìn)程調(diào)度(操作系統(tǒng)的核心)
d)高級(jí)調(diào)度發(fā)生在創(chuàng)立新進(jìn)程時(shí),它決定一個(gè)
進(jìn)程能否被創(chuàng)立,或者是創(chuàng)立后能否被設(shè)置
成就緒狀態(tài),以參與競(jìng)爭(zhēng)處理器資源;中級(jí)
調(diào)度反映到進(jìn)程狀態(tài)上就是掛起和解除掛
起,它根據(jù)系統(tǒng)的當(dāng)前符合情況決定停留在
資料僅供參考
主存中的進(jìn)程數(shù);低級(jí)調(diào)度則是決定哪一個(gè)
就緒進(jìn)程或線程占有CPU運(yùn)行。
14.批作業(yè)調(diào)度算法
a)先來先服務(wù)
b)最短作業(yè)優(yōu)先
c)響應(yīng)比高者優(yōu)先
d)優(yōu)先級(jí)算法
15.進(jìn)程調(diào)度的方式:
a)非剝奪方式(非搶占式方式):優(yōu)點(diǎn)是簡(jiǎn)單、易
實(shí)現(xiàn),系統(tǒng)開銷小。缺點(diǎn)是不太靈活,難以
滿足緊迫任務(wù)必須立即執(zhí)行的要求。實(shí)時(shí)系
統(tǒng)不宜采用這種調(diào)度方式。
b)可剝奪方式(搶占式方式):優(yōu)先權(quán)更高的進(jìn)程
優(yōu)先執(zhí)行。
16.進(jìn)程調(diào)度的算法:
資料僅供參考
a)先來先服務(wù)算法
b)最短優(yōu)先算法
c)優(yōu)先級(jí)算法:優(yōu)先級(jí)高的先執(zhí)行。能夠采用
剝奪或非剝奪,剝奪方式更能反映優(yōu)先的特
點(diǎn),可是會(huì)造成無窮阻塞和饑餓現(xiàn)象。
d)輪轉(zhuǎn)算法:基本思想是系統(tǒng)把所有就緒進(jìn)程
按先來先服務(wù)的原則排成一個(gè)隊(duì)列,且規(guī)定
一個(gè)較小的時(shí)間單元,稱為時(shí)間■或時(shí)間
片,按時(shí)間片把CPU輪流分配給進(jìn)入就緒隊(duì)
列的第一個(gè)進(jìn)程使用,當(dāng)進(jìn)程的時(shí)間片使用
完后,產(chǎn)生一個(gè)時(shí)鐘中斷,剝奪該進(jìn)程的執(zhí)
行,將它送到就緒隊(duì)列的隊(duì)尾,等待下次調(diào)
度。輪轉(zhuǎn)算法專門為分時(shí)系統(tǒng)設(shè)計(jì)。
e)多級(jí)隊(duì)列調(diào)度算法:根據(jù)不同的進(jìn)程,分配
到不同的隊(duì)列中,實(shí)行不同的調(diào)度算法。一
資料僅供參考
般按照優(yōu)先級(jí)分成多個(gè)隊(duì)列,高優(yōu)先級(jí)的任
務(wù)先做。
f)多級(jí)反饋隊(duì)列調(diào)度算法:按優(yōu)先級(jí)分配隊(duì)
列,可是優(yōu)先級(jí)越高分配的時(shí)間片越小,如
果沒做完,自動(dòng)移動(dòng)到下一級(jí)隊(duì)列繼續(xù)做。
g)實(shí)時(shí)調(diào)度算法
17.操作系統(tǒng)多任務(wù)的搶占機(jī)制是怎么實(shí)現(xiàn)
的?
18.哪種權(quán)限許可用戶進(jìn)入一個(gè)文件系統(tǒng)的目
錄?Read,Execute,Write,Access
ControlI
19.Linux32位系統(tǒng),應(yīng)用程序最多能分配的
內(nèi)存大小?
20.sleep和wait的區(qū)別?
21.Win32下線程的基本模式?
資料僅供參考
22.進(jìn)程之間的關(guān)系?
a)競(jìng)爭(zhēng)關(guān)系:由于進(jìn)程之間不知道彼此的存
在,而使用了同一份資源,就會(huì)造成競(jìng)爭(zhēng)。
資源競(jìng)爭(zhēng)會(huì)出現(xiàn)饑餓和死鎖。
b)協(xié)作關(guān)系
23.什么是臨界資源?什么是臨界區(qū)?
a)臨界資源:把一次只允許一個(gè)進(jìn)程使用的資
源成為臨界資源。(獨(dú)占性,如打印機(jī),卡片
輸出機(jī)等)
b)臨界區(qū):把每個(gè)進(jìn)程中訪問臨界資源的那段
代碼從概念上分離出來,將其稱為臨界區(qū)。
即臨界區(qū)是指對(duì)臨界資源實(shí)時(shí)操作的程序的
代碼段。
c)相關(guān)臨界區(qū):并發(fā)進(jìn)程中涉及相同臨界資源
的臨界區(qū)。相關(guān)臨界區(qū)必須互斥執(zhí)行。
資料僅供參考
24.什么是進(jìn)程互斥?
a)進(jìn)程互斥是解決進(jìn)程間競(jìng)爭(zhēng)關(guān)系(間接制約關(guān)
系)的手段。指任何時(shí)刻不允許兩個(gè)以上的共
享該資源的并發(fā)進(jìn)程同時(shí)進(jìn)入臨界區(qū),這種
現(xiàn)象稱為互斥。
b)相關(guān)臨界區(qū)的管理原則:互斥、空閑讓進(jìn)、
有限等待。
25.進(jìn)程同步的概念?進(jìn)程同步指兩個(gè)或多個(gè)
進(jìn)程為了合作完成同一個(gè)任務(wù),在執(zhí)行速度
或某些確定的時(shí)序點(diǎn)上必須相互協(xié)調(diào),即一
個(gè)進(jìn)程的執(zhí)行依賴于另一個(gè)進(jìn)程的消息,當(dāng)
一個(gè)進(jìn)程到達(dá)了某一個(gè)確定點(diǎn)而沒有得到合
作伙伴發(fā)來的已完成消息時(shí)必須等待,知道
該消息到達(dá)被喚醒后,才能繼續(xù)向前推進(jìn)。
26.進(jìn)程同步和互斥的關(guān)系?
資料僅供參考
a)進(jìn)程的互斥實(shí)際上是進(jìn)程同步的一種特殊情
況,即主次使用互斥共享資源,也是對(duì)進(jìn)程
使用資源次序上的一種協(xié)調(diào)。進(jìn)程的互斥和
同步統(tǒng)稱為進(jìn)程同步。
b)進(jìn)程的互斥是進(jìn)程間共享資源的使用權(quán),這
種競(jìng)爭(zhēng)沒有固定的必然聯(lián)系,哪個(gè)進(jìn)程競(jìng)爭(zhēng)
到資源的使用權(quán),該資源就歸哪個(gè)進(jìn)程使
用,直到它不再需要使用時(shí)才歸還資源;而
進(jìn)程同步中,所涉及的共享資源的并發(fā)進(jìn)程
間有一種必然的聯(lián)系,當(dāng)進(jìn)程必須同步時(shí),
即使無進(jìn)程在使用共享資源,尚未得到同步
消息的進(jìn)程也不能去使用該資源。
27.信號(hào)量機(jī)制(PV操作):
a)信號(hào)■機(jī)制的實(shí)現(xiàn)原理是兩個(gè)或多個(gè)進(jìn)程能
夠利用彼此間收發(fā)的簡(jiǎn)單信號(hào)來實(shí)現(xiàn)正確的
資料僅供參考
并發(fā)執(zhí)行,一個(gè)進(jìn)程在收到一個(gè)指令信號(hào)
前,會(huì)被迫在一個(gè)確定的或者需要的地方停
下來,從而保持同步或互斥。
b)用信號(hào)■機(jī)制解決進(jìn)程的同步和互斥問題有
如下三個(gè)步驟:
i.分析進(jìn)程之間的制約關(guān)系
ii.設(shè)置信號(hào),
iii.實(shí)施P、V操作
28.同步的實(shí)現(xiàn)機(jī)制:
a)臨界區(qū):經(jīng)過多線程的串行化來訪問公共資
源或者一段代碼,速度快,適合控制數(shù)據(jù)訪
問。
b)互斥?:采用互斥對(duì)象機(jī)制,只有擁有互斥
對(duì)象的線程才有訪問公共資源的權(quán)限,因?yàn)?/p>
資料僅供參考
互斥對(duì)象只有一個(gè),因此能夠保證公共資源
不會(huì)同時(shí)被多個(gè)線程訪問。
C)信號(hào)■:允許多個(gè)線程同時(shí)訪問同一資源,
可是需要限制同一時(shí)刻訪問此資源的最大線
程數(shù)目。信號(hào)■對(duì)象對(duì)線程的同步方式與前
面幾種方法不同,信號(hào)允許多個(gè)線程同時(shí)使
用共享資源,這與操作系統(tǒng)PV操作相似。
d)事件(信號(hào)):經(jīng)過通知操作的方式保持多線程
同步,還能夠方便的實(shí)現(xiàn)多線程的優(yōu)先級(jí)比
較的操作。
29.經(jīng)典的同步問題:
a)生產(chǎn)者消費(fèi)者問題
b)讀者.寫者問題(讀者優(yōu)先:信號(hào)■+讀進(jìn)程
計(jì)數(shù)器rc;弱寫者優(yōu)先:信號(hào)■+讀進(jìn)程計(jì)數(shù)
器rc+排隊(duì)信號(hào)或read;強(qiáng)寫者優(yōu)先:信號(hào)
資料僅供參考
■+讀進(jìn)程計(jì)數(shù)器rc+排隊(duì)信號(hào)*read+寫優(yōu)
先信號(hào)■write_first)
c)哲學(xué)家就餐問:是在多個(gè)線程之間共享多
個(gè)資源時(shí)會(huì)不會(huì)導(dǎo)致死鎖或饑餓的典型模
型。解決方案:
i.每個(gè)哲學(xué)家取得手邊的兩個(gè)叉子才能吃面,
即僅當(dāng)一個(gè)哲學(xué)家左右兩邊的叉子都可用
時(shí),才允許她拿叉子,否則一個(gè)叉子也不
取。
ii.偶數(shù)號(hào)哲學(xué)家先取手邊的叉子,奇數(shù)號(hào)哲學(xué)
家先取右手邊的叉子。
d)嗜睡理發(fā)師問
30.進(jìn)程通信的方式:
a)共享存儲(chǔ):消息緩沖
b)消息傳遞:信箱
資料僅供參考
c)管道通信
31.產(chǎn)生死鎖的原因?
a)進(jìn)程競(jìng)爭(zhēng)資源引起的死鎖
b)進(jìn)程推進(jìn)順序不當(dāng)產(chǎn)生死鎖
32.產(chǎn)生死鎖的條件
a)互斥條件:同時(shí)只能有一個(gè)進(jìn)程持有資源
b)請(qǐng)求和保持條件:一個(gè)進(jìn)程請(qǐng)求資源得不到
滿足時(shí),不釋放占有的資源
c)不剝奪條件:任何一個(gè)進(jìn)程不能搶奪其它進(jìn)
程占有的資源
d)循環(huán)等待條件:存在一個(gè)循環(huán)等待鏈,鏈中
每個(gè)進(jìn)程已獲得資源,并分別等待前一個(gè)進(jìn)
程持有的資源。
33.處理死鎖的方法:
資料僅供參考
a)死鎖預(yù)防:破壞產(chǎn)生死鎖條件的任何一個(gè)或
多個(gè),如靜態(tài)資源分配策略(2)和按序分配資
源策略(4)。
b)死鎖避免:采用銀行家算法,每次分配都查
看能否找到一種資源分配方法,使得已有的
進(jìn)程能夠順利完成任務(wù),如果有,則分配,
否則不分配。
c)死鎖檢測(cè)和解除:用軟件來檢查有進(jìn)程和資
源構(gòu)成的有向圖是否存在一個(gè)或多個(gè)回路。
34.分頁存儲(chǔ)管理、段式存儲(chǔ)管理和段頁式存
儲(chǔ)管理的基本思想:
a)(分頁)利用分頁存儲(chǔ)管理,允許把一個(gè)作業(yè)
存放到若干個(gè)不相鄰的內(nèi)存區(qū)域中,減少大
碎片。
資料僅供參考
b)(分段)段式存儲(chǔ)管理支持用戶的分段觀點(diǎn),
以段為單位進(jìn)行存儲(chǔ)空間的分配。分段存儲(chǔ)
管理的引入,主要為了方便編程、信息共享
和信息保護(hù)(有利于程序的運(yùn)行)。
c)(段頁式)段頁式存儲(chǔ)管理的基本原理是先將
整個(gè)主存劃分成大小相等的存儲(chǔ)塊(頁框),把
用戶程序分段,接著為每一段進(jìn)行分頁。
35.分頁和分段的區(qū)別?
a)分頁是信息的物理單位,與源程序的邏輯結(jié)
構(gòu)無關(guān),用戶不可見,分頁的目的主要是為
了減少碎片,提高主存的利用率。分段是信
息的邏輯單位,由源程序的邏輯結(jié)構(gòu)來決
定,目的是更好地滿足用戶的需求。
b)頁的大小固定且由系統(tǒng)確定,而段的長(zhǎng)度不
固定,由用戶程序決定。
資料僅供參考
c)分頁的作業(yè)地址空間是一維的(線性地址空
間),分段的作業(yè)地址空間是二維的(段名和段
內(nèi)地址)。
36.媛存的局部性原理:根據(jù)研究,在較短的
時(shí)間內(nèi),程序的執(zhí)行會(huì)局限于某一個(gè)部分,
則能夠根據(jù)當(dāng)前程序運(yùn)行的位置,推測(cè)可能
執(zhí)行的程序,預(yù)先加載,來達(dá)到緩存的目
的。(虛擬內(nèi)存的實(shí)現(xiàn))
37.RAID技術(shù):
a)RAID1:兩個(gè)磁盤互相備份,安全性最好,
但磁盤利用率50%,最低。
b)RAID2:采用漢明碼做出錯(cuò)校驗(yàn),按位交叉
存取,用于大數(shù)據(jù)的讀寫,但冗余信息開銷
大,已被淘汰。
資料僅供參考
c)RAID3:位交織奇偶校驗(yàn),使用一個(gè)磁盤做
奇偶校驗(yàn),數(shù)據(jù)分段存儲(chǔ)在其余磁盤中,一
且有損壞,能夠利用奇偶校驗(yàn)來重建數(shù)據(jù),
但校驗(yàn)盤損壞則沒救,磁盤利用率n-1o
d)RAID4:塊交織奇偶校驗(yàn),按塊存取,能夠
單獨(dú)對(duì)某個(gè)盤進(jìn)行操作,一次操作只涉及數(shù)
據(jù)盤和校驗(yàn)盤,不適合隨機(jī)分散的小數(shù)據(jù)
e)RAID5:塊交織分布式奇偶校驗(yàn),同樣以數(shù)
據(jù)校驗(yàn)位來保證數(shù)據(jù)的安全,不同于校驗(yàn)
盤,它將數(shù)據(jù)段的校驗(yàn)位交互存放于各個(gè)硬
盤,則任何一個(gè)硬盤損壞,都能夠根據(jù)其它
硬盤上的校驗(yàn)位來重建損壞的數(shù)據(jù),磁盤利
用率n-1.
38.SPOOLing系統(tǒng)?
資料僅供參考
a)在內(nèi)存和硬盤中間建立緩沖區(qū),在內(nèi)存寫入
硬盤的過程中,先寫入緩沖,等到CPU空閑
時(shí),才從緩沖區(qū)寫入硬盤。
39.同步和異步有什么不同?各自的優(yōu)勢(shì)?
40.什么是線程?線程的基本狀態(tài)?
41.synchronized和Lock的異同?
42.什么是序列化?什么是持久化?什么是串
行化?transient的用法?哪些字段需要標(biāo)記
transient?
43.synchronized關(guān)鍵字的用法?
44.什么是守護(hù)線程?舉一個(gè)守護(hù)線程的例
子?
資料僅供參考
計(jì)算機(jī)網(wǎng)絡(luò)
1.0SI模型及其各層次的作用?TCP/IP模型各
層次及協(xié)議?
2.數(shù)據(jù)鏈路層和MAC層(介質(zhì)訪問控制層)?
3.計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議、接口和服務(wù)的概念?
4.數(shù)據(jù)鏈路層:流■控制、可靠傳輸和滑動(dòng)窗
口機(jī)制。
5.數(shù)據(jù)鏈路層設(shè)備:網(wǎng)橋和局域網(wǎng)交換機(jī)
6.網(wǎng)絡(luò)層的功能:異構(gòu)網(wǎng)絡(luò)互聯(lián)、路由與轉(zhuǎn)
發(fā)、擁塞控制
7.路由算法:距離?向?路由算法、鏈路狀態(tài)路
由算法、層次路由
8.IPv4內(nèi)容:分組、NAT、子網(wǎng)劃分和子網(wǎng)掩
碼
9.ARP協(xié)議、DHCP協(xié)議與ICMP協(xié)議
資料僅供參考
10.網(wǎng)絡(luò)層設(shè)備:路由器的組成和功能,路由
表和路由轉(zhuǎn)發(fā)
11.流■控制和擁塞控制的區(qū)別?
12.傳輸層的功能?傳輸層的尋址與端口?套
接字?
13.TCP協(xié)議和UDP協(xié)議?Java實(shí)現(xiàn)?UDP
首部?
14.TCP段、TCP連接管理、TCP可靠傳
輸、TCP流■控制和擁塞控制
15.TCP的擁塞控制:慢開始、擁塞避免、快
重傳、快恢復(fù)。
16.應(yīng)用層:P2P模型?應(yīng)用層協(xié)議:DNS、
FTP、EMAIL.MIME、STMP.POP3、
HTTPoo
17.CGI?域名解析過程?
資料僅供參考
MySQL數(shù)據(jù)庫
〈INSERT嵌套SELECT
2.MySQL數(shù)據(jù)類型,int類型長(zhǎng)度超出了也不
會(huì)對(duì)數(shù)據(jù)產(chǎn)生影響,和SQLMODE有關(guān)。
3.一個(gè)表中最多只能有一個(gè)自增長(zhǎng)列。
4.DDL、DML、DCL、DQL語句?
a)DDL(數(shù)據(jù)定義語言):createdrop、
alter
b)DML(數(shù)據(jù)操縱語言):insert、delete
update、select
c)DCL(數(shù)據(jù)控制語言):grant、revoke
5.MySQL的其它數(shù)據(jù)庫:
a)information_schema數(shù)據(jù)庫存儲(chǔ)了數(shù)據(jù)庫對(duì)
象信息,比如用戶表信息、列信息、權(quán)限信
息、字符集信息、分區(qū)信息等。
資料僅供參考
b)cluster存儲(chǔ)了系統(tǒng)的集群信息
c)mysql存儲(chǔ)了系統(tǒng)的用戶權(quán)限信息
d)test是系統(tǒng)自動(dòng)創(chuàng)立的測(cè)試數(shù)據(jù)庫,任何用
戶都能夠使用。
6.內(nèi)連接查詢即為多表查詢,僅選出兩張表中
互相匹配的記錄,外連接則會(huì)選出其它不匹
配的記錄。子查詢經(jīng)常使用in、notin、
=、!=、exists%notexists等。表連接很多情
況下用于優(yōu)化子查詢。合并記錄用union(含
distinct)或unionallo
7.MySQL數(shù)字類型及字節(jié)數(shù)、日期類型及字節(jié)
數(shù)、字符串類型及字節(jié)數(shù)。
8.MySQL能夠使用REGEXP或RLIKE來使用
正則匹配。NULL不能用于"二,等",但
能夠使用<=>比較NULL。比較時(shí)不區(qū)分大小
資料僅供參考
寫,數(shù)字作為浮點(diǎn)數(shù)比較。短路與和非
NULL結(jié)果都為NULL,只有1或NULL為
1o
9.MySQL常見函數(shù):
a)字符串CONCAT、INSERT.LEFT、
RIGHT.REPLACE.SUBSTRING.
LPAD、RPAD、TRIM.REPEAT等。
b)數(shù)值函數(shù)ABS、CEIL、FLOOR.MOD.
RAND、ROUND.TRUNCATE等。x%y任
意為NULL結(jié)果都為NULLo產(chǎn)生0~100隨
機(jī)數(shù)為selectceil(100*rand()),
ceil(100*rand())o
c)日期和時(shí)間函數(shù)CURDATE、CURTIME.
NOW、UNIX_TIMESTAMP.
FROM_UNIXTIME.DATE.FORMAT,
資料僅供參考
DATEDIFF,DATE_ADD等,格式為
,%Y-%m-%d%H-%i-%s'o
d)流程函數(shù)IF、IFNULL.CASEWHENTHEN
ELSEEND、CASE(exp)WHENTHEN
ELSEENDo
e)其它函數(shù)DATABASE、VERSION.
USER、INET_ATON、INET_NTOA.
PASSWORD.MD5O
10.MySQL存儲(chǔ)類型:MyISAM、InnoDB.
BDB、MEMORY,CSV等,只有InnoDB和
BDB支持事務(wù),其它都不支持。MySQL默
認(rèn)存儲(chǔ)引擎為InnoDBo
11.InnoDB和MylSAM的區(qū)別?事務(wù)、外
鍵、訪問速度、占用空間、存儲(chǔ)方式
資料僅供參考
(MylSAM:靜態(tài)表、動(dòng)態(tài)表和壓縮表。
InnoDB:共享表空間、多表空間)等方面。
12.MEMORY表使用HASH索引,數(shù)據(jù),大
小由max_heap_table_size變■來決定,默
認(rèn)16MB。
13.如何選擇合適的存儲(chǔ)引擎?
a)以讀操作和插入操作為主,少■更新和刪
除,對(duì)事務(wù)完整性、并發(fā)性要求不高則使用
MylSAM引擎。
b)InnoDB則適合于并發(fā)要求高的場(chǎng)合,事務(wù)完
整性要求較高,除了能夠有效降低刪除和更
新導(dǎo)致的鎖定,還能夠確保事務(wù)的完整提交
和回滾,適合財(cái)務(wù)管理系統(tǒng)。
c)MEMORY一般見于更新不太頻繁的小表,
能夠快速得到結(jié)果。
資料僅供參考
d)MERGE組合了MylSAM表,突破了單個(gè)
MylSAM表的限制,并能夠分布在多個(gè)磁盤
上,有效改進(jìn)MERGE表的訪問效率。
14.選擇合適的數(shù)據(jù)類型?
a)CHAR和VARCHAR-MylSAM:建議固定
長(zhǎng)度的數(shù)據(jù)列CHARoInnoDB:建議使用
VARCHAR類型。
b)TEXT和BLOB-盡?選擇滿足需求的最小
的存儲(chǔ)類型、大,刪除后為提高性能應(yīng)定期
使用OPTIMIZETABLE功能進(jìn)行標(biāo)的碎片整
理。同時(shí)能夠使用合成的索引(Synthetic)來
提高大文本字段的查詢性能,此種索引主要
利用散列值,只能用于精確匹配的查詢"="。
不必要時(shí)盡*避免檢索BLOB和TEXTo單
獨(dú)將BLOB和TEXT分成一張表。
資料僅供參考
c)定點(diǎn)DECIMAL和浮點(diǎn)FLOAT\DOUBLE-
定點(diǎn)更精確,字符串存儲(chǔ),而浮點(diǎn)數(shù)不精
確,而且比較容易出錯(cuò)。
d)日期類型選擇:盡■選擇滿足需求的最小存
儲(chǔ)的日期類型,需要記錄年份久遠(yuǎn),則
DATETIMEo如果需要不同時(shí)區(qū)使用,則使
用TIMESTAMPo
15.選擇合適的字符集:
a)滿足應(yīng)用支持語言的需求、考慮和已有數(shù)據(jù)
的兼容性、漢字居多能夠考慮GBK2字節(jié),
而UTF83字節(jié),而英文則應(yīng)該UTF81字
節(jié),其它2字節(jié)。
b)如果需要比較,排序等字符運(yùn)算,則最好選
擇定長(zhǎng)字符集。盡■避免字符集轉(zhuǎn)換。
資料僅供參考
16.字符集用來MySQL存儲(chǔ)字符串的方式,
校對(duì)規(guī)則用來定義比較字符串的方式。
a)查看方式:showcharacterset;show
collationlike"%%";
b)校對(duì)規(guī)則_ci大小寫不敏感、_cs大小寫敏
感、_bin基于編碼值的比較。
17.MylSAM和InnoDB默認(rèn)都是BTREE索
引,當(dāng)前不支持函數(shù)索引,但支持前綴索
引。另外,還支持全文索引。默認(rèn)情況下
MEMORY使用HASH索引,也支持BTREE
索引。
18.索引操作:
a)創(chuàng)立索引?CREATE[unique|fulltext|special]
INDEXindex_name[USINGindex_type]ON
tbl_name(index_col_name)
資料僅供參考
b)修改增加索引?ALTERTABLE
ADD[unique|fulltext|special]INDEX
index_name[USINGindex_type]
index_col_name
index_col_name=col_name[(length)]
[ASC|DESC]
c)能夠經(jīng)過explainselect語句查看是否使用了
索引。key:xxx為使用索引。
d)刪除索引?DROPINDEXindex_nameON
tbl_name
19.MylSAM索引前綴長(zhǎng)度1000字節(jié),
InnoDB前綴索引長(zhǎng)度最長(zhǎng)767字節(jié)。
20.設(shè)計(jì)索引的原則:
a)索引列應(yīng)選擇SELECTWHERE語句后的列
和表連接ON子句后的列。
資料僅供參考
b)盡■使用唯一索引,分布越分散效果越好,
如性別就不適合索引,分布太密集。
c)盡■使用短索引,查詢更快,I。更少。
d)利用最左前綴。
e)不要過度索引,會(huì)降低使用效率。
f)InnoDB會(huì)根據(jù)主鍵、唯一索引或內(nèi)部列的排
序來存儲(chǔ),因此盡■自己指定主鍵,選擇常
見列作為主鍵。另外,InnoDB表的普通索引
都會(huì)保存主鍵的鍵值,因此主鍵要盡可能選
擇較短的數(shù)據(jù)類型,能夠有效減少索引的磁
盤占用,提高索引緩存效果。
21.HASH索引只能使用在=或<=>等式比較
時(shí)。優(yōu)化器不能使用HASH索引來加速
ORDERBY操作。
BTREE索引能夠用在>,<,>=,<=,
資料僅供參考
BETWEEN,!=,<>,LIKE"pattern'Xpattern
不能以通配符開頭)。簡(jiǎn)而言之,范圍查詢適
用于BTREE,不適用HASH索弓I。
22.MySQL使用索引,在檢索的時(shí)候不需要查
找所有數(shù)據(jù),能快速定位需要的數(shù)據(jù)。大多
數(shù)索引存儲(chǔ)在BTREE中,只有空間列類型
的索引使用RTREE,MEMORY表支持
HASH索引。
23.為什么需要使用視圖?
a)使用視圖的用戶不需要考慮對(duì)應(yīng)表結(jié)構(gòu),關(guān)
聯(lián)條件和篩選條件。
b)使用視圖能夠控制用戶訪問到行列級(jí)別。
c)視圖結(jié)構(gòu)確定了,能夠屏蔽表結(jié)構(gòu)變化對(duì)用
戶的影響。
24.視圖操作:
資料僅供參考
a)創(chuàng)立視圖-CREATE[ORREPLACE]
[ALGORITHM={UNDEFINED|MERGE|
TEMPTABLE}]VIEWview_name
[{columnjist}]ASselect_statement[WITH
[CASCADED|LOCAL]CHECKOPTION]
b)修改視圖-ALTER[ALGORITHM=
{UNDEFINED|MERGE|TEMPTABLE}]
VIEWview_name[(column」ist)]AS
select_statement[WITH[CASCADED|
LOCAL]CHECKOPTION]
c)刪除視圖-DROPVIEW[IFEXISTS]
view_name[,view_name][RESTRICT|
CASCADE]
d)查看視圖-SHOWTABLES
資料僅供參考
e)查看視圖信息-SHOWTABLESTATUS
[FROMdb_name][LIKE'pattern']
f)查詢視圖定義-SHOWCREATEVIEW
view_name
25.MySQL不允許在創(chuàng)立視圖時(shí)使用子查詢,
能夠使用查詢視圖語句來實(shí)現(xiàn)。一些視圖不
可更新:
a)包含聚合函數(shù)(SUM、MIN、MAX、COUNT
等)、DISTINCT.GROUPBY.HAVING.
UNION或者UNIONALLO
b)常?視圖
c)SELECT包含子查詢
d)JOIN
e)FROM了一個(gè)不能更新的視圖
資料僅供參考
f)WHERE子句的子查詢引用了FROM子句的
表
26.WITHCASCADED|LOCALCHECK
OPTION決定了是否允許更新數(shù)據(jù)使記錄不
再滿足視圖的條件,LOCAL表示只要滿足本
視圖的條件就能夠更新,CASCADED必須
滿足所有針對(duì)該視圖的所有視圖條件才能夠
更新。
27.什么是存儲(chǔ)過程?它有什么好處?它和函
數(shù)有什么區(qū)別?
28.存儲(chǔ)過程操作:
a)創(chuàng)立存儲(chǔ)過程-CREATEPROCEDURE
sp_name([proc_parameter])[characteristic]
routine_body
資料僅供參考
b)創(chuàng)立函數(shù)-CREATEFUNCTION
([func_parameter])RETURNStype
[characteristic]routine_body
proc_parameter=[IN|OUT|INOUT]
param_nametype
func_parameter=proc_parameter
type=MySQL任意數(shù)據(jù)類型
characteristic=LANGUAGE.SQL|[NOT]
DETERMINISTIC|{CONTAINS.SQL|
NOSQL|READSSQLDATA|MODIFIES
SQLDATA)|SQLSECURITY{DEFINER|
INVOKER)|COMMENT'string'
routine_body=合法SQL語句
c)修改函數(shù)或存儲(chǔ)過程-ALTER
{PROCEDURE|FUNCTION}sp_name
資料僅供參考
[characteristic...]
characteristic={CONTAINS_SQL|NOSQL
IREADSSQLDATA|MODIFIESSQL
DATA}|SQLSECURITY{DEFINER|
INVOKER)|COMMENT'string'
d)調(diào)用存儲(chǔ)過程-CALL
sp_name([parameter])
e)刪除存儲(chǔ)過程或函數(shù)-DROP
{PROCEDURE|FUNCTION}[IFEXISTS]
sp_name
29.首先調(diào)用DELEMITER$$將結(jié)束符從;改成
$$,使得過程和函數(shù)中的;不會(huì)被解釋成語句
結(jié)束而提示錯(cuò)誤。然后從DELEMITER;將結(jié)
束符改回來。
30.存儲(chǔ)過程變■的使用:
資料僅供參考
a)DECLEARlast_month_startDATE;
b)變■賦值:SETvar_name=expr;SELECT
col_nameINTOvar_nameFROM
tbl_name
31.存儲(chǔ)過程能夠使用流程控制語句:
a)IFTHENELSEIFTHENELSEENDIF...
b)也能夠使用CASEWHENTHENWHEN
THENELSEENDCASEo
c)循環(huán)使用:
i.LOOP語句:beginjabel:LOOP
statementjistENDLOOPendjabelo
ii.LEAVE語句:能夠使用LEAVE跳出循環(huán)
(LEAVEbegin」abel)或BEGINENDO
iii.ITERATE語句:同CONTINUE(ITERATE
beginjabel)
資料僅供參考
iv.REPEAT語句:beginjabel:REPEAT
statementjistUNTILsearch_conditionEND
REPEATbeginjabel.
v.WHILE語句:beginjabel:WHILE
search_conditionDOstatementjistEND
WHILEendjabel;
32.事件調(diào)度器:類似于時(shí)間觸發(fā)器,定時(shí)執(zhí)
行任務(wù)。
a)創(chuàng)立語法:CREATEEVENTmyeventON
SCHEDULEATCURRENT_TIMESTAMP+
INTERVAL1HOUR
DO
UPDATE
myschema.mytableSETmycol=mycol+1;
b)事件調(diào)度器默認(rèn)關(guān)閉。
資料僅供參考
c)禁用或刪除事件調(diào)度器:ALTERTABLE
event_nameDISABLE;DROPEVENT
event_name;
33.事件調(diào)度器的優(yōu)勢(shì):
a)避免數(shù)據(jù)庫相關(guān)的定時(shí)任務(wù)部署在操作系統(tǒng)
層,減少操作系統(tǒng)管理員產(chǎn)生誤操作的風(fēng)
險(xiǎn),并方便遷移,遷移過程包括該數(shù)據(jù)庫。
b)適用于定期收集統(tǒng)計(jì)信息、定期清理歷史數(shù)
據(jù)、定期數(shù)據(jù)檢查。
c)復(fù)雜的處理適合程序?qū)崿F(xiàn)。
34.觸發(fā)器是與表有關(guān)的數(shù)據(jù)庫對(duì)象,會(huì)在滿
足一定條件定義時(shí)觸發(fā),并執(zhí)行觸發(fā)器定義
的語句集合。
資料僅供參考
a)創(chuàng)立觸發(fā)器-CREATETRIGGER
trigger_nametrigger_timetrigger_eventON
tbl_nameFOREACHROWtrigger_stmto
b)同一張表相同時(shí)間相同事件的觸發(fā)器,只能
夠定義一個(gè)。
c)觸發(fā)器時(shí)間可分為BEFORE和AFTER,事
件可分為INSERTUPDATEDELETE等。
d)能夠使用INSERTINTOONDEPLICATE
KEYUPDATEXXX來測(cè)試觸發(fā)器執(zhí)行順
序,如果已存在,則先insert在update
afterupdateo如果不存在,貝!Iinsertafter
inserto
e)刪除觸發(fā)器?DROPtriggerins_film;
f)查看觸發(fā)器?showtriggers;
information_schema.triggers表
資料僅供參考
35.什么時(shí)候使用觸發(fā)器?
a)不能夠直接調(diào)用直接返回客戶端數(shù)據(jù)的存儲(chǔ)
過程。
b)也不能使用開始或結(jié)束事務(wù)的語句(start
transactioncommitrollback語句)。
c)不要將過多的邏輯寫在觸發(fā)器中,影響
CURD效率。
36.MySQL支持MylSAM和MEMORY鎖
表,對(duì)BDB進(jìn)行鎖頁,對(duì)InnoDB鎖行。默
認(rèn)自動(dòng)鎖表和鎖行,但有些時(shí)候用戶會(huì)明確
鎖表或者進(jìn)行事務(wù)的控制,以確保事務(wù)的完
整性,這樣就需要使用事務(wù)控制和鎖定語句
來完成。
資料僅供參考
37.LOCKTABLES能夠鎖定用于當(dāng)前線程的
表,UNLOCKTABLES會(huì)釋放當(dāng)前線程獲
得的任何鎖定。
a)鎖定語句-LOCKTABLEStbl_name[AS
alias]{READ[LOCAL]|[LOW_PROORITY]
WRITE)...
b)釋放語句-UNLOCKTABLES
38.MySQL的事務(wù)控制:
a)SETAUTOCOMMIT-設(shè)置是否自動(dòng)提交,
0表示不自動(dòng)提交
b)STARTTRANSACTION/BEGIN-開始一項(xiàng)
新事務(wù)
c)COMMIT-提交事務(wù)
d)ROLLBACK-回滾事務(wù)
資料僅供參考
39.如果鎖表期間如果執(zhí)行starttransaction命
令,會(huì)有隱含unlocktable執(zhí)行。lock方式
鎖表,不能使用rollback進(jìn)行回滾。
40.所有的DDL語句不能回滾,而且部分
DDL語句會(huì)造成隱式提交。能夠定義
savepointname來實(shí)現(xiàn)不同階段的回滾,
rollbacktosavepointnameo
41.MySQL的分布式事務(wù):
a)只支持InnoDB引擎。
b)分布式事務(wù)還有問題:
i.如果分布式事務(wù)prepare時(shí)數(shù)據(jù)庫重新啟
動(dòng),重啟以后還能夠進(jìn)行提交或回滾,但此
時(shí)不會(huì)寫binlog,會(huì)造成主從數(shù)據(jù)庫不一
致。
資料僅供參考
ii.如果客戶端連接異常終止,那么數(shù)據(jù)庫會(huì)回
滾還未完成的分支事務(wù),如果此時(shí)分支事務(wù)
已經(jīng)執(zhí)行了prepare狀態(tài),其它分支可能已
經(jīng)成功提交,那么事務(wù)會(huì)不完整。
iii.處于prepare狀態(tài)的事務(wù)不記錄binlog,如
果數(shù)據(jù)庫服務(wù)宕機(jī),則會(huì)丟失數(shù)據(jù)。
42.防止SQL注入的幾種措施:
a)使用PrepareStatement綁定變量,將輸入的
單引號(hào)轉(zhuǎn)義輸入,避免了SQL注入。
b)使用應(yīng)用程序提供的轉(zhuǎn)換函數(shù)。
c)自定義函數(shù)進(jìn)行校驗(yàn)。(正則)
43.MySQLSQLMode:REAL_AS_FLOAT.
PPES_AS_CONCAT.ANSLQUOTES.
GNORE.SPACE,ANSIO
STRICT_TRANS_TABLES嚴(yán)格模式。
資料僅供參考
44.嚴(yán)格模式不允許插入超過定義長(zhǎng)度的數(shù)
據(jù)。
45.SQLMode常見功能:
a)校驗(yàn)日期數(shù)據(jù)的合法性,(ANSI模式對(duì)非法
日期會(huì)警告,而TRADITIONAL模式則直接
提示日期非法,拒絕插入)
b)MOD(X,0)時(shí),TRADITIONAL模式會(huì)拋出警
告。
c)NO_BACKSLASH_ESCAPES會(huì)將“V變成普
通字符。
d)提供PIPES_AS_CONCAT,使得T能夠連
接字符串。
46.常見SQLMode:
a)ANSI-更符合標(biāo)準(zhǔn)SQL
資料僅供參考
b)STRICT_TRANS_TABLES-嚴(yán)格模式,能
夠用在事務(wù)表和非事務(wù)表,不允許非法日
期,不允許超出長(zhǎng)度,不正確的值會(huì)報(bào)錯(cuò)
c)TRADITIONAL-嚴(yán)格模式,能夠應(yīng)用在事
務(wù)表和事務(wù)表,出現(xiàn)錯(cuò)誤馬上回滾。
47.MySQL分區(qū):根據(jù)一定的規(guī)則,數(shù)據(jù)庫把
一個(gè)表分解成多個(gè)更小的更容易管理的部
分。邏輯上一個(gè)表或者一個(gè)索引,實(shí)際上會(huì)
有多個(gè)分區(qū),每個(gè)分區(qū)都是獨(dú)立的對(duì)象,能
夠獨(dú)立處理,也能夠作為表的一部分處理。
48.MySQL分區(qū)的優(yōu)點(diǎn):
a)和單個(gè)磁盤或者文件系統(tǒng)分區(qū)相比,能夠存
儲(chǔ)更多的數(shù)據(jù)。
優(yōu)化查詢,where查詢可能只需要查詢幾個(gè)
分區(qū),聚合函數(shù)時(shí)容易并行處理。
資料僅供參考
b)對(duì)于不需要的數(shù)據(jù)能夠刪除有關(guān)分區(qū)來達(dá)到
快速刪除的目的。
c)分散數(shù)據(jù)查詢,以獲得更大的查詢吞吐量。
49.創(chuàng)立分區(qū)表:CREATETABLEXXX
()ENGINE=INNODBPARTITIONBY
HASH(MONTH(birth_date))PARTITIONS
6;
50.MySQL的分區(qū)類型:RANGE類型(一定
范圍)、List類型(枚舉出值來分區(qū))、Hash類
型(根據(jù)分區(qū)個(gè)數(shù)分配)、key類型(與Hash類
似)
Hash分區(qū)鍵必須是INT類型,而其它三種類
型分區(qū)能夠使用其它類型(不算BLOB和
TEXT)的列來作為分區(qū)鍵。
資料僅供參考
51.MySQL創(chuàng)立分區(qū)鍵,要么表中沒有主鍵和
唯一鍵,否則分區(qū)鍵必須為主鍵或唯一鍵。
52.RANGE分區(qū):PARTITIONBY
RANGE(key)(
PARTITIONpOVALUESLESS
THAN(10),
PARTITIONp1VALUESLESS
THAN(20),
PARTITIONp2VALUESLESS
THAN(30)
)
適合場(chǎng)景:方便刪除。經(jīng)常使用分區(qū)鍵查
詢。
53.LIST分區(qū):PARTITIONBYLIST(key)(
PARTITIONpOVALUESIN(3,5),
資料僅供參考
PARTITIONp1VALUESIN(1,10),
PARTITIONp2VALUESIN(4,9)
)
更靈活。插入不在分區(qū)內(nèi)的數(shù)據(jù)會(huì)插不進(jìn),
報(bào)錯(cuò)。
54.Columns分區(qū):PARTITIONBYRANGE
COLUMNS(a,b)(
PARTITIONp01VALUESLESS
THAN(0,10),
PARTITIONp02VALUESLESS
THAN(10,10),
PARTITIONp02VALUESLESS
THAN(10,MAXVALUE),
PARTITIONp02VALUESLESS
THAN(MAXVALUE,MAXVALUE),
資料僅供參考
)
能夠支持整數(shù)、日期時(shí)間和字符串三大數(shù)據(jù)
類型,支持多列分區(qū)。
55.Hash分區(qū):PARTITIONBY[LINEAR]
HASH(storeJd)PARTITION4;
a)支持兩種分區(qū):常規(guī)HASH分區(qū)和線性
HASH分區(qū),常規(guī)HASH使用取模算法,線
性HASH使用2的幕運(yùn)算。
比如上述分區(qū),MOD(234,4)=2因此分到第
二個(gè)分區(qū)中。
b)常規(guī)HASH分區(qū)的缺點(diǎn):增加分區(qū)后,
HASH值可能需要重新計(jì)算,分區(qū)管理很復(fù)
雜。
c)線性HASH分區(qū):當(dāng)線性HASH分區(qū)個(gè)數(shù)是
2的N次幕時(shí),線性HASH的分區(qū)結(jié)果和常
資料僅供參考
規(guī)HASH分區(qū)結(jié)果一致。優(yōu)點(diǎn)是在分區(qū)維護(hù)
時(shí)處理的迅速,缺點(diǎn)是線性分區(qū)數(shù)據(jù)分布不
太平衡。
56.KEY分區(qū):不允許使用自定義表示式,需
要MySQL服務(wù)器提供的HASH函數(shù),它能
夠支持非整數(shù)分區(qū)。創(chuàng)立分區(qū)表時(shí)可不指定
分區(qū)鍵,默認(rèn)主鍵,沒有會(huì)選擇唯一鍵。也
能夠創(chuàng)立常規(guī)和線性的分區(qū)。
57.能夠?qū)σ呀?jīng)分區(qū)的表在建立子分區(qū)。
SUBPARTITIONSo
58.分區(qū)表的NULL值處理:RANGE中為最
小值,LIST必須出現(xiàn)在枚舉列表中,否則不
接受。HASH/KEY中NULL為零值。
59.RANGE&LIST分區(qū)管理:
資料僅供參考
a)刪除分區(qū):altertabletbl_namedrop
partitionp2;
b)增力口分區(qū):altertabletb_nameaddpartition
(partitionp5valueslessthan(xxx))
c)拆分分區(qū):altertabletbl_namereorganize
partitionp3into(xxx);
60.HASH&KEY分區(qū)管理:
a)合并(刪除)分區(qū):ALTERTABLE
COALESCEPARTITIONp_name;
b)減少分區(qū)數(shù)*:先刪除再重新定義。
COALESCE不能用作增加。
c)增加分區(qū):ALTERTABLEADD
PARTITIONpartitions8;(不是增加到8,而
是增加8個(gè))
61.SQL優(yōu)化的步驟:
資料僅供參考
a)經(jīng)過show[session|global]status命令了解
各種SQL的執(zhí)行頻率,能夠了解當(dāng)前應(yīng)用是
插入更新為主還是查詢操作為主。對(duì)于事務(wù)
型應(yīng)用,能夠經(jīng)過回滾操作的次數(shù)來判斷應(yīng)
用編寫是否存在問題。
b)定位執(zhí)行效率較低的SQL語句:
i.經(jīng)過慢查詢?nèi)罩緛矶ㄎ弧?/p>
ii.能夠使用showprocesslist來查看當(dāng)前
MySQL正在執(zhí)行的線程,包括線程狀態(tài),是
否鎖表等,能夠?qū)崟r(shí)查看SQL的執(zhí)行情況。
c)經(jīng)過Explain分析低效SQL的執(zhí)行計(jì)劃:
i.在SQL之前加入Explain子句,能夠打出
SQL的執(zhí)行計(jì)劃,經(jīng)過查看計(jì)劃,能夠知道
當(dāng)前的SQL是否使用了索引等。
資料僅供參考
ii.常見訪問類型:從左到右,性能最差到最
好:
ALL(全表掃描)vindex(索引全掃描)<
range(索弓I范掃描)vref(使用非唯一索引
掃描或唯一索引前綴掃描,返回一行)<
eq_ref(使用唯一索引,返回一行)vconst,
system(單表中最多有一個(gè)匹配行)<
NULL(不需要訪問表或索引,直接得到結(jié)果)
iii.經(jīng)過explainextended命令加上SQL執(zhí)行后
的showwarnings能夠看到SQL真正被執(zhí)行
之前,優(yōu)化器做了哪些SQL改寫。
d)如果使用explain不能很快定位SQL問題,
能夠選擇profile聯(lián)合分析:
資料僅供參考
i.Select@@have_profiling能夠查看數(shù)據(jù)庫是
否支持profile,默認(rèn)關(guān)閉,能夠setprofiling
=1開啟profileo
ii.經(jīng)過執(zhí)行showprofiles能夠查看當(dāng)前運(yùn)行的
Query,接著showprofileforquery
query」D能夠看到執(zhí)行過程中線程的每個(gè)狀
態(tài)和消耗的時(shí)間。
iii.仔細(xì)檢查showprofileforquery輸出,能夠
發(fā)現(xiàn)時(shí)間都消耗在sendingdata狀態(tài)中。為
了清晰看到排序結(jié)果,能夠查詢
information_filing表,按DESC
排序。
iv.還能夠showprofile(cpu、alkblockio、
contextswitch、pagefaults)forquery4;來
查看各個(gè)部分占用的時(shí)間。
資料僅供參考
v.這里對(duì)比了MylSAM和InnoDB,發(fā)現(xiàn)
InnoDB多了Sendingdata這個(gè)步驟,速度
比MylSAM慢很多。
e)MySQL5.6提供了trace文件,能夠分析優(yōu)化
器如何選擇執(zhí)行計(jì)劃:
i.首先打開trace,設(shè)置格式JSON,設(shè)置
trace最大使用內(nèi)存大小。
ii.執(zhí)行SQL語句。
iii.檢查lnformation_schema.optimizer_trace能
夠找到執(zhí)行計(jì)劃的日志。
62.MySQL的索引專題:
a)索引的幾種實(shí)現(xiàn):
i.B-Tree索引:最常見的索引類型,大部分引
擎都支持B樹索引。(能夠范圍查詢)
資料僅供參考
ii.HASH索引:只有Memory引擎支持,使用
場(chǎng)景簡(jiǎn)單。(查詢速度快,但不適合范圍查詢)
iii.R-Tree索引:空間索引是MylSAM的一個(gè)特
殊索引類型,主要用于地理空間數(shù)據(jù)類型,
一般使用較少。
iv.Full-text索引:全文索引也是MylSAM的一
個(gè)特殊索引類型,主要用于全文索引,
InnoDB從MySQL5.6版本開始提供對(duì)全文
索引的支持。
資料僅供參考
b)B-Tree索引的使用:
i.全值匹配:type:const
ii.匹配值的范查詢:type:range
iii.匹配最左索引:type:refo比如三個(gè)列形成的
聯(lián)合索引i1,i2,i3,只有從左到右使用索引進(jìn)
行查詢才算使用了索引,否則不使用索引,
如i1和i3o
最左匹配原則算是MySQL中B-Tree索引使
用的首要原則。
資料僅供參考
iv.僅僅對(duì)索引進(jìn)行查詢:type:ref,當(dāng)查詢的列
都在索引字段中時(shí),效率更高。(Using
Index,僅僅需要訪問索引,不需要根據(jù)索引
訪問表數(shù)據(jù),它也稱為覆蓋索引掃描)
v.匹配列前綴:type:range。使用了前綴索
引,而且只查詢以XX開頭的信息,這時(shí)
Usingwhere,需要索引回表查詢。
vi.索引匹配精確,其它條件是范圍匹配:
type:refo按照索引的精確匹配來選擇。
vii.如果列名是索引,那么column_nameisnull
會(huì)使用索引。
viii.如果查詢條件中包含索引條件,首先使用該
條件進(jìn)行過濾,接著回表使用普通條件進(jìn)行
過濾查詢。這種情況在MySQL5.6中進(jìn)行了
提升,使用ICP優(yōu)化降低了不必要的10訪
資料僅供參考
問,在回表的過程中就已經(jīng)排除了不符合條
件的記錄。
C)不能使用索引的場(chǎng)合:
i.LIKE以%開頭,不能使用索引。解決辦法:
先訪問索引表,select索引字段,找到符合
like%xxx%條件的記錄,然后再select回表
查詢,省去了全表掃描的I。請(qǐng)求。
ii.數(shù)據(jù)類型出現(xiàn)隱式轉(zhuǎn)換時(shí)不會(huì)使用索引。如
字符串不加單引號(hào),則不使用索引,使用全
表掃描。
iii.復(fù)合索引查詢條件不包含最左邊部分,不使
用復(fù)合索引。
iv.如果MySQL估計(jì)使用索引比全表掃描更
慢,則不使用索引。(如全表查詢輸出的情
況,使用索引浪費(fèi)了查詢索引的時(shí)間)
資料僅供參考
v.用or分割開的條件,如果or前的條件中列
有索引,而后面的列沒有索引,那么涉及的
索引都不會(huì)被用到。
d)簡(jiǎn)單實(shí)用的優(yōu)化方法:
i.定期分析和檢查表,使得SQL能夠生成正確
的執(zhí)行計(jì)劃,檢查表的作用是檢查一個(gè)或多
個(gè)表是否有錯(cuò)誤。
ii.定期優(yōu)化表:optimizetabletb_name,能夠
清理由于刪除或者更新造成的碎片浪費(fèi)。只
對(duì)MylSAM、BDB、InnoDB有效。
63.常見的SQL優(yōu)化:
a)大批?導(dǎo)入數(shù)據(jù):
i.使用loaddatainfile'address'intotable
tb_name,
資料僅供參考
ii.在導(dǎo)入之前關(guān)閉索引,導(dǎo)入之后打開索引
ALTERTABLEtbl_name
DISABLE/ENABLEKEYS
iii.關(guān)閉唯一性校驗(yàn),setunique_checks=0;
iv.關(guān)閉自動(dòng)提交,導(dǎo)入結(jié)束后再打開
b)優(yōu)化INSERT語句:
i.采用多值插入,values。,(),…
ii.如果不同客戶插入很多行,能夠經(jīng)過insert
delayed語句得到更高的速度,使得insert的
數(shù)據(jù)存放到內(nèi)存隊(duì)列中,并不真正寫入磁
盤。
iii.將索引文件和數(shù)據(jù)文件分開存放。
iv.如果進(jìn)行批■插入,能夠增加
bulk_insert_buffer_size來提高速度,只對(duì)
MylSAM有效。
資料僅供參考
v.使用loaddatainfile替換insert,速度加快
20倍。
c)優(yōu)化ORDERBY語句:
i.MySQL有兩種排序方式,第一種經(jīng)過有序索
引順序掃描直接返回有序的數(shù)據(jù),這種情況
在explain的時(shí)候返回Usingindex,不需要
額外排序。另一種經(jīng)過返回?cái)?shù)據(jù)進(jìn)行排序,
一般稱為Filesort排序,所有不是經(jīng)過索引
直接返回排序結(jié)構(gòu)的排序都叫Filesort排
序。
ii.OrderBy的優(yōu)化目標(biāo)是盡■減少額外的排
序,經(jīng)過索引直接返回有序數(shù)據(jù)。WHERE
條件和ORDERBY條件使用相同的索引,
而且ORDERBY的順序和索引順序相同,
資料僅供參考
而且ORDERBY的字段都是升序或降序
的,只有這樣才能減少額外的排序。
Hi.對(duì)于不可避免的Filesort排序,有兩種排序
算法:
1.兩次掃描算法:根據(jù)條件取出排序字段和行
指針信息,之后在排序區(qū)sortbuffer中排
序。優(yōu)點(diǎn)是排序時(shí)內(nèi)存開銷較少,缺點(diǎn)是第
二次讀取的隨機(jī)IO比較大。
2.一次掃描算法:一次性取出滿足條件的行的
所有字段,然后在排序去sortbuffer中排序
后直接輸出結(jié)果集。排序時(shí)內(nèi)存開銷比較
大,但排序效率比兩次掃描算法高。
d)優(yōu)化GroupBy語句:
資料僅供參考
i.GroupBy默認(rèn)根據(jù)后面的字段進(jìn)行排序,如
果不希望額外的排序,能夠使用ORDERBY
NULL來取消排序。
e)優(yōu)化嵌套查詢:
i.使用表連接JOIN替代嵌套查詢,由于嵌套
查詢需在內(nèi)存中創(chuàng)立臨時(shí)表來完成這個(gè)邏輯
上需要兩個(gè)步驟的查詢工作。
f)優(yōu)化OR條件:
i.MySQL處理OR條件,實(shí)際上是對(duì)每個(gè)條件
都查詢一次,然后用Union合并這些查詢,
因此對(duì)每個(gè)OR條件都需要建索引
g)優(yōu)化分頁查詢:
i.使用limitm,n時(shí),MySQL實(shí)際上會(huì)全表掃
描,然后獲得需要的記錄,丟棄不需要的記
錄,這樣查詢和排序的代價(jià)很高:
資料僅供參考
ii.一種方法是表關(guān)聯(lián),和limitm,n的索引進(jìn)行
內(nèi)連接查詢,能夠使用索引加快查詢,減少
查詢的行數(shù)。
iii.另一種方法是記錄上一次翻頁的記錄數(shù),然
后在查詢時(shí)使用范圍查詢,并用limitn來查
詢,這樣也不需要全表查詢
h)使用SQL提示:顯式加入提示達(dá)到優(yōu)化目
的:
i.USEINDEX(XX):添力口USEINDEX來告訴
MySQL參考哪個(gè)索引列表,能夠讓MySQL
不再考慮其它可用的索引。
ii.IGNOREINDEX(XX):指定需要忽略的索引
iii.FORCEINDEX(XX):有些時(shí)候,MySQL認(rèn)
為全表掃描會(huì)比索引查詢更快,這時(shí)候能夠
資料僅供參考
使用FORCEINDEX(XX)來強(qiáng)制使用索引查
詢。
64.常見SQL技巧:
a)使用正則表示式:
用"Fabcr等等。能夠避免使用過多的like來
進(jìn)行匹配,方便查詢。
b)使用RAND()來提取隨機(jī)行:
資料僅供參考
i.Select*fromxxorderbyrand()limit5;能夠
隨機(jī)獲取行數(shù)據(jù)。
c)利用GROUPBY的WITHROLLUP子句:
i.能夠簡(jiǎn)單地實(shí)現(xiàn)合計(jì),但不能和orderby一
起使用,Limit子句放在withrollup之后。
d)使用bitgroupfunctions做統(tǒng)計(jì):
i.Bit_or(字段)…groupby另外字段。能夠?qū)?/p>
現(xiàn)符合聚組條件的條目的指定字段進(jìn)行位或
操作。
ii.Bit_and(字段)...groupbyxxxo同上,與操
作。
iii.該方法能夠簡(jiǎn)潔的數(shù)據(jù)表示豐富的信息,節(jié)
省存儲(chǔ)空間。
資料僅供參考
e)數(shù)據(jù)庫名、表名的大小寫會(huì)由不同的操作系
統(tǒng)而不同,需要關(guān)注
lower_case_tables_name屬性來設(shè)置。
f)使用MylSAM存儲(chǔ)引擎創(chuàng)立表時(shí),能夠使用
外鍵約束語句,只是外鍵不起作用,在show
createtabletb_name的時(shí)候也不顯示出來,
只是備忘和注釋的作用。
65.優(yōu)化數(shù)據(jù)庫對(duì)象:
a)優(yōu)化表的數(shù)據(jù)類型,盡■選擇符合條件的占
用空間最小的數(shù)據(jù)類型。
b)經(jīng)過拆分表來提高表的訪問效率:
i.垂直拆分:一些列不常見時(shí)能夠拆分,能夠
使數(shù)據(jù)行變小,一頁能夠放更多的信息,查
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度股份代持與代管合同協(xié)議2篇
- 二零二五年度水利工程監(jiān)測(cè)與施工測(cè)量服務(wù)合同范本3篇
- 二零二五版新能源設(shè)備搬運(yùn)安裝合同細(xì)則3篇
- 2025年度航空航天器發(fā)動(dòng)機(jī)安裝與測(cè)試合同3篇
- 二零二五年度綠色交通設(shè)施招標(biāo)投標(biāo)合同6篇
- 展會(huì)參展資格合同(2篇)
- 二零二五版水利工程鋼筋加工與分包合同規(guī)范范本3篇
- 二零二五版室內(nèi)外景觀裝飾一體化合同3篇
- 2025年度文化演出活動(dòng)承辦合同3篇
- 二零二五版單位職工食堂員工健康體檢承包合同2篇
- 中建集團(tuán)面試自我介紹
- 《工業(yè)園區(qū)節(jié)水管理規(guī)范》
- 警校生職業(yè)生涯規(guī)劃
- 意識(shí)障礙患者的護(hù)理診斷及措施
- 2024版《53天天練單元?dú)w類復(fù)習(xí)》3年級(jí)語文下冊(cè)(統(tǒng)編RJ)附參考答案
- 2025企業(yè)年會(huì)盛典
- 215kWh工商業(yè)液冷儲(chǔ)能電池一體柜用戶手冊(cè)
- 場(chǎng)地平整施工組織設(shè)計(jì)-(3)模板
- 交通設(shè)施設(shè)備供貨及技術(shù)支持方案
- 美容美發(fā)店火災(zāi)應(yīng)急預(yù)案
- 餐車移動(dòng)食材配送方案
評(píng)論
0/150
提交評(píng)論