2012-01-11 3 views
1

sqlite3 데이터베이스 파일에 많은 양의 데이터를로드하는 django 앱이 있습니다.django가 설치된 MemoryError

File "/root/codebase/lib/python2.6/site-packages/Django-1.3.1-py2.6.egg/django/db/transaction.py", line 219, in inner 
    self.__exit__(*sys.exc_info()) 
    File "/root/codebase/lib/python2.6/site-packages/Django-1.3.1-py2.6.egg/django/db/transaction.py", line 207, in __exit__ 
    self.exiting(exc_value, self.using) 
    File "/root/codebase/lib/python2.6/site-packages/Django-1.3.1-py2.6.egg/django/db/transaction.py", line 286, in exiting 
    leave_transaction_management(using=using) 
    File "/root/codebase/lib/python2.6/site-packages/Django-1.3.1-py2.6.egg/django/db/transaction.py", line 56, in leave_transaction_management 
    connection.leave_transaction_management() 
    File "/root/codebase/lib/python2.6/site-packages/Django-1.3.1-py2.6.egg/django/db/backends/__init__.py", line 114, in leave_transaction_management 
    self.rollback() 
MemoryError 

내가 내 기능을 조사하고 메모리가 누수되지 않습니다 : 우리는 수백만 개의 항목에 대해 얘기
은 그 실행의 어느 시점에서 던지는 것을 하나의 함수에 입력. 그 밖의 무엇이 여기에서 끝날 수 있습니까?

+2

DEBUG를 True로 설정 했습니까? –

답변

1

기능이 없을 수도 있지만, 거대한 데이터베이스를 사용하는 경우 sqlite 라이브러리가이를 사용하여 테이블을 업데이트 할 수 있습니다. 이렇게 막대한 양의 데이터를 저장해야하는 경우 SQLite에서 MySQL과 같은 완전한 기능의 데이터베이스 서버로 이동해야 할 수 있습니다. https://docs.djangoproject.com/en/dev/faq/models/#why-is-django-leaking-memory

장고

4

는 메모리 누출 알려져 있지 않다. Django 프로세스가 점점 더 많은 메모리를 할당하고 있음을 알았다면 그것을 해제 할 기호가 없으므로 DEBUG 설정이 False로 설정되어 있는지 확인하십시오. DEBUG가 True이면 Django는 실행 한 모든 SQL 문의 복사본을 저장합니다.

(쿼리가 django.db.connection.queries에 저장됩니다. 내가 원시 SQL은? 장고가 실행되는 쿼리를 볼 수있는 방법을 참조하십시오)

문제 False로 설정 DEBUG를 해결합니다.

이처럼) 단지 (reset_queries를 호출하여 기능의 어느 지점에서 수동으로 쿼리 목록을 삭제해야하는 경우 :

from django import db 
db.reset_queries() 
3

SQLite는이 메모리 데이터베이스입니다. 그것은 후자를 위해 하드 드라이브에 저장되지만, 메모리와 상호 작용하기 위해 전체적으로로드됩니다. 이는 본질적으로 시스템의 메모리 자원에 의해 제한된다는 것을 의미합니다. 본격적인 데이터베이스 솔루션이되도록 설계된 것이 아니라 PostgreSQL 및 MySQL과 같은 대형 데이터베이스 솔루션이 과도하게 사용되는 데이터를 처리 할 수있는 신속한 데이터베이스입니다. 또한 개발 환경에서 사용하기 쉽고, 일반적으로 사전 설치되어 있으며, 개발 및 테스트에 사용되는 데이터의 양이 충분합니다. 하지만 프로덕션 데이터베이스로 사용하는 것은 정신 나간 것입니다.

그러나 개발중인 경우에도 "수백만 항목"을 다루는 경우 공식적으로 SQLite를 능가합니다.

관련 문제