国产欧美国产精品第二区-国产欧美日韩亚洲一区-国产中文字幕一区在线-欧美一级在线免费播放

登錄
免費注冊
400-6565-277
首頁圖

新聞動態(tài)

news information

MySQL奪命10問,你能堅持到第幾問?

2022-07-22作者:捷碼瀏覽:

MySQL在面試中經(jīng)常被問到,本文總結(jié)了面試中的經(jīng)典問題。

1.數(shù)據(jù)庫三大范式是什么?

第一范式:每個列都不可以再拆分。

第二范式:在第一范式的基礎(chǔ)上,非主鍵列完全依賴于主鍵,而不能是依賴于主鍵的一部分。

第三范式:在第二范式的基礎(chǔ)上,非主鍵列只依賴于主鍵,不依賴于其他非主鍵。

在設(shè)計數(shù)據(jù)庫結(jié)構(gòu)的時候,要盡量遵守三范式,如果不遵守,必須有足夠的理由。

比如性能。事實上我們經(jīng)常會為了性能而妥協(xié)數(shù)據(jù)庫的設(shè)計。

2.mysql有關(guān)權(quán)限的表都有哪幾個?

MySQL服務(wù)器通過權(quán)限表來控制用戶對數(shù)據(jù)庫的訪問,權(quán)限表存放在mysql數(shù)據(jù)庫里,由mysql_install_db腳本初始化。

這些權(quán)限表分別user,db,table_privcolumns_privhost。

user權(quán)限表:記錄允許連接到服務(wù)器的用戶帳號信息,里面的權(quán)限是全局級的。

db權(quán)限表:記錄各個帳號在各個數(shù)據(jù)庫上的操作權(quán)限。

table_priv權(quán)限表:記錄數(shù)據(jù)表級的操作權(quán)限。

columns_priv權(quán)限表:記錄數(shù)據(jù)列級的操作權(quán)限。

host權(quán)限表:配合db權(quán)限表對給定主機上數(shù)據(jù)庫級操作權(quán)限作更細(xì)致的控制。這個權(quán)限表不受GRANTREVOKE語句的影響。

3.SQL語句主要分為哪幾類?

·數(shù)據(jù)定義語言DDLData Ddefinition LanguageCREATE,DROP,ALTER

主要為以上操作,即對邏輯結(jié)構(gòu)等有操作的,其中包括表結(jié)構(gòu),視圖和索引。

·數(shù)據(jù)查詢語言DQLData Query LanguageSELECT

這個較為好理解,即查詢操作,以select關(guān)鍵字。

各種簡單查詢,連接查詢等都屬于DQL

·數(shù)據(jù)操縱語言DMLData Manipulation LanguageINSERT,UPDATE,DELETE

主要為以上操作,即對數(shù)據(jù)進(jìn)行操作的,對應(yīng)上面所說的查詢操作DQLDML共同構(gòu)建了多數(shù)初級程序員常用的增刪改查操作。查詢是較為特殊的一種,被劃分到DQL中。

·數(shù)據(jù)控制功能DCLData Control LanguageGRANTREVOKE,COMMITROLLBACK

主要為以上操作,即對數(shù)據(jù)庫安全性完整性等有操作的,可以簡單的理解為權(quán)限控制等。

4.什么是死鎖?怎么解決?

死鎖是指兩個或多個事務(wù)在同一資源上相互占用,并請求鎖定對方的資源,從而導(dǎo)致惡性循環(huán)的現(xiàn)象。

常見的解決死鎖的方法

如果不同程序會并發(fā)存取多個表,盡量約定以相同的順序訪問表,可以大大降低死鎖機會

在同一個事務(wù)中,盡可能做到一次鎖定所需要的所有資源,減少死鎖產(chǎn)生概率;

對于非常容易產(chǎn)生死鎖的業(yè)務(wù)部分,可以嘗試使用升級鎖定顆粒度,通過表級鎖定來減少死鎖產(chǎn)生的概率;

如果業(yè)務(wù)處理不好可以用分布式事務(wù)鎖或者使用樂觀鎖

5.什么是臟讀?幻讀?不可重復(fù)讀?

臟讀(Drity Read):某個事務(wù)已更新一份數(shù)據(jù),另一個事務(wù)在此時讀取了同一份數(shù)據(jù),由于某些原因,前一個RollBack了操作,則后一個事務(wù)所讀取的數(shù)據(jù)就會是不正確的。

不可重復(fù)讀(Non-repeatable read)在一個事務(wù)的兩次查詢之中數(shù)據(jù)不一致,這可能是兩次查詢過程中間插入了一個事務(wù)更新原有的數(shù)據(jù)。

幻讀(Phantom Read)在一個事務(wù)的兩次查詢中,數(shù)據(jù)筆數(shù)不一致,例如有一個事務(wù)查詢了幾列(Row)數(shù)據(jù),而另一個事務(wù)卻在此時插入了新的幾列數(shù)據(jù),先前的事務(wù)在接下來的查詢中,就會發(fā)現(xiàn)有幾列數(shù)據(jù)是它先前所沒有的。

