您好,登錄后才能下訂單哦!
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)存的使用率。
免責(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)容。