溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux運(yùn)維(數(shù)據(jù)庫(kù)專題)面試題

發(fā)布時(shí)間:2020-05-25 14:40:16 來(lái)源:網(wǎng)絡(luò) 閱讀:2608 作者:yht_1990 欄目:數(shù)據(jù)庫(kù)

1、什么是關(guān)系型數(shù)據(jù)庫(kù)?什么是非關(guān)系型數(shù)據(jù)庫(kù)?

  關(guān)系型數(shù)據(jù)庫(kù)概念:可以理解為一第二維表,每個(gè)關(guān)系都具有一個(gè)關(guān)系名,就是通常說(shuō)的表名,是指愛(ài)用了關(guān)系模型來(lái)組織的數(shù)據(jù)庫(kù)

  非關(guān)系型數(shù)據(jù)庫(kù):關(guān)系型數(shù)據(jù)庫(kù)暴露了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來(lái)的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。


2、Redis、Memcached和MongoDB優(yōu)點(diǎn)和局限性?

   Memcached

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

   Memcached可以利用多核優(yōu)勢(shì),單實(shí)例吞吐量極高,可以達(dá)到幾十萬(wàn)QPS(取決于key、value的字節(jié)大小以及服務(wù)   器硬件性能,日常環(huán)境中QPS高峰大約在4-6w左右)。適用于最大程度扛量。

   支持直接配置為session handle。

 

   Memcached的局限性:

   只支持簡(jiǎn)單的key/value數(shù)據(jù)結(jié)構(gòu),不像Redis可以支持豐富的數(shù)據(jù)類型。  

   無(wú)法進(jìn)行持久化,數(shù)據(jù)不能備份,只能用于緩存使用,且重啟后數(shù)據(jù)全部丟失。

   無(wú)法進(jìn)行數(shù)據(jù)同步,不能將MC中的數(shù)據(jù)遷移到其他MC實(shí)例中。

   Memcached內(nèi)存分配采用Slab Allocation機(jī)制管理內(nèi)存,value大小分布差異較大時(shí)會(huì)造成內(nèi)存利用率降低,并引    發(fā)低利用率時(shí)依然出現(xiàn)踢出等問(wèn)題。需要用戶注重value設(shè)計(jì)。


   Redis

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

   支持多種數(shù)據(jù)結(jié)構(gòu),如 string(字符串)、 list(雙向鏈表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基數(shù)估算)

   支持持久化操作,可以進(jìn)行aof及rdb數(shù)據(jù)持久化到磁盤,從而進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù)等操作,較好的防止數(shù)據(jù)丟失的手段。

   支持通過(guò)Replication進(jìn)行數(shù)據(jù)復(fù)制,通過(guò)master-slave機(jī)制,可以實(shí)時(shí)進(jìn)行數(shù)據(jù)的同步復(fù)制,支持多級(jí)復(fù)制和增量復(fù)制,master-slave機(jī)制是Redis進(jìn)行HA的重要手段。

   單線程請(qǐng)求,所有命令串行執(zhí)行,并發(fā)情況下不需要考慮數(shù)據(jù)一致性問(wèn)題。

   支持pub/sub消息訂閱機(jī)制,可以用來(lái)進(jìn)行消息訂閱與通知。

   支持簡(jiǎn)單的事務(wù)需求,但業(yè)界使用場(chǎng)景很少,并不成熟。


   Redis的局限性:

   Redis只能使用單線程,性能受限于CPU性能,故單實(shí)例CPU最高才可能達(dá)到5-6wQPS每秒(取決于數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)大小以及服務(wù)器硬件性能,日常環(huán)境中QPS高峰大約在1-2w左右)。

   支持簡(jiǎn)單的事務(wù)需求,但業(yè)界使用場(chǎng)景很少,并不成熟,既是優(yōu)點(diǎn)也是缺點(diǎn)。

   Redis在string類型上會(huì)消耗較多內(nèi)存,可以使用dict(hash表)壓縮存儲(chǔ)以降低內(nèi)存耗用。


   Mogodb

   mogodb是一種文檔性的數(shù)據(jù)庫(kù)。先解釋一下文檔的數(shù)據(jù)庫(kù),即可以存放xml、json、bson類型系那個(gè)的數(shù)據(jù)。這些數(shù)據(jù)具備自述性(self-describing),呈現(xiàn)分層的樹(shù)狀數(shù)據(jù)結(jié)構(gòu)。redis可以用hash存放簡(jiǎn)單關(guān)系型數(shù)據(jù)。

   mogodb存放json格式數(shù)據(jù)。

   適合場(chǎng)景:事件記錄、內(nèi)容管理或者博客平臺(tái),比如評(píng)論系統(tǒng)。


