簡體   English   中英

Django有8000個模型實例,速度驚人(如何刪除PostgreSQL數據庫)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM