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