记录数据库面试题及答案21~41
數據庫面試題
- **不斷更新中**
- 21. 如何防范SQL注入式攻擊
- 22. 默認的系統數據庫有哪些
- 23. 默認創建一個數據庫,會生成那些文件
- 24. 創建數據庫時,能不能把數據文件和日志文件分開
- 25. 什么是索引覆蓋(Index Covering)查詢?
- 26.存儲過程和函數的區別
- 27. 聚集索引和非聚集索引的區別
- 28.索引的優缺點,什么時候使用索引,什么時候不能使用索引
- 29. 數據庫優化
- 30. 索引分類索引失效條件
- 31. 數據庫的主從復制
- 32. long query怎么解決
- 33. varcher 和 char的使用場景
- 34. 數據庫連接池的作用
- 35. 分庫分表,主從復制,讀寫分離
- 36. 數據庫三范式
- 37. 數據庫中的join的inner join,outer join,coors join
- 38. 有哪些鎖,selete時怎么加排它鎖
- 39. 死鎖怎么解決
- 40. 最左匹配原則
- 41. SQLServer 是一種大型數據庫,他的儲存容量只受儲存介質的限制,請問他是通過什么方式實現這種無線容量機制的
不斷更新中
21. 如何防范SQL注入式攻擊
一, 不使用動態SQL拼接
二, 利用在表單輸入的內容構造SQL命令之前,把所有輸入內容過濾一番
對于動態構造SQL的場合時
22. 默認的系統數據庫有哪些
23. 默認創建一個數據庫,會生成那些文件
24. 創建數據庫時,能不能把數據文件和日志文件分開
可以分開,起到優化作用,把數據庫文件放到高速讀寫區,把日志文件放到低速讀寫區
25. 什么是索引覆蓋(Index Covering)查詢?
是指數據可以通過索引獲取,而不用接觸表.
比如: 非聚集復合索引: 建立索引字段時正好覆蓋了條件查詢中所涉及到的字段
26.存儲過程和函數的區別
27. 聚集索引和非聚集索引的區別
根本區別: 表中記錄的排列順序和索引的排列順序是否一致
28.索引的優缺點,什么時候使用索引,什么時候不能使用索引
優點: 提高查詢速度
缺點: 更新數據時效率低,應為要同時更新索引
對數據進行頻繁查詢建立索引,頻繁更新時不建議使用索引
29. 數據庫優化
- 子查詢變成 left join
- limit分布優化,先利用ID定位,再分頁
- or 條件優化,多個or條件可以用union all對結果進行合并
- 不必要的排序
- where代替having ,having檢索完所有記錄,再進行過濾
- 避免嵌套查詢
- 對多個字段進行等值查詢時,聯合索引
30. 索引分類索引失效條件
失效條件
31. 數據庫的主從復制
1.默認異步復制
容易造成主庫數據與從庫數據不一樣
通過binlog日志實現,數據庫1兩個線程,一個讀取數據庫2的binlog日志,一個解析日志執行sql
數據庫2啟動一個線程,給數據庫1傳遞日志
2.半同步復制
只有把數據庫1的發送的binlog日志寫道數據庫2的中繼日志,這時主庫才返回操作完成反饋,性能有一定降低
3.并行復制
數據庫2多個線程去請求binlog日志
32. long query怎么解決
是指設置數據庫日志,記錄記錄耗時耗時過長的sql語句
設置參數,開啟慢日志功能,得到耗時超過一定時間的sql
slow query log開啟記錄慢查詢功能,slow query log=0關閉
slow query log=1開啟,1可不寫
slow query time=1,這句記錄超過一秒
33. varcher 和 char的使用場景
儲存字符
varder適合字符長度經常變的
char適合字符長的固定的
34. 數據庫連接池的作用
維護一定數據的連接,減少創建連接的時間
更快的響應時間
統一的管理
35. 分庫分表,主從復制,讀寫分離
讀寫分離,讀從庫,寫主庫
spring可以配置兩個數據庫,通過TOP(面向切面編程)在寫和讀方法前面進行判斷得到動態切換數據源
實現讀寫分離
36. 數據庫三范式
范式:符合某一種級別的關系模型的集合
1NF 屬性不可分: 通俗理解即一個字段只存儲一項信息
2NF 非主鍵屬性,完全依賴主鍵屬性: 要求數據庫表中的每個實例或行必須可以被惟一地區分。
3NF 非主鍵屬性無傳遞依賴: 要求一個數據庫表中不包含已在其它表中已包含的非主鍵字段
37. 數據庫中的join的inner join,outer join,coors join
以AB兩張表為例
cross join:交叉連接,得到的結果是兩個表的乘積,即笛卡爾積
38. 有哪些鎖,selete時怎么加排它鎖
在語句中加入for update是給相應行增加排它鎖.Selete出來的數據別的事務不能讀取,不能修改,不能刪除
39. 死鎖怎么解決
找到進程號,kill 進程
產生死鎖的原因:
1.系統提供的資源數量有限,不能滿足每個進程的使用,
2.多道程序運行時,推進程序不合理
產生死鎖的必要條件
1.互斥條件
2.不可不多條件(不可占條件)
3.部分分配
4.循環等待
根據死鎖的四個必要條件,只要使其中一不成立 ,死鎖就不會出現,可采取三種 預防措施
1.采用資源動態分配策略
2.允許進程剝奪使用其他進程占有的資源,從而破壞" 不可剝奪 "條件
3.采用資源有序分配法,破壞 “環路” 條件
40. 最左匹配原則
最左匹配原則是針對索引的
兩個字段(name,age)建立聯合索引,如果where age=12 這樣的話,是沒有利用到索引的.
如果where name= ‘XXX’ and age=12,這時就利用到索引,
因為創建復合索引的規則是首先對復合索引的最左邊的字段先排序,然后在對后邊的第二個字段排序.
41. SQLServer 是一種大型數據庫,他的儲存容量只受儲存介質的限制,請問他是通過什么方式實現這種無線容量機制的
他的所有數據都存儲在數據文件中(*.dbf),所以只要文件夠大,SQLServer的存儲容量是可以擴大的
SQLServer 數據庫有三種類型文件
主要數據庫文件
主要數據文件是數據庫的起點,指向數據庫中文件的其他部分,每個數據庫都有一個主要數據文件主要數據文件推薦文件擴展名是.mdf
次要數據文件
次要數據文件包含除主要數據文件外的所有數據文件,有些數據庫可能沒有次要數據文件,而有些數據庫則需要多個次要數據文件擴展名為.ndf
日志文件
日志文件包含恢復數據庫所需的所有日志文件,每個數據庫至少有一個日志文件,但可以不止一個擴展名為.ldf
總結
以上是生活随笔為你收集整理的记录数据库面试题及答案21~41的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络爬虫+数据可视化
- 下一篇: Mysql 查询返回结果空时间错误