資料庫的面試
- 1.關系型資料庫和非關系型資料庫區別
- 2.資料庫存盤引擎
- 3.事務的四個特性
- 4.oracle和myql的區別(只列舉了一部分)
- 5.char和varchar的區別
- 6.不同索引型別的區別
- 7.選擇索引的原則
- 8.導致SQL執行慢的原因
- 9.物理備份的方式
- 10.有哪些備份型別
- 11.Mysql備份工具
1.關系型資料庫和非關系型資料庫區別
關系型資料庫:
1.關系型資料庫在存盤資料時實際就是采用的一張二維表(比如和excel表格一樣)
2.市場占有量較大的是Mysql和Oracle資料庫,而互聯網場景最常用的是Mysql資料庫,就連阿里都換成了Mysql資料庫
3.通過sql結構化查詢語言來存取,管理關系型資料庫的資料
4. 關系型資料庫在保持資料安全和資料一致性方面很強,遵循 ACID 理論 ACID指的的事務的4大特性
5.存放在磁盤
優點:
1.易于維護:都是使用表結構,格式一致
2.使用方便:SQL語言通用,可用于復雜查詢
3.復雜操作:支持SQL,可用于一個表以及多個表之間非常復雜的查詢
缺點:
1.讀寫能力較差,尤其是海量資料的高效率讀寫
2.固定的表結構,靈活度稍欠
3.高并發讀寫需求,傳統關系型資料庫來說,硬碟I/O是一個很大的瓶頸
非關系型資料庫
1.NoSQL 資料庫不是否定關系型資料庫,而是作為關系資料庫的一個重要補充,
2.NoSQL 資料庫為了靈活及高性能、高并發而生,忽略影響高性能、高并發的功能,
3.在NoSQL 資料庫領域,當今的最典型產品為 Redis(持久化快取)、MongoDB、Memcached(純記憶體)等,
4.NoSQL 資料庫沒有標準的查詢語言(SQL),通常使用資料介面或者查詢API,
優點:
1.格式靈活:存盤資料的格式可以使key,value形式,檔案形式,圖片形式等
2.速度快:nosql可以使用硬碟或者隨機存盤器作為載體,比如記憶體,而關系型資料庫只能使用硬碟
3.高擴展性
4.成本低:nosql資料庫部署簡單,基本都是開源軟體
缺點:
1.不支持sql語言,學習和使用成本高
2.無事務處理
3.資料結構相對復雜,復雜查詢方面稍欠
非關系型資料庫中的Redis:
- 支持記憶體快取,這個功能相當于 Memcached,
- 支持持久化存盤,這個功能相當于 MemcacheDB,
- 資料型別更豐富,比其他 Key-Value 庫功能更強,
- 支持主從集群,分布式,
2.資料庫存盤引擎
這里只說InnoDB和MyISAM
1.InnoDB存盤引擎:默認引擎,最常用的InnoDB是事務型資料庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵
InnoDB特點:支持事務處理,支持外鍵,支持崩潰修復和并發控制. 如果需要對事物的完整性要求較高(比如銀行),要求實作并發控制(比如售票),那么選擇InnoDB有很大的優勢,如果需要頻繁更新,洗掉操作的資料庫,也選擇InnoDB,因為支持事務的提交(commit)和回滾(rollback)
2.MyISAM存盤引擎
MyISAM基于ISAM存盤引擎,并對其進行擴展,她是在WEB,資料倉儲和其他應用環境下最常用的資料存盤之一,又有較高的插入,查詢速度,但不支持事務
MyISAM特點:插入速度快,空間和記憶體使用比較低,如果表主要是用于插入新記錄和讀出記錄,那么選擇MyiSAM能實作處理高效率,如果應用的完整性,并發性要求比較低,也可以使用
如何選擇引擎:如果要提供提交、回滾、并要求實作并發控制,InnoDB是一個好的選擇;如果資料表主要用來插入和查詢記錄,則MyISAM引擎能提供較高的處理效率;
使用哪一種引擎需要靈活選擇,一個資料庫中多個表可以使用不同引擎以滿足各種性能和實際需求,使用合適的存盤引擎,將會提高整個資料庫的性能,
3.事務的四個特性
1 、原子性 (atomicity):強調事務的不可分割.
2 、一致性 (consistency):事務的執行的前后資料的完整性保持一致.
3 、隔離性 (isolation):一個事務執行的程序中,不應該受到其他事務的干擾
4 、持續性 (durability) :事務一旦結束,資料就要記錄到永久存盤器中,通常是保存進物理資料庫
4.oracle和myql的區別(只列舉了一部分)
1、Oracle是大型資料庫,而MySQL是中小型資料庫,但是MySQL是開源的,但是Oracle是收費的,而且比較貴,
2、Oracle的記憶體占有量非常大,而mysql非常小
3、MySQL支持主鍵自增長,指定主鍵為auto increment,插入時會自動增長,Oracle主鍵一般使用序列,
4、MySQL字串可以使用雙引號包起來,而Oracle只可以單引號
5、MySQL分頁用limit關鍵字,而Oracle使用rownum欄位表明位置,而且只能使用小于,不能使用大于,
6、Oracle在處理長字串的時候,長度是小于等于4000個位元組,如果要插入更長的字串,考慮用CLOB型別,插入修改記錄前要做進行修改和 長度的判斷,如果為空,如果長度超出回傳操作處理.(CLOB型別是內置型別,它一般都作為某一行中的一列,有些資料庫也有別名)
7、MySQL中0、1判斷真偽,Oracle中true false
8、MySQL中命令默認commit,但是Oracle需要手動提交
9、MySQL在windows環境下大小寫不敏感 在unix,linux環境下區分大小寫,Oracle不區分
5.char和varchar的區別
- char表示定長字串,長度是固定的;如果插入資料的長度小于char的固定長度時,則用空格填充;因為長度固定,所以存取速度要比varchar快很多,甚至能快50%,但正因為其長度固定,所以會占據多余的空間,
- varchar表示可變長字串,長度是可變的;插入的資料是多長,就按照多長來存盤;varchar在存取方面與char相反,它存取慢,因為長度不固定,但正因如此,不占據多余的空間,
- 結合性能角度(char更快),節省磁盤空間角度(varchar更小),具體情況還需具體來設計資料庫才是妥當的做法,
(至于為什么長度不固定:十分頻繁改變的column(欄位),因為varchar每次存盤都要有額外的計算,得到長度等作業,如果一個非常頻繁改變的,那就要有很多的精力用于計算,而這些對于char來說是不需要的)
6.不同索引型別的區別
1.普通索引(INDEX):索引列值可重復,常用于過濾資料,例如:以商品作為索引,檢索種類為"手機"的商品
2.唯一索引(UNIQUE):索引列值可以為NULL,但是必須唯一,主要用于標識一列資料不允許重復的特性,相比主鍵索引不常用于檢索的場景
3.主鍵索引(PRIMARY KEY):索引列值必須唯一,不能為NULL,一個表之鞥有一個主鍵索引,昰行的唯一標識,因而其主要用途是檢索特定資料
4全文索引(FULL TEXT):給每個欄位創建索引,效率較低,常用于文本中內容檢索
7.選擇索引的原則
1.常用于查詢條件的欄位適合作為索引,例如where陳述句和join陳述句中出現的列
2.唯一性太差的欄位不適合作為索引,例如性別
3.更新過于頻繁(更新頻率遠高于檢索頻率)的欄位不適合作為索引
4.使用索引的好處是索引通過一定的演算法建立了索引值與列值直接的聯系,可以通過索引直接獲取對應的行資料,而無需進行全表搜索,因而加快了檢索速度
8.導致SQL執行慢的原因
1.硬體問題,如網路速度慢,記憶體不足,I/O吞吐量小,磁盤空間滿了
2.沒有索引或者索引失效
3.資料過多(分庫分表)
4.服務器調優及各個引數設定(調整my.cnf),索引:當查詢速度過慢時,可以通過建立優化查詢速度,可以當做調優
9.物理備份的方式
1.完全備份
每次對資料進行完整的備份,即對整個資料庫的備份、資料庫結構和檔案結構的備份,保存的是備份完成時刻的資料庫,是差異備份與增量備份的基礎,
優點:備份與恢復操作簡單方便,恢復時一次恢復到位,恢復速度快
缺點:占用空間大,備份速度慢
2.增量備份
每次備份上一次備份到現在產生的新資料
只有那些在上次完全備份或者增量備份后被修改的資料才會被備份,以上次完整備份或上次的增量備份的時間為時間點,僅備份這之間的資料變化.
特點:因而備份的資料量小,占用空間小,備份速度快,但恢復時,需要從上一次的完整備份起按備份時間順序,逐個備份版本進行恢復,恢復時間長,如中間某次的備份資料損壞,將導致資料的丟失,
3.差異備份
備份那些自從第一次次完全備份之后被修改過的所有檔案,備份的時間起點是從第一次次完整備份起,且以后每次備份都是和第一次完整備份進行比較(注意是第一次,不是上一次),備份自第一次完整備份以來所有的修改過的檔案,備份資料量會越來越大,
特點:占用空間比增量備份大,比完整備份小,恢復時僅需要恢復第一個完整版本和最后一次的差異版本,恢復速度介于完整備份和增量備份之間,
10.有哪些備份型別
Mysql備份型別:
物理備份: 直接復制資料庫檔案,適用于大型資料庫環境,不受存盤引擎的限制
1.熱備(hot backup)
在線備份,資料庫處于運行狀態,這種備份方法依賴于資料庫的日志檔案
- 對應用基本無影響(但是性能還是會有下降,所以盡量不要在主上做備份,在從庫上做)
2.冷備(cold backup)
備份資料檔案,需要停機,是在關閉資料庫的時候進行的
- 備份 datadir 目錄下的所有檔案
3.溫備(warm backup)
- 針對myisam的備份(myisam不支持熱備),備份時候實體只讀不可寫,資料庫鎖定表格(不可寫入但可讀)的狀態下進行的
- 對應用影響很大
- 通常加一個讀鎖
邏輯備份:
備份的是建表、建庫、插入等操作所執行SQL陳述句(DDL DML DCL),適用于中小型資料庫,效率相對較低,
11.Mysql備份工具
1、ibbackup
- 官方備份工具
- 收費
- 物理備份
2、xtrabackup - 開源社區備份工具
- 開源免費,上面的免費版本(老版本有問題,備份出來的資料可能有問題)
- 物理備份
3、mysqldump - 官方自帶備份工具 開源免費
- 邏輯備份(速度慢)
4、mysqlbackup - mysql 官方備份工具
- innodb 引擎的表mysqlbackup可以進行熱備
- 非innodb表mysqlbackup就只能溫備
- 物理備份,備份還原速度快
- 適合大規模資料使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/241404.html
標籤:其他
上一篇:高性能MySQL學習總結一
下一篇:MySQL學習-排序與分組函式
