![](/img/trans.png)
[英]Azure Database for PostgreSQL flexible server Slow with Django
[英]Django hideously slow with 8000 model instances (How to drop PostgreSQL database)?
我在開發服務器上運行了Django安裝。 我最近使用了python manage.py loaddata 8000models.json
。 現在,一切都變得非常緩慢。 頁面無法加載。 python manage.py flush
不返回。 ModelType.objects.count()
不返回。
(或者如果我等待足夠長的時間,它們可能會回來。)
這里發生了什么? Django是否真的無法處理那么多數據? 還是還有其他問題?
更新 :我在PostgreSQL上觀察到此問題,但在SQLite上卻觀察不到相同的數據量。 也許我只需要擦除PostgreSQL並重新加載數據即可。
更新2 :如何清除PostgreSQL並重置? python manage.py reset appname
沒有響應。
更新3 :這就是我嘗試擦除PostgreSQL的方式:
#! bin/bash
sudo -u postgres dropdb mydb
sudo -u postgres createdb mydb
sudo -u postgres psql mydb < ~/my-setup/my-init.sql
python ~/path/to/manage.py syncdb
但是,這會導致以下錯誤:
dropdb: database removal failed: ERROR: database "mydb" is being accessed by other users
DETAIL: There are 8 other session(s) using the database.
createdb: database creation failed: ERROR: database "mydb" already exists
ERROR: role "myrole" cannot be dropped because some objects depend on it
DETAIL: owner of table mydb.mytable_mytable
# ... more "owner of table", "owner of sequence" statements, etc
如何關閉其他課程? 我沒有運行Apache。 我一次只使用一個Django開發服務器實例。 但是,當它不響應時,我用Control + Z殺死了它。 也許這導致它沒有釋放數據庫連接,從而導致了此問題? 我該如何解決?
Ctrl-Z只是停止進程,不會終止進程。 (我假設您正在使用bash)在終端中鍵入jobs
,並且您應該看到舊進程仍在運行。
一旦殺死了所有正在訪問PostgreSQL數據庫的作業,您就可以按照預期的方式刪除,創建和同步數據庫。
您是否嘗試過檢查您的postrgres數據庫是否仍在答復,從它的聲音來看,它可能正在處理告知它要加載的數據。
加載數據時,應首先使其完成。 如果頁面仍需要很長時間才能呈現,則應改為檢查查詢。
使用.count(),即使在具有8000個項目的PostgreSQL(計數很慢)中,也應在很長的時間內返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.