3、Redis兩種保存快照的方式是什么?他們有什么區(qū)別?

   快照模式和AOF模式

   快照模式:將數(shù)據(jù)保存在內(nèi)存中,再保存到磁盤中,性能高,但是可能會(huì)有少量數(shù)據(jù)丟失

   AOF模式:性能差,一致性要求高,可以選用這種方法,一般生產(chǎn)環(huán)境兩種都開(kāi)

   

4、什么是主?。渴裁词峭饨??什么是索引?索引的優(yōu)缺點(diǎn)是什么?

   主?。褐麝P(guān)鍵字(主鍵,primary key)是被挑選出來(lái),作表的行的惟一標(biāo)識(shí)的候選關(guān)鍵字。一個(gè)表只有一個(gè)主關(guān)    鍵字。主關(guān)鍵字又可以稱為主鍵。 主鍵可以由一個(gè)字段,也可以由多個(gè)字段組成,分別成為單字段主鍵或多字段主鍵。 

   外?。罕淼耐怄I就是 這個(gè)字段 是關(guān)聯(lián)著別的表,且是別的表的主鍵。

   索引:相當(dāng)于書中的目錄 

   優(yōu)點(diǎn):加快查詢表記錄的速度

   缺點(diǎn):會(huì)減慢對(duì)表記錄的寫(insert upadate delete)的速度

   索引會(huì)占用物理磁盤空間

   db.frm 保存表結(jié)構(gòu)

   db.MYD 保存表里數(shù)據(jù)

   db.MYI 保存索引信息文件


5、主健、外健的作用是什么?并說(shuō)明主健特點(diǎn)?

   主健作用:1)保證實(shí)體的完整性; 

             2)加快數(shù)據(jù)庫(kù)的操作速度 

             3)在表中添加新記錄時(shí),ACCESS會(huì)自動(dòng)檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重                     復(fù)。 

             4) ACCESS自動(dòng)按主鍵值的順序顯示表中的記錄。如果沒(méi)有定義主鍵,則按輸入記錄的順序顯示表中的                 記錄。 

       特點(diǎn) :

             1) 一個(gè)表中只能有一個(gè)主鍵。如果在其他字段上建立主鍵,則原來(lái)的主鍵就會(huì)取消。在ACCESS中,雖                 然主鍵不是必需的,但最好為每個(gè)表都設(shè)置一個(gè)主鍵。 

             2)主鍵的值不可重復(fù),也不可為空(NULL)。

   外健作用: 使兩張表形成關(guān)聯(lián),外鍵只能引用外表中的列的值! 


6、什么是存儲(chǔ)引擎?         

   MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲(chǔ)在文件(或者內(nèi)存)中。這些技術(shù)中的每一種技術(shù)都使用不同的存儲(chǔ)機(jī)制、    索引技巧、鎖定水平并且最終提供廣泛的不同的功能和能力。

   通過(guò)選擇不同的技術(shù),  你能夠獲得額外的速度或者功能,從而改善你的應(yīng)用的整體功能。

   

