企業面試題 最常問的MySQL面試題集合(三)

2022-07-30 06:33:08 字數 1209 閱讀 7371

延伸:對使用者而言,分割槽表是乙個獨立的邏輯表,但是底層mysql將其分成了多個物理子表,這對使用者來說是透明的,每乙個分割槽表都會使用乙個獨立的表檔案。

如圖所示:mysql將表分成多個物理字表,但php客戶端並無感知,仍然認為操作的是乙個表。

建立表時使用partition by子句定義每個分割槽存放的資料,執行查詢時,優化器會根據分割槽定義過濾那些沒有需要的資料的分割槽,這樣只需要查詢資料所在分割槽即可。

這樣子表相對於未分割槽的表來說占用空間小,資料量更小,因此操作速度更快。

分割槽的主要目的是將資料按照乙個較粗的粒度分在不同的表中,這樣可以將相關的資料存放在一起,而且如果想一次性的刪除整個分割槽的資料也和方便。

適用場景

限制通過一些hash演算法或者工具實現將一張資料表垂直或者水平進行物理切分

適用場景水平分表:

表很大,分割後可以降低在查詢時需要讀的資料和索引的頁數,同時也降低了索引的層數,提高查詢次數

適用場景

水平切分的缺點

垂直分表

把主鍵和一些列放在乙個表,然後把主鍵和另外的列放在另乙個表中

適用場景

缺點管理冗餘列,查詢所有資料需要join操作

分表缺點mysql主從複製工作原理

mysql主從複製解決的問題

解題方法

充分掌握分區分表的工作原理和適用場景,在面試中,此類題通常比較靈活,會給一些現有公司遇到問題的場景,大家可以根據分區分表,mysql複製、負載均衡的適用場景來根據情況進行回答

問題29:sql語句應該考慮哪些安全性?

考點分析

sql查詢的安全方案

延伸:mysql的其它安全設定

sql查詢的安全方案

delete user where id = ?

注意:

php端盡量使用pdo對資料庫進行操作,pdo擁有對預處理語句很好的支援的方法,mysqli也有,但是可擴充套件性不如pdo,mysql函式在新版中已經趨向於淘汰,所以不建議使用,而且它沒有很好的支援預處理方法。

解題方法

通常情況下,sql安全的考點都在防sql注入的問題,因此只要遇到此類考點,優先考慮sql注入的防護手段。

問題30:為什麼使用mysqli和pdo連線資料庫會比mysql連線資料庫更安全?

mysqli和pdo支援預處理,可以防止sql注入,mysql不支援預處理。

企業面試題

當 jar 在客戶端進行spark submit的時候spark流程就開始了,先概括的介紹一下流程,在講述一下流程中的重要元件 2 首先需要初始化的是sparkcontext,sparkcontext 要構建出dagscheduler,taskscheduler 4 現在可以進行我們編寫的的業務了,...

MySQL常問鎖的面試題

鎖 lock 在多人處理同乙個資料的時候,保證每次只有乙個人可以操作。mysql提供了頁鎖 全域性鎖 行鎖 表鎖。其中innodb採用的是行鎖和表鎖,myisam只支援表鎖。是指二個或者二個以上的程序在執行時候,因為爭奪資源造成相互等待的現象,程序一直處於等待中,無法得到釋放,這種狀態就叫做死鎖,批...

mysql建立索引面試題 MySQL索引 面試題

1 索引可以加快資料檢索操作,但會使資料修改操作變慢。每修改資料記錄,索引就必須重新整理一次。為了在某種程式上彌補這一缺陷,許 多sql命令都有乙個delay key write項。這個選項的作用是暫時制止mysql在該命令每插入一條新記錄和每修改一條現有之後立刻對索引進 行重新整理,對索引的重新整...