6.SQL的生命周期?

應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器建立一個連接

數(shù)據(jù)庫進(jìn)程拿到請求sql

解析并生成執(zhí)行計劃,執(zhí)行

讀取數(shù)據(jù)到內(nèi)存并進(jìn)行邏輯處理

通過步驟一的連接,發(fā)送結(jié)果到客戶端

關(guān)掉連接,釋放資源

7.MySQL數(shù)據(jù)庫cpu飆升到100%的話怎么處理?

當(dāng)cpu飆升到100%時,先用操作系統(tǒng)命令top命令觀察是不是mysqld占用導(dǎo)致的。

如果不是,找出占用高的進(jìn)程,并進(jìn)行相關(guān)處理。

如果是mysqld造成的,show processlist,看看里面跑的session情況,是不是有消耗資源的sql在運行。找出消耗高的sql,看看執(zhí)行計劃是否準(zhǔn)確,index是否缺失,或者實在是數(shù)據(jù)量太大造成。

一般來說,肯定要kill掉這些線程(同時觀察cpu使用率是否下降),等進(jìn)行相應(yīng)的調(diào)整(比如說加索引、改sql、改內(nèi)存參數(shù))之后,再重新跑這些SQL。

也有可能是每個sql消耗資源并不多,但是突然之間,有大量的session連進(jìn)來導(dǎo)致cpu飆升,這種情況就需要跟應(yīng)用一起來分析為何連接數(shù)會激增,再做出相應(yīng)的調(diào)整,比如說限制連接數(shù)等。

8.MySQL主從復(fù)制解決了哪些問題?

主從復(fù)制的作用是:

主數(shù)據(jù)庫出現(xiàn)問題,可以切換到從數(shù)據(jù)庫??梢赃M(jìn)行數(shù)據(jù)庫層面的讀寫分離??梢栽趶臄?shù)據(jù)庫上進(jìn)行日常備份。

數(shù)據(jù)分布:隨意開始或停止復(fù)制,并在不同地理位置分布數(shù)據(jù)備份

負(fù)載均衡:降低單個服務(wù)器的壓力

高可用和故障切換:幫助應(yīng)用程序避免單點失敗

升級測試:可以用更高版本的MySQL作為從庫

9.MySQL常用的備份工具有哪些?

常用備份工具mysql復(fù)制

邏輯備份(mysqldump,mydumper)

物理備份(copy,xtrabackup)

備份工具差異對比:

·mysql復(fù)制相對于其他的備份來說,得到的備份數(shù)據(jù)比較實時。

·邏輯備份:分表比較容易。mysqldump備份數(shù)據(jù)時是將所有sql語句整合在同一個文件中;mydumper備份數(shù)據(jù)時是將SQL語句按照表拆分成單個的sql文件, 每個sql文件對應(yīng)一個完整的表。

·物理備份:拷貝即可用,速度快。

copy:直接拷貝文件到數(shù)據(jù)目錄下,可能引起表損壞或者數(shù)據(jù)不一致。

xtrabackup對于innodb表是不需要鎖表的,對于myisam表仍然需要鎖表。

10.MySQL備份計劃如何制定?

視庫的大小來定。一般來說100G內(nèi)的庫,可以考慮使用mysqldump來做,因為mysqldump更加輕巧靈活,備份時間選在業(yè)務(wù)低峰期,可以每天進(jìn)行都進(jìn)行全量備份(mysqldump備份出來的文件比較小,壓縮之后更小)

100G以上的庫,可以考慮用xtranbackup來做,備份速度明顯要比mysqldump要快。

一般是選擇一周一個全備,其余每天進(jìn)行增量備份,備份時間為業(yè)務(wù)低峰期。


“捷碼”低代碼平臺是杭州遠(yuǎn)眺科技有限公司自主研發(fā)的一款全技術(shù)鏈賦能的通用型低代碼開發(fā)平臺,具有強大的數(shù)據(jù)開發(fā)能力,可直接連接MySQL、Postgre SQLORACLE、SQL Server等主流數(shù)據(jù)庫。對是國產(chǎn)數(shù)據(jù)庫,也可以通過數(shù)據(jù)交換的增值模塊,交換成MySQL進(jìn)行連接,助力開發(fā)團(tuán)隊快速、低成本地構(gòu)建數(shù)字化軟件應(yīng)用。

掃碼添加捷碼微信入群~已有5000+智慧城市/AloT/IT行業(yè)精英入群交流,入群即得《Java核心技術(shù)電子書》

文章掛尾.png



%用戶還看了以下內(nèi)容

程序員會被 AI 取代嗎?捷碼智助力效率翻倍! 閱讀745次

低代碼開發(fā)平臺能否取代傳統(tǒng)開發(fā)?優(yōu)缺點詳解助你做決策! 閱讀964次

大屏低代碼開發(fā)平臺排名?2024年最佳平臺推薦與分析! 閱讀1136次

免費的低代碼開發(fā)平臺大盤點:協(xié)同管理、智慧城市、BPM流程一網(wǎng)打盡! 閱讀840次

快速試用捷碼

x