<div dir="ltr">Hi Matthew,<br><br>When somebody performs `x.delete()`, Pony loads all dependent objects to memory and call delete method recursively on them. This is necessary, because potentially any dependent object can have `before_delete` and `after_delete` hooks.<br><br>I think we can do the following improvement here: if we a sure that deleting an object will not invoke any user-defined hooks, we can delegate the deletion to the database. In order to do this, we need to add ON DELETE CASCADE to all foreign keys which Pony defines. This approach has one potential drawback: if any dependent object was already loaded into session cache, Pony will not know that the object was already deleted in the database and will not invalidate cache record.<div><br>In order to avoid cache inconsistencies, we can delete objects via Python, but don't load any columns of dependent objects except primary key values. This way we can potentially reduce memory consumption.<br><br><br>Regards,<br>Alexander</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Feb 13, 2016 at 4:22 PM, Matthew Bell <span dir="ltr"><<a href="mailto:matthewrobertbell@gmail.com" target="_blank">matthewrobertbell@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Hi,<br><br></div>I have measured a script doing:<br></div>  x = X.get(1)<br></div>  x.delete()<br><br></div>using 5.7GB ram. the object has a lot of related object, through one-to-many relations. Is there a way to stop all of this memory being used?<br><br></div>Thanks<span class="HOEnZb"><font color="#888888"><br clear="all"><div><div><div><div><div><div><div><div><br>-- <br><div>Regards,<br><br>Matthew Bell<br></div>
</div></div></div></div></div></div></div></div></font></span></div>
<br>_______________________________________________<br>
ponyorm-list mailing list<br>
<a href="mailto:ponyorm-list@ponyorm.org">ponyorm-list@ponyorm.org</a><br>
<a href="/ponyorm-list" rel="noreferrer" target="_blank">/ponyorm-list</a><br>
<br></blockquote></div><br></div>