成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

14個必須掌握的數(shù)據(jù)庫面試題(附答案)

數(shù)據(jù)庫
本文總結(jié)了14個必須掌握的數(shù)據(jù)庫面試題,附答案,快看看是否對你有幫助!

一、為什么使用數(shù)據(jù)索引能提高效率

  • 數(shù)據(jù)索引的存儲是 有序的
  • 在有序的情況下, 通過索引查詢一個數(shù)據(jù)是無需遍歷索引記錄的
  • 極端情況下,數(shù)據(jù)索引的查詢效率為二分法查詢效率,趨近于log2(N)

二、B+樹索引和哈希索引的區(qū)別

B+樹是一個平衡的多叉樹,從根節(jié)點到每個葉子節(jié)點的高度差值不超過1,而且同層級的節(jié)點間有指針相互鏈接,是有序的,如下圖:

 

 

 

 

哈希索引就是采用一定的哈希算法,把鍵值換算成新的哈希值,檢索時不需要類似B+樹那樣從根節(jié)點到葉子節(jié)點逐級查找,只需一次哈希算法即可,是無序的,如下圖所示:

 

 

 

 

三、哈希索引的優(yōu)勢:

等值查詢,哈希索引具有絕對優(yōu)勢(前提是:沒有大量重復鍵值,如果大量重復鍵值時,哈希索引的效率很低,因為存在所謂的哈希碰撞問題。

四、哈希索引不適用的場景:

  • 不支持 范圍查詢
  • 不支持索引完成排序
  • 不支持聯(lián)合索引的最左前綴匹配規(guī)則

五、什么是表分區(qū)?

表分區(qū),是指根據(jù)一定規(guī)則,將數(shù)據(jù)庫中的一張表分解成多個更小的,容易管理的部分。從邏輯上看,只有一張表,但是底層卻是由多個物理分區(qū)組成

六、表分區(qū)與分表的區(qū)別?

分表:指的是通過一定規(guī)則, 將一張表分解成多 張不同的表。比如將用戶訂單記錄根據(jù)時間成多個表。

分表與分區(qū)的區(qū)別在于:分區(qū)從邏輯上來講只有一張表 ,而分表則是將一張表分解成多張表。

七、表分區(qū)有什么好處?

  1. 存儲更多數(shù)據(jù)。分區(qū)表的數(shù)據(jù)可以分布在不同的物理設備上,從而高效地利用多個硬件設備。和單個磁盤或者文件系統(tǒng)相比,可以存儲更多數(shù)據(jù)
  2. 優(yōu)化E詢。在where語句中包含分區(qū)條件時,可以只掃描一個或多 個分區(qū)表來提高查詢效率;涉及sum和count語句時,也可以在多個分區(qū)上并行處理,最后匯總結(jié)果。
  3. 分區(qū)表更容易維護。例如:想批量刪除大量數(shù)據(jù)可以清除整個分區(qū)。
  4. 避免某些特殊的瓶頸,例如InnoDB的單個索引的互斥訪問, ext3問價你系統(tǒng)的inode鎖競爭等。

八、在MVCC并發(fā)控制中,讀操作可以分成兩類:

快照讀(snapshot read):讀取的是記錄的可見版本(有可能是歷史版本),不用加鎖(共享讀鎖s鎖也不加,所以不會阻塞其他事務的寫)

當前讀(currentread):讀取的是記錄的最新版本,并且,當前讀返回的記錄,都會加上鎖,保證其他事務不會再并發(fā)修改這條記錄

九、行級鎖定的優(yōu)點:

  1. 當在許多線程中訪問不同的行時只存在少量鎖定沖突。
  2. 回滾時只有少量的更改
  3. 可以長時間鎖定單一的行。

十、行級鎖定的缺點:

比頁級或表級鎖定占用更多的內(nèi)存。當在表的大部分中使用時,比頁級或表級鎖定速度慢,因為你必須獲取更多的鎖。 如果你在大部分數(shù)據(jù)上經(jīng)常進行GROUP BY操作或者必須經(jīng)常掃描整個表,比其它鎖定明顯慢很多。 用高級別鎖定,通過支持不同的類型鎖定,你也可以很容易地調(diào)節(jié)應用程序,因為其鎖成本小于行級鎖定。

十一、MySQL優(yōu)化

  • 開啟查詢緩存,優(yōu)化查詢
  • explain你的select查詢, 這可以幫你分析你的查詢語句或是表結(jié)構(gòu)的性能瓶頸。EXPLAIN的查詢結(jié)果還會告訴你你的索引 主鍵被如何利用的,你的數(shù)據(jù)表是如何被搜索和排序的
  • 當只要一行數(shù)據(jù)時使用limit 1, MySQL數(shù)據(jù)庫引擎會在找到一條數(shù)據(jù)后停止搜索,而不是繼續(xù)往后查少下一條符合記錄的數(shù)據(jù)
  • 為搜索字段建索引
  • 使用ENUM而不是VARCHAR
  • Prepared StatementsPrepared Statements很像存儲過程,是一種運行在后臺的SQL語句集合,我們可以從使用

prepared statements獲得很多好處,無論是性能問題還是安全問題。

Prepared Statements可以檢查一些你綁定好的變量,這樣可以保護你的程序不會受到“SQL注入式” 攻擊

  • 垂直分表
  • 選擇正確的存儲引擎

十二、key和index的區(qū)別

key是數(shù)據(jù)庫的物理結(jié)構(gòu),它包含兩層意義和作用,一是約束(偏 重于約束和規(guī)范數(shù)據(jù)庫的結(jié)構(gòu)完整性) ,二是索引(輔助查詢 用的)。包括primary key, unique key, foreign key等

index是數(shù)據(jù)庫的物理結(jié)構(gòu),它只是輔助查詢的,它創(chuàng)建時會在另外的表空間(mysql中的innodb表空間) 以-個類似目錄的結(jié) 構(gòu)存儲。索引要分類的話,分為前綴索引、全文本索引等;

十三、Mysql 中MyISAM和InnoDB的區(qū)別有哪些?

  1. InnoDB支持事務, MyISAM不支持
  2. InnoDB支持外鍵,而MylSAM不支持。對一個包含外鍵的InnoDB表轉(zhuǎn)為MYISAM會失敗;
  3. InnoDB是聚集索引,數(shù)據(jù)文件是和索引綁在一起,必須要有主鍵,通過主鍵索引效率高。
  4. InnoDB不保存 表的具體行數(shù),執(zhí)行select count(*) from table時需要全表掃描。
  5. Innodb不支持全文索引,而MyISAM支持全文索引,查詢效率上MyISAM要高;

十四、數(shù)據(jù)庫表創(chuàng)建注意事項

1、字段名及字段配制合理性

  • 剔除關(guān)系不密切的字段; 1字段命名要有規(guī)則及相對應的含義(不要一部分英文,一部分拼音,還有類似a.b.c這樣不明含義的字段) ;
  • 字段命名盡量不要使用縮寫(大多數(shù)縮寫都不能明確字段含義) ;
  • 字段不要大小寫混用(想要具有可讀性,多個英文單詞可使用下劃線形式連接) ;
  • 字段名 不要使用保留字或者關(guān)鍵字;
  • 保持字段名和類型的一致性;
  • 慎重選擇數(shù)字類型; 給文本字段留足余量;

2、系統(tǒng)特殊字段處理及建成后建議

  • 添加刪除標記(例如操作人、刪除時間) ;
  • 建立版本機制;

3、表結(jié)構(gòu)合理性配置

  • 多型字段的處理 ,就是表中是否存在字段能夠分解成更小獨立的幾部分(例如:人可以分為男人和女人) ;
  • 多值字段的處理,可以將表分為三張表,這樣使得檢索和排序更加有調(diào)理,且保證數(shù)據(jù)的完整性!

4、其它建議

  • 對于大數(shù)據(jù)字段,獨立表進行存儲,以便影響性能(例如:簡介字段) ;
  • 使用varchar類 型代替char,因為varchar 會動態(tài)分配長度,char指定長度是固定的; 給表創(chuàng)建主鍵,對于沒有主鍵的表,在查詢和索引定義上有一定的影響;
  • 避免表字段運行為null,建議設置默認值(例如: int類型設置默認值為0) 在索引查詢上,效率立顯; 1建立索引,最好建立在唯-和非空的字段上,建立太多的索引對后期插入、更新都存在一定的影響(考慮實際情況來創(chuàng)建) ; 

 

責任編輯:龐桂玉 來源: 數(shù)據(jù)庫開發(fā)
相關(guān)推薦

2023-09-21 14:55:24

Web 開發(fā)TypeScript

2018-02-25 16:35:32

前端CSS面試題

2022-02-11 10:16:50

MySQLDBA數(shù)據(jù)庫

2019-03-23 20:00:04

面試react.js前端

2019-08-05 09:15:39

Java程序員設計

2010-04-27 13:49:04

Oracle數(shù)據(jù)庫

2021-03-19 11:08:27

開發(fā)技能代碼

2019-08-09 09:50:38

Java編程語言面試題

2016-05-05 17:45:43

Spring面試題答案

2017-11-21 12:15:27

數(shù)據(jù)庫面試題SQL

2021-05-08 14:20:27

Redis面試數(shù)據(jù)庫

2020-03-17 15:15:49

Python工程師面試題

2009-06-16 13:41:19

Hibernate面試Hibernate面試

2009-02-16 13:03:43

華為面試

2014-12-02 10:02:30

2019-05-15 16:45:13

SpringBoot面試題Java

2021-10-27 11:00:30

C++語言面試

2014-09-19 11:17:48

面試題

2020-06-04 14:40:40

面試題Vue前端

2011-03-01 16:00:08

java數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 在线观看日韩 | 一级大片网站 | 久久精品国内 | 欧美成人h版在线观看 | 亚洲国产一区二区三区 | 国产99在线 | 欧美 | 国产精品久久久久久久三级 | 精品久久国产 | 国产999精品久久久 精品三级在线观看 | 成人在线视频看看 | 久久精品亚洲精品国产欧美 | 久久99精品久久久久久国产越南 | 日本福利在线观看 | 日日夜夜天天干 | 国产一级片91 | 欧美日韩一区二区三区四区五区 | 欧美激情综合 | 日韩三级免费观看 | 中文字幕av一区二区三区 | 日本中文字幕一区 | 精品成人一区 | 日韩在线观看一区 | 亚洲免费在线播放 | 久久精品无码一区二区三区 | 亚洲一区二区三区在线播放 | 日韩中文字幕在线播放 | 日韩视频一区二区 | 日韩电影在线一区 | 国产高潮好爽受不了了夜夜做 | av手机在线播放 | 亚洲91av| 中文字幕在线剧情 | 国产一区二区三区欧美 | 久久网一区二区 | www.9191| 日韩在线观看网站 | 国产视频二区 | 亚洲aⅴ | 欧美性大战久久久久久久蜜臀 | 天天操天天插天天干 | 天天草草草|