1、什么是關(guān)系型數(shù)據(jù)庫?什么是非關(guān)系型數(shù)據(jù)庫?
關(guān)系型數(shù)據(jù)庫概念:可以理解為一第二維表,每個關(guān)系都具有一個關(guān)系名,就是通常說的表名,是指愛用了關(guān)系模型來組織的數(shù)據(jù)庫
非關(guān)系型數(shù)據(jù)庫:關(guān)系型數(shù)據(jù)庫暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
2、Redis、Memcached和MongoDB優(yōu)點和局限性?
Memcached
Memcached的優(yōu)點:
Memcached可以利用多核優(yōu)勢,單實例吞吐量極高,可以達到幾十萬QPS(取決于key、value的字節(jié)大小以及服務(wù) 器硬件性能,日常環(huán)境中QPS高峰大約在4-6w左右)。適用于大程度扛量。
支持直接配置為session handle。
Memcached的局限性:
只支持簡單的key/value數(shù)據(jù)結(jié)構(gòu),不像Redis可以支持豐富的數(shù)據(jù)類型。
無法進行持久化,數(shù)據(jù)不能備份,只能用于緩存使用,且重啟后數(shù)據(jù)全部丟失。
無法進行數(shù)據(jù)同步,不能將MC中的數(shù)據(jù)遷移到其他MC實例中。
Memcached內(nèi)存分配采用Slab Allocation機制管理內(nèi)存,value大小分布差異較大時會造成內(nèi)存利用率降低,并引 發(fā)低利用率時依然出現(xiàn)踢出等問題。需要用戶注重value設(shè)計。
Redis
Redis的優(yōu)點:
支持多種數(shù)據(jù)結(jié)構(gòu),如 string(字符串)、 list(雙向鏈表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基數(shù)估算)
支持持久化操作,可以進行aof及rdb數(shù)據(jù)持久化到磁盤,從而進行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù)等操作,較好的防止數(shù)據(jù)丟失的手段。
支持通過Replication進行數(shù)據(jù)復(fù)制,通過master-slave機制,可以實時進行數(shù)據(jù)的同步復(fù)制,支持多級復(fù)制和增量復(fù)制,master-slave機制是Redis進行HA的重要手段。
單線程請求,所有命令串行執(zhí)行,并發(fā)情況下不需要考慮數(shù)據(jù)一致性問題。
支持pub/sub消息訂閱機制,可以用來進行消息訂閱與通知。
支持簡單的事務(wù)需求,但業(yè)界使用場景很少,并不成熟。
Redis的局限性:
Redis只能使用單線程,性能受限于CPU性能,故單實例CPU高才可能達到5-6wQPS每秒(取決于數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)大小以及服務(wù)器硬件性能,日常環(huán)境中QPS高峰大約在1-2w左右)。
支持簡單的事務(wù)需求,但業(yè)界使用場景很少,并不成熟,既是優(yōu)點也是缺點。
Redis在string類型上會消耗較多內(nèi)存,可以使用dict(hash表)壓縮存儲以降低內(nèi)存耗用。
Mogodb
mogodb是一種文檔性的數(shù)據(jù)庫。先解釋一下文檔的數(shù)據(jù)庫,即可以存放xml、json、bson類型系那個的數(shù)據(jù)。這些數(shù)據(jù)具備自述性(self-describing),呈現(xiàn)分層的樹狀數(shù)據(jù)結(jié)構(gòu)。redis可以用hash存放簡單關(guān)系型數(shù)據(jù)。
mogodb存放json格式數(shù)據(jù)。
適合場景:事件記錄、內(nèi)容管理或者博客平臺,比如評論系統(tǒng)。
3、Redis兩種保存快照的方式是什么?他們有什么區(qū)別?
快照模式和AOF模式
快照模式:將數(shù)據(jù)保存在內(nèi)存中,再保存到磁盤中,性能高,但是可能會有少量數(shù)據(jù)丟失
AOF模式:性能差,一致性要求高,可以選用這種方法,一般生產(chǎn)環(huán)境兩種都開
4、什么是主???什么是外???什么是索引?索引的優(yōu)缺點是什么?
主?。褐麝P(guān)鍵字(主鍵,primary key)是被挑選出來,作表的行的惟一標識的候選關(guān)鍵字。一個表只有一個主關(guān) 鍵字。主關(guān)鍵字又可以稱為主鍵。 主鍵可以由一個字段,也可以由多個字段組成,分別成為單字段主鍵或多字段主鍵。
外健:表的外鍵就是 這個字段 是關(guān)聯(lián)著別的表,且是別的表的主鍵。
索引:相當于書中的目錄
優(yōu)點:加快查詢表記錄的速度
缺點:會減慢對表記錄的寫(insert upadate delete)的速度
索引會占用物理磁盤空間
db.frm 保存表結(jié)構(gòu)
db.MYD 保存表里數(shù)據(jù)
db.MYI 保存索引信息文件
5、主健、外健的作用是什么?并說明主健特點?
主健作用:1)保證實體的完整性;
2)加快數(shù)據(jù)庫的操作速度
3)在表中添加新記錄時,ACCESS會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重 復(fù)。
4) ACCESS自動按主鍵值的順序顯示表中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示表中的 記錄。
特點 :
1) 一個表中只能有一個主鍵。如果在其他字段上建立主鍵,則原來的主鍵就會取消。在ACCESS中,雖 然主鍵不是必需的,但最好為每個表都設(shè)置一個主鍵。
2)主鍵的值不可重復(fù),也不可為空(NULL)。
外健作用: 使兩張表形成關(guān)聯(lián),外鍵只能引用外表中的列的值!
6、什么是存儲引擎?
MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲在文件(或者內(nèi)存)中。這些技術(shù)中的每一種技術(shù)都使用不同的存儲機制、 索引技巧、鎖定水平并且最終提供廣泛的不同的功能和能力。
通過選擇不同的技術(shù), 你能夠獲得額外的速度或者功能,從而改善你的應(yīng)用的整體功能。
7、指出MySQL引擎中Innodb與MyIsam的區(qū)別,生產(chǎn)環(huán)境中怎么選用存儲引擎?
InnoDB: 支持行鎖,支持事務(wù),支持外健,批量插入速度慢,內(nèi)存使用高,空間使用高,數(shù)據(jù)可壓縮,獨享表空 間
MyISAM:支持表鎖,不支持事務(wù),不支持外健,批量插入速度快,內(nèi)存使用低,空間使用低,數(shù)據(jù)不可壓縮,共 享表空間
在一般的既有讀又有寫的業(yè)務(wù)中,建議選用Innodb引擎。
只有讀沒有寫的業(yè)務(wù)就用MyIsam引擎
8、什么是幻讀?什么是臟讀?什么是不可重復(fù)讀?
幻讀:是指當事務(wù)不是獨立執(zhí)行時發(fā)生的一種現(xiàn)象,例如第一個事務(wù)對一個表中的數(shù)據(jù)進行了修改這種修改涉及 到表中的全部數(shù)據(jù)行。同時第二個事務(wù)也修改這個表中的數(shù)據(jù)
這種修改是向表中插入一行新數(shù)據(jù)。那么以后就會發(fā)生操作第一個事務(wù)的用戶發(fā)現(xiàn)表中還有沒有修改的數(shù) 據(jù)行,就好象發(fā)生了幻覺一樣。
臟讀:臟讀就是指當一個事務(wù)正在訪問數(shù)據(jù)并且對數(shù)據(jù)進行了修改而這種修改還沒有提交到數(shù)據(jù)庫中,這時另外 一個事務(wù)也訪問這個數(shù)據(jù),然后使用了這個數(shù)據(jù),實際這個數(shù)據(jù)并沒有提交還不能正常使用
不可重復(fù)讀:是指在一個事務(wù)內(nèi)多次讀同一數(shù)據(jù)。在這個事務(wù)還沒有結(jié)束時另外一個事務(wù)也訪問該同一數(shù)據(jù)。那么在第一個事務(wù)中的兩次讀數(shù)據(jù)之間,由于第二個事務(wù)的修改,那么第一個事務(wù)兩次讀到的的數(shù)據(jù)可能是不一樣的。這樣在一個事務(wù)內(nèi)兩次讀到的數(shù)據(jù)是不一樣的因此稱為是不可重復(fù)讀。
9、什么是事務(wù)?什么是回滾?
事務(wù):你的一次sql操作從開始執(zhí)行到正確執(zhí)行結(jié)速的這個過程稱為事務(wù)
事務(wù)回滾:恢復(fù)到未操作一切動作前的狀態(tài)
10、事務(wù)隔離的四種級別是哪四種?分別代表什么意思?
未提交讀(read uncommitted):會出現(xiàn)臟讀、不可重復(fù)讀和幻讀。
提交讀(read committed):會出現(xiàn)不可重復(fù)讀和幻讀。
重復(fù)讀(repeatable read):會出現(xiàn)幻讀。
串行化(serializable):隔離級別高,不允許出現(xiàn)臟讀、不可重復(fù)讀和幻讀。
11、事務(wù)有幾大特性?分別代表什么意思?
事務(wù)具有四個特征:原子性( Atomicity )、一致性( Consistency )、隔離性( Isolation )和持續(xù)性( Durability )。這四個特性簡稱為 ACID 特性。
原子性: 事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包含的各操作要么都做,要么都不做
一致性: 事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。因此當數(shù)據(jù)庫只包含成功事務(wù)提交的結(jié)果時,就說數(shù)據(jù)庫處于一致性狀態(tài)。如果數(shù)據(jù)庫系統(tǒng) 運行中發(fā)生故障,有些事務(wù)尚未完成就被迫中斷,這些未完成事務(wù)對數(shù)據(jù)庫所做的修改有一部分已寫入物理數(shù)據(jù)庫,這時數(shù)據(jù)庫就處于一種不正確的狀態(tài),或者說是 不一致的狀態(tài)。
隔離性:一個事務(wù)的執(zhí)行不能其它事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對其它并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。
持續(xù)性:也稱永久性,指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中的數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其它操作或故障不應(yīng)該對其執(zhí)行結(jié)果有任何影響
12、數(shù)據(jù)庫默認的三個庫是什么庫?分別代表什么意思?
information_schema: 主要存儲系統(tǒng)中的一些數(shù)據(jù)庫對像信息,如用戶信息,列信息,權(quán)限信息,字符集信息和分區(qū)信息等
performance_schema: 主要存儲數(shù)據(jù)庫服務(wù)器性能參數(shù)
mysql:主要存儲系統(tǒng)的用戶權(quán)限信息
test:該數(shù)據(jù)庫為MySQL數(shù)據(jù)庫管理系統(tǒng)自動創(chuàng)建的測試數(shù)據(jù)庫,任何用戶都可以使用
13、MySQL鎖粒度是什么?MySQL有幾種鎖級別?說一下他的特性?
就是通常我們所說的鎖級別。
MySQL有三種鎖的級別:頁級、表級、行級。
MySQL這3種鎖的特性可大致歸納如下:
表級鎖:開銷小,加鎖快;不會出現(xiàn)死鎖;鎖定粒度大,發(fā)生鎖沖突的概率高,并發(fā)度最低。
行級鎖:開銷大,加鎖慢;會出現(xiàn)死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低,并發(fā)度也高。
頁面鎖:開銷和加鎖時間界于表鎖和行鎖之間;會出現(xiàn)死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般
14、說一下數(shù)據(jù)庫的幾種備份方式和包啟的意思?
冷備(cold backup):需要關(guān)mysql服務(wù),讀寫請求均不允許狀態(tài)下進行;
溫備(warm backup): 服務(wù)在線,但僅支持讀請求,不允許寫請求;
熱備(hot backup):備份的同時,業(yè)務(wù)不受影響。
15、簡述如何搭建主從數(shù)據(jù)庫以及工作模式?
搭建:1、主數(shù)據(jù)庫修改my.cnf配置文件,打開log-bin功能,設(shè)置server-id,重啟服務(wù)
2、在主服務(wù)器上授權(quán)服戶可以從 從服務(wù)器 上連接自已,且有拷貝數(shù)據(jù)的權(quán)限
3、從服務(wù)器上修改my.cnf文件,設(shè)置server-id,重啟服務(wù)
4、在從服務(wù)器上使用授權(quán)用戶測試是否能連接登陸主數(shù)據(jù)庫服務(wù)器
5、從服務(wù)器上建立同步賬戶信息
工作模式:從服務(wù)器的IO線程連接主數(shù)據(jù)庫的IO線程,并從主服務(wù)器獲取二進制日志,保存為本地的中繼日志,
接著通過SQL線程執(zhí)行中繼日志里面的SQL語句,從而使主從庫保持一致
16、主從數(shù)據(jù)庫不能同步怎么辦?
1、通過跳過錯誤來繼續(xù)執(zhí)行同步,適用于對數(shù)據(jù)一致性不是那么高的情況下
set global sql_slave_skip_counter =1;
2、重新做主從,完全同步
該方法適用于主從庫數(shù)據(jù)相差較大,或者要求數(shù)據(jù)完全統(tǒng)一的情況
熱備方式修復(fù)主從庫
操作過程
1)先關(guān)閉從數(shù)據(jù)庫
2)記錄主庫的log_file文件名和位置點
3)導(dǎo)出主庫的數(shù)據(jù)庫,拷貝到從庫機器上
4)從庫刪除以前的老庫,導(dǎo)進從主庫拷貝過來的新庫
5)changes主庫的Log_file和位置點
6)開啟從庫
17、怎么清理數(shù)據(jù)庫碎片?
查看哪個表空間最占用空間
對大表進行move
18、MariaDB集群的功能和優(yōu)勢是什么?
功能:
同步復(fù)制
真正的multi-master,即所有節(jié)點可以同時讀寫數(shù)據(jù)庫
自動的節(jié)點成員控制,失效節(jié)點自動被清除
新節(jié)點加入數(shù)據(jù)自動復(fù)制
真正的并行復(fù)制,行級
用戶可以直接連接集群,使用感受上與MySQL完全一致
優(yōu)勢:
因為是多主,所以不存在Slave lag(延遲)
不存在丟失交易的情況
同時具有讀和寫的擴展能力
更小的客戶端延遲
節(jié)點間數(shù)據(jù)是同步的,而Master/Slave模式是異步的,不同slave上的binlog可能是不同的
19、數(shù)據(jù)庫有哪幾種日志,分別有什么作用?
二進制日志:該日志文件會以二進制形式記錄數(shù)據(jù)庫的各種操作,但是卻不記錄查詢操作
錯誤日志:該日志文件會記錄MySQL服務(wù)器啟動、關(guān)閉和運行時出錯等信息
慢查詢?nèi)罩荆河涗泩?zhí)行時間超過指定時間的各種操作,通過工具分析慢查詢?nèi)罩究梢远▊僊ySQL服 務(wù)器性能瓶頸所在。
通用查詢?nèi)罩荆涸撊罩居涗汳ySQL服務(wù)器的啟動和關(guān)閉信息、客戶端的連接信息、更新數(shù)據(jù)記錄 SQL語句和查詢數(shù)據(jù)記錄SQL語句
20、MySQL出現(xiàn)sql鎖是怎么回事,如何優(yōu)化?
使用show full processlist查看鎖表的命令,再確定是sql語句的效率問題,還是沒建索引,或是數(shù)據(jù)庫引擎的 問題。
21、如何優(yōu)化MySQL?
1、對查詢頻繁的表加主鍵或索引
2、對重要數(shù)據(jù)的mysql做主主或主從的高可用與讀寫分離
3、對數(shù)據(jù)量大的表或庫,進行分表或分庫,減輕總表大小。
4、優(yōu)化my.cnf在內(nèi)存參數(shù)。提高內(nèi)存的使用率。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當前名稱:Linux運維(數(shù)據(jù)庫專題)面試題-創(chuàng)新互聯(lián)
文章地址:http://chinadenli.net/article14/cdscge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、做網(wǎng)站、虛擬主機、商城網(wǎng)站、云服務(wù)器、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容