首頁技術(shù)文章正文

Python開發(fā)面試題目:如何優(yōu)化數(shù)據(jù)庫?

更新時(shí)間:2020-11-30 來源:傳智教育 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

(1)問題分析

考慮數(shù)據(jù)庫的使用,在面對(duì)大量數(shù)據(jù)時(shí)如何保證數(shù)據(jù)庫中的數(shù)據(jù)及時(shí)的更新、響應(yīng)用戶的請(qǐng)求、確保數(shù)據(jù)庫的在高并發(fā)情況下仍能保證數(shù)據(jù)的完整性等。

(2)核心問題講解

①選取最適用的字段屬性

MySQL可以很好的支持大數(shù)據(jù)量的存取,但是一般說來,數(shù)據(jù)庫中的表越小,在它上面執(zhí)行的查詢也就會(huì)越快。因此,在創(chuàng)建表的時(shí)候,為了獲得更好的性能,我們可以將表中字段的寬度設(shè)得盡可能小。

②使用連接(JOIN)來代替子查詢(Sub-Queries)

這個(gè)技術(shù)可以使用SELECT語句來創(chuàng)建一個(gè)單列的查詢結(jié)果,然后把這個(gè)結(jié)果作為過濾條件用在另一個(gè)查詢中。例如,我們要將客戶基本信息表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售信息表中將所有發(fā)出訂單的客戶ID取出來,然后將結(jié)果傳遞給主查詢;使用子查詢可以一次性的完成很多邏輯上需要多個(gè)步驟才能完成的SQL操作,同時(shí)也可以避免事務(wù)或者表鎖死,并且寫起來也很容易。但是,有些情況下,子查詢可以被更有效率的連接(JOIN)替代。

③使用聯(lián)合(UNION)來代替手動(dòng)創(chuàng)建的臨時(shí)表

④事務(wù)

⑤鎖定表

⑥使用外鍵

⑦使用索引

⑧對(duì)查詢語句進(jìn)行優(yōu)化

(3)問題擴(kuò)展

都有哪些熟悉的數(shù)據(jù)庫,常用的有哪些,每種數(shù)據(jù)庫對(duì)應(yīng)的優(yōu)缺點(diǎn)等

(4)結(jié)合項(xiàng)目中使用

針對(duì)每種數(shù)據(jù)的優(yōu)缺點(diǎn)來結(jié)合項(xiàng)目進(jìn)行說明,在什么情況下使用哪種數(shù)據(jù)庫,使用的原因等(比如:采用Redis數(shù)據(jù)庫來對(duì)數(shù)據(jù)進(jìn)行緩存,查詢速度相對(duì)于其他的數(shù)據(jù)庫來說比較快等)


猜你喜歡

Python queue模塊功能介紹

Scrapy框架的工作原理是什么?

多線程爬蟲是什么?多線程爬蟲流程分析

黑馬程序員Python+數(shù)據(jù)分析課程

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!