Although  the all rows  are paged into  memory,   they are cached by 
identity map  for query with loading once。
Then the total size of memory  dose not reduce. 
Is that so?
and how can I  clear identity-map  or close indentity-map pattern? 

Thanks for  your help!

在 2015年11月28日星期六 UTC+8上午4:35:00,Michael Bayer写道:
>
>
>
> On 11/27/2015 05:20 AM, Hongxin Song wrote: 
> > In multithreaded scenarios , it is a serious problem , because  the 
> > server  will be oom 
>
> that's part of CPython, first see: 
>
>
>
> http://effbot.org/pyfaq/why-doesnt-python-release-the-memory-when-i-delete-a-large-object.htm
>  
>
> so once you use 2G of RAM, that's permanent.  So don't use 2G of RAM. 
>
> Keep in mind the DBAPI fetches all 1M rows at once no matter what, even 
> if you don't fetch them. But the ORM object might be much bigger than 
> your row. 
>
> The two primary options are to 1. use yield_per() to reduce ORM-level 
> memory use and 2. query only for windows of data at a time to reduce 
> *all* memory use, but more complexity at the query level.  Some 
> discussion is at: 
>
>
> http://stackoverflow.com/questions/7389759/memory-efficient-built-in-sqlalchemy-iterator-generator/7390660#7390660
>  
>
>
>
> > 
> > 在 2015年11月27日星期五 UTC+8下午4:44:50,Hongxin Song写道: 
> > 
> >     <
> https://lh3.googleusercontent.com/-JTTCeJzu3V0/VlgX4JxTCkI/AAAAAAAAAAo/K9fx7wj3LUc/s1600/694275B6-CFE4-49AE-81C1-51F80C67630A.png>
>  
>
> > 
> > 
> >     when  I  query a lot of record from mysql by session.query, which is 
> >     one million more, 
> > 
> >     and  the size of memory  reaches to 2G Byte , I want to release the 
> >     memory *immediately , * 
> > 
> >     *but , try to some kind of method , it does not work * 
> >     * 
> >     * 
> >     *please  help !* 
> > 
> >     <
> https://lh3.googleusercontent.com/-JTTCeJzu3V0/VlgX4JxTCkI/AAAAAAAAAAo/K9fx7wj3LUc/s1600/694275B6-CFE4-49AE-81C1-51F80C67630A.png>
>  
>
> > 
> >     * 
> >     * 
> > 
> >     * 
> >     * 
> >     * 
> >     | 
> >     在此输入代码... 
> >     | 
> >     * 
> >     * 
> >     session_factory = sessionmaker( 
> >         autocommit=False, autoflush=True, 
> >         expire_on_commit=False, bind=engine 
> >     ) 
> > 
> >     * 
> >     * 
> >     Session = scoped_session(session_factory) 
> > 
> >     Base = declarative_base() 
> >     Base.query = Session.query_property() 
> > 
> >     class ORMBase(object): 
> >         @classmethod 
> >         def getlist(cls, **kw): 
> >             return cls.query.filter_by(**kw).all() 
> >     * 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> > Groups "sqlalchemy" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> > an email to sqlalchemy+...@googlegroups.com <javascript:> 
> > <mailto:sqlalchemy+unsubscr...@googlegroups.com <javascript:>>. 
> > To post to this group, send email to sqlal...@googlegroups.com 
> <javascript:> 
> > <mailto:sqlal...@googlegroups.com <javascript:>>. 
> > Visit this group at http://groups.google.com/group/sqlalchemy. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to