7、指出MySQL引擎中Innodb與MyIsam的區(qū)別,生產(chǎn)環(huán)境中怎么選用存儲(chǔ)引擎?        

   InnoDB: 支持行鎖,支持事務(wù),支持外健,批量插入速度慢,內(nèi)存使用高,空間使用高,數(shù)據(jù)可壓縮,獨(dú)享表空             間

   MyISAM:支持表鎖,不支持事務(wù),不支持外健,批量插入速度快,內(nèi)存使用低,空間使用低,數(shù)據(jù)不可壓縮,共             享表空間

   在一般的既有讀又有寫的業(yè)務(wù)中,建議選用Innodb引擎。

   只有讀沒(méi)有寫的業(yè)務(wù)就用MyIsam引擎


8、什么是幻讀?什么是臟讀?什么是不可重復(fù)讀?

   幻讀:是指當(dāng)事務(wù)不是獨(dú)立執(zhí)行時(shí)發(fā)生的一種現(xiàn)象,例如第一個(gè)事務(wù)對(duì)一個(gè)表中的數(shù)據(jù)進(jìn)行了修改這種修改涉及          到表中的全部數(shù)據(jù)行。同時(shí)第二個(gè)事務(wù)也修改這個(gè)表中的數(shù)據(jù)

         這種修改是向表中插入一行新數(shù)據(jù)。那么以后就會(huì)發(fā)生操作第一個(gè)事務(wù)的用戶發(fā)現(xiàn)表中還有沒(méi)有修改的數(shù)          據(jù)行,就好象發(fā)生了幻覺(jué)一樣。

   臟讀:臟讀就是指當(dāng)一個(gè)事務(wù)正在訪問(wèn)數(shù)據(jù)并且對(duì)數(shù)據(jù)進(jìn)行了修改而這種修改還沒(méi)有提交到數(shù)據(jù)庫(kù)中,這時(shí)另外   一個(gè)事務(wù)也訪問(wèn)這個(gè)數(shù)據(jù),然后使用了這個(gè)數(shù)據(jù),實(shí)際這個(gè)數(shù)據(jù)并沒(méi)有提交還不能正常使用

   不可重復(fù)讀:是指在一個(gè)事務(wù)內(nèi)多次讀同一數(shù)據(jù)。在這個(gè)事務(wù)還沒(méi)有結(jié)束時(shí)另外一個(gè)事務(wù)也訪問(wèn)該同一數(shù)據(jù)。那么在第一個(gè)事務(wù)中的兩次讀數(shù)據(jù)之間,由于第二個(gè)事務(wù)的修改,那么第一個(gè)事務(wù)兩次讀到的的數(shù)據(jù)可能是不一樣的。這樣在一個(gè)事務(wù)內(nèi)兩次讀到的數(shù)據(jù)是不一樣的因此稱為是不可重復(fù)讀。 


9、什么是事務(wù)?什么是回滾?

   事務(wù):你的一次sql操作從開(kāi)始執(zhí)行到正確執(zhí)行結(jié)速的這個(gè)過(guò)程稱為事務(wù)

   事務(wù)回滾:恢復(fù)到未操作一切動(dòng)作前的狀態(tài)


10、事務(wù)隔離的四種級(jí)別是哪四種?分別代表什么意思?

    未提交讀(read uncommitted):會(huì)出現(xiàn)臟讀、不可重復(fù)讀和幻讀。

    提交讀(read committed):會(huì)出現(xiàn)不可重復(fù)讀和幻讀。

    重復(fù)讀(repeatable read):會(huì)出現(xiàn)幻讀。

    串行化(serializable):隔離級(jí)別最高,不允許出現(xiàn)臟讀、不可重復(fù)讀和幻讀。


