Django ORM效能優化,資料訪問優化

2021-10-01 08:36:53 字數 2617 閱讀 4019

web系統可以採用自底向上的順序,從資料儲存一直到資料展現,按照這個順序一點一點查詢效能問題。

工具解決問題的第一步是找到問題

執行django看到原始sql查詢確保django debug設定為true。然後,就這樣做:

[python] 純文字檢視

複製** ?

12

3

4

5

6

7

>>>fromdjango.dbimportconnection

>>> connection.queries

>>> author.objects.all()

]>

>>> connection.queries

connection.queries

只有在除錯為真時。它是乙個按查詢執行順序排列的字典列表。每個詞典都有以下內容:

[python] 純文字檢視

複製** ?

12

``sql``--the raw sql statement

``time``--howlongthe statement took to execute,inseconds.

connection.queries查詢包括所有sql語句——插入、更新、選擇等。每次應用程式訪問資料庫時,查詢都會被記錄下來。

如果您使用多個資料庫,您可以在connections字典的每個成員上使用相同的介面:

[python] 純文字檢視

複製** ?

12

>>>fromdjango.dbimportconnections

>>> connections['my_db_alias'].queries

如果需要在函式的任意位置手動清除查詢列表,只需呼叫

reset_queries()

,如下所示:

[python] 純文字檢視

複製** ?

12

fromdjango.dbimportreset_queries

reset_queries()

但是使用起來好像不是很方便。

django-exensions顯示原始sql在shell命令列的環境下,可以使用 django-exensions的 shell_plus 命令並開啟--print-sql 選項。

[python] 純文字檢視

複製** ?

1python manage.py shell_plus--print-sql

執行該shell後可以在命令列輸入查詢語句,會自動列印sql內容。

[python] 純文字檢視

複製** ?

12

3

4

>>> author.objects.all()

select"library_author"."id","library_author"."name"from"library_author"limit21

execution time:0.001393s[database: default]

]>

除錯配置面板django-debug-*******還有個更方便的方式, 使用 django-debug-******* 工具,就可以在web端檢視sql查詢的詳細統計結果,其實它功能遠不止這個。

總結下3個方式

總結 Django ORM 效能優化建議

本文著重講解對 django orm 效能優化的幾點建議,orm 資料層提供各種途徑優化資料的訪問,如果掌握 django 的優化技巧,開發過程中稍稍留意,後期會省不少的工作量。好文章記得收藏 點讚 關注 額 nick.peng 資料庫優化技術博大精深,不同的資料庫有不同的優化技巧,但重心還是有規則...

WEB效能優化 資料

為了解決近期專案遇到的效能瓶頸,花費不少功夫惡補了web效能的相關優化方案,整理了一些資料,分享給大家。網頁效能管理詳解 阮一峰的網路日誌 頁面效能優化的利器 timeline 雲加社群 什麼是cdn,為什麼你的 需要它?開發動靜分離實踐 brucefeng 網頁效能優化 小方。16毫秒的優化 we...

Spark效能優化 優化資料結構

1 優先使用陣列以及字串,而不是集合類。也就是說,優先用array,而不是arraylist linkedlist hashmap等集合。比如,有個list list new arraylist 將其替換為int arr new int。這樣的話,array既比list少了額外資訊的儲存開銷,還能使...