web系統可以採用自底向上的順序,從資料儲存一直到資料展現,按照這個順序一點一點查詢效能問題。
工具解決問題的第一步是找到問題
執行django看到原始sql查詢確保django debug設定為true。然後,就這樣做:
[python] 純文字檢視
複製** ?
12
3
4
5
6
7
>>>
from
django.db
import
connection
>>> connection.queries
>>> author.objects.
all
()
]>
>>> connection.queries
connection.queries
只有在除錯為真時。它是乙個按查詢執行順序排列的字典列表。每個詞典都有以下內容:
[python] 純文字檢視
複製** ?
12
``sql``
-
-
the raw sql statement
``time``
-
-
how
long
the statement took to execute,
in
seconds.
connection.queries查詢包括所有sql語句——插入、更新、選擇等。每次應用程式訪問資料庫時,查詢都會被記錄下來。
如果您使用多個資料庫,您可以在connections字典的每個成員上使用相同的介面:
[python] 純文字檢視
複製** ?
12
>>>
from
django.db
import
connections
>>> connections[
'my_db_alias'
].queries
如果需要在函式的任意位置手動清除查詢列表,只需呼叫
reset_queries()
,如下所示:
[python] 純文字檢視
複製** ?
12
from
django.db
import
reset_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"
limit
21
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少了額外資訊的儲存開銷,還能使...