11、事務(wù)有幾大特性?分別代表什么意思?

    事務(wù)具有四個(gè)特征:原子性( Atomicity )、一致性( Consistency )、隔離性( Isolation )和持續(xù)性( Durability )。這四個(gè)特性簡(jiǎn)稱為 ACID 特性。

    原子性: 事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,事務(wù)中包含的各操作要么都做,要么都不做 

    一致性: 事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。因此當(dāng)數(shù)據(jù)庫(kù)只包含成功事務(wù)提交的結(jié)果時(shí),就說(shuō)數(shù)據(jù)庫(kù)處于一致性狀態(tài)。如果數(shù)據(jù)庫(kù)系統(tǒng) 運(yùn)行中發(fā)生故障,有些事務(wù)尚未完成就被迫中斷,這些未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的修改有一部分已寫入物理數(shù)據(jù)庫(kù),這時(shí)數(shù)據(jù)庫(kù)就處于一種不正確的狀態(tài),或者說(shuō)是 不一致的狀態(tài)。 

    隔離性:一個(gè)事務(wù)的執(zhí)行不能其它事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)其它并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。 

    持續(xù)性:也稱永久性,指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其它操作或故障不應(yīng)該對(duì)其執(zhí)行結(jié)果有任何影響


12、數(shù)據(jù)庫(kù)默認(rèn)的三個(gè)庫(kù)是什么庫(kù)?分別代表什么意思?

    information_schema: 主要存儲(chǔ)系統(tǒng)中的一些數(shù)據(jù)庫(kù)對(duì)像信息,如用戶信息,列信息,權(quán)限信息,字符集信息和分區(qū)信息等

    performance_schema: 主要存儲(chǔ)數(shù)據(jù)庫(kù)服務(wù)器性能參數(shù)

    mysql:主要存儲(chǔ)系統(tǒng)的用戶權(quán)限信息

    test:該數(shù)據(jù)庫(kù)為MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)自動(dòng)創(chuàng)建的測(cè)試數(shù)據(jù)庫(kù),任何用戶都可以使用


13、MySQL鎖粒度是什么?MySQL有幾種鎖級(jí)別?說(shuō)一下他的特性?

    就是通常我們所說(shuō)的鎖級(jí)別。

    MySQL有三種鎖的級(jí)別:頁(yè)級(jí)、表級(jí)、行級(jí)。

    MySQL這3種鎖的特性可大致歸納如下:

    表級(jí)鎖:開(kāi)銷小,加鎖快;不會(huì)出現(xiàn)死鎖;鎖定粒度大,發(fā)生鎖沖突的概率最高,并發(fā)度最低。

    行級(jí)鎖:開(kāi)銷大,加鎖慢;會(huì)出現(xiàn)死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低,并發(fā)度也最高。

    頁(yè)面鎖:開(kāi)銷和加鎖時(shí)間界于表鎖和行鎖之間;會(huì)出現(xiàn)死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般


14、說(shuō)一下數(shù)據(jù)庫(kù)的幾種備份方式和包啟的意思?

    冷備(cold backup):需要關(guān)mysql服務(wù),讀寫請(qǐng)求均不允許狀態(tài)下進(jìn)行;

    溫備(warm backup): 服務(wù)在線,但僅支持讀請(qǐng)求,不允許寫請(qǐng)求;

    熱備(hot backup):備份的同時(shí),業(yè)務(wù)不受影響。


15、簡(jiǎn)述如何搭建主從數(shù)據(jù)庫(kù)以及工作模式?

搭建:1、主數(shù)據(jù)庫(kù)修改my.cnf配置文件,打開(kāi)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)用戶測(cè)試是否能連接登陸主數(shù)據(jù)庫(kù)服務(wù)器

     5、從服務(wù)器上建立同步賬戶信息


工作模式:從服務(wù)器的IO線程連接主數(shù)據(jù)庫(kù)的IO線程,并從主服務(wù)器獲取二進(jìn)制日志,保存為本地的中繼日志,

 接著通過(guò)SQL線程執(zhí)行中繼日志里面的SQL語(yǔ)句,從而使主從庫(kù)保持一致

    

