一 利用標準數(shù)據(jù)庫優(yōu)化技術
傳統(tǒng)數(shù)據(jù)庫優(yōu)化技術博大精深,不同的數(shù)據(jù)庫有不同的優(yōu)化技巧,但重心還是有規(guī)則的。在這里算是題外話,挑兩點通用的說說:
索引,給關鍵的字段添加索引,性能能更上一層樓,如給表的關聯(lián)字段,搜索頻率高的字段加上索引等。Django建立實體的時候,支持給字段添加索引,具體參考Django.db.models.Field.db_index。按照經(jīng)驗,Django建立實體之前應該早想好表的結構,盡量想到后面的擴展性,避免后面的表的結構變得面目全非。
使用適當字段類型,本來varchar就搞定的字段,就別要text類型,小細節(jié)別不關緊要,后頭數(shù)據(jù)量一上去,愈來愈多的數(shù)據(jù),小字段很可能是大問題。
二 了解Django的QuerySets
了解Django的QuerySets對象,對優(yōu)化簡單程序有至關重要的作用。QuerySets是有緩存的,一旦取出來,它就會在內(nèi)存里呆上一段時間,盡量重用它。
# 了解緩存屬性: >>> entry = Entry.objects.get(id=1) >>> entry.blog # 博客實體第一次取出,是要訪問數(shù)據(jù)庫的 >>> entry.blog # 第二次再用,那它就是緩存里的實體了,不再訪問數(shù)據(jù)庫 >>> entry = Entry.objects.get(id=1) >>> entry.authors.all() # 第一次all函數(shù)會查詢數(shù)據(jù)庫 >>> entry.authors.all() # 第二次all函數(shù)還會查詢數(shù)據(jù)庫