データベースのパフォーマンスに関していくつか質問があります。私のアプリには、次の Django モデルとそれに対応する管理クラスがあります。データベースは MySQL で、Amazon RDS でホストされています。
- for ループを介して Notifications テーブルに約45000 レコードを追加するのに20 分以上かかりました。この時間は遅いですか、それとも正常ですか?
- このテーブルの django 管理インターフェースは遅すぎます。dB 負荷なしでロードするには約 30 秒かかります。また、データベースが何らかのジョブを実行している場合、ロードには通常 2 分以上かかります。通常、このテーブルには 1 週間または 2 週間ごとに 100 万件のレコードが追加されます。データベースやシステムのパフォーマンスを改善する方法はありますか、それとも現在のロード時間は正常ですか?
モデル
class Notification(models.Model):
id = models.AutoField(primary_key=True)
token = models.ForeignKey(Token, blank=False, null=False)
alert = models.ForeignKey(Alert, blank=False, null=False)
created_at = models.DateTimeField(auto_now=True)
is_sent = models.BooleanField(default=False)
is_processed = models.BooleanField(default=False)
error_sending = models.BooleanField(default=False)
# ...
def __unicode__(self):
return u'%s' % (self.alert )
管理者
class AppNotification(admin.ModelAdmin):
fields = ['token','alert','is_sent','is_processed','error_sending']
#
list_display = ('token','alert','created_at','is_sent','is_processed','error_sending')
#
search_fields = ('app__app_name','token__token')
#
list_select_related = True
#
list_per_page = 25
admin.site.register(Notification,AppNotification)