16、主從數(shù)據(jù)庫(kù)不能同步怎么辦?

     1、通過(guò)跳過(guò)錯(cuò)誤來(lái)繼續(xù)執(zhí)行同步,適用于對(duì)數(shù)據(jù)一致性不是那么高的情況下

        set global sql_slave_skip_counter =1;

     2、重新做主從,完全同步

        該方法適用于主從庫(kù)數(shù)據(jù)相差較大,或者要求數(shù)據(jù)完全統(tǒng)一的情況

        熱備方式修復(fù)主從庫(kù)

        操作過(guò)程

        1)先關(guān)閉從數(shù)據(jù)庫(kù)

        2)記錄主庫(kù)的log_file文件名和位置點(diǎn)

        3)導(dǎo)出主庫(kù)的數(shù)據(jù)庫(kù),拷貝到從庫(kù)機(jī)器上

        4)從庫(kù)刪除以前的老庫(kù),導(dǎo)進(jìn)從主庫(kù)拷貝過(guò)來(lái)的新庫(kù)

        5)changes主庫(kù)的Log_file和位置點(diǎn)

        6)開(kāi)啟從庫(kù)


17、怎么清理數(shù)據(jù)庫(kù)碎片?

    查看哪個(gè)表空間最占用空間

    對(duì)大表進(jìn)行move

   

18、MariaDB集群的功能和優(yōu)勢(shì)是什么?

    功能:

    同步復(fù)制

    真正的multi-master,即所有節(jié)點(diǎn)可以同時(shí)讀寫數(shù)據(jù)庫(kù)  

    自動(dòng)的節(jié)點(diǎn)成員控制,失效節(jié)點(diǎn)自動(dòng)被清除

    新節(jié)點(diǎn)加入數(shù)據(jù)自動(dòng)復(fù)制

    真正的并行復(fù)制,行級(jí)

    用戶可以直接連接集群,使用感受上與MySQL完全一致

    優(yōu)勢(shì):

    因?yàn)槭嵌嘀?,所以不存在Slave lag(延遲)

    不存在丟失交易的情況

    同時(shí)具有讀和寫的擴(kuò)展能力

    更小的客戶端延遲

    節(jié)點(diǎn)間數(shù)據(jù)是同步的,而Master/Slave模式是異步的,不同slave上的binlog可能是不同的


19、數(shù)據(jù)庫(kù)有哪幾種日志,分別有什么作用?

    二進(jìn)制日志:該日志文件會(huì)以二進(jìn)制形式記錄數(shù)據(jù)庫(kù)的各種操作,但是卻不記錄查詢操作

       錯(cuò)誤日志:該日志文件會(huì)記錄MySQL服務(wù)器啟動(dòng)、關(guān)閉和運(yùn)行時(shí)出錯(cuò)等信息

       慢查詢?nèi)罩荆河涗泩?zhí)行時(shí)間超過(guò)指定時(shí)間的各種操作,通過(guò)工具分析慢查詢?nèi)罩究梢远▊僊ySQL服                                務(wù)器性能瓶頸所在。

       通用查詢?nèi)罩荆涸撊罩居涗汳ySQL服務(wù)器的啟動(dòng)和關(guān)閉信息、客戶端的連接信息、更新數(shù)據(jù)記錄                                        SQL語(yǔ)句和查詢數(shù)據(jù)記錄SQL語(yǔ)句


20、MySQL出現(xiàn)sql鎖是怎么回事,如何優(yōu)化?

    使用show full processlist查看鎖表的命令,再確定是sql語(yǔ)句的效率問(wèn)題,還是沒(méi)建索引,或是數(shù)據(jù)庫(kù)引擎的     問(wèn)題。

    

21、如何優(yōu)化MySQL?

   1、對(duì)查詢頻繁的表加主鍵或索引

   2、對(duì)重要數(shù)據(jù)的mysql做主主或主從的高可用與讀寫分離

   3、對(duì)數(shù)據(jù)量大的表或庫(kù),進(jìn)行分表或分庫(kù),減輕總表大小。

   4、優(yōu)化my.cnf在內(nèi)存參數(shù)。提高內(nèi)存的使用率。




向AI問(wèn)一下細(xì)節(jié)
推薦閱讀:
  1. MongoDB專題
  2. 緩存專題

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI