Just a note, I've heard the built in datastore admin delete code is running much faster recently. You might give it a shot. I have not tried it myself to verify it is running better though (previously it was quite poor).
Robert On Tue, Aug 2, 2011 at 14:54, Stephen Johnson <[email protected]> wrote: > I use the low-level datastore to do the delete by keys. > > On Tue, Aug 2, 2011 at 10:52 AM, Carter Maslan <[email protected]> wrote: >> >> thanks; what delete do you use? >> It looked like deletePersistentAll() accepted only entities (rather than >> key values) >> >> On Tue, Aug 2, 2011 at 9:46 AM, Stephen Johnson <[email protected]> >> wrote: >>> >>> Change your query to something like this: >>> Query query = pm.newQuery("select ek from >>> " + UploadedContent.class.getName()); >>> Where "ek" is the entity key name you use in you JDO class. For example, >>> mine is defined like the following: >>> >>> @PrimaryKey >>> >>> @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) >>> >>> @Extension(vendorName="datanucleus", key="gae.encoded-pk", >>> value="true") >>> >>> private String ek; >>> >>> Then, just query for the keys and do a batch delete on the keys. Right >>> now you're pulling in all the entity data and then deleting the entities >>> which is unnecessary and will slow you do a lot. >>> Stephen >>> CortexConnect (cortexconnect.appspot.com) >>> On Tue, Aug 2, 2011 at 12:17 AM, Carter <[email protected]> wrote: >>>> >>>> Is this the most efficient code for bulk delete? >>>> >>>> Is there a "SELECT __key__" technique that's faster? >>>> >>>> This currently deletes 100 at a time, but it's slow. >>>> >>>> >>>> public long deleteBefore(Date d, long maxRecords) >>>> throws DaoException { >>>> >>>> PersistenceManager pm = pmf.getPersistenceManager(); >>>> Query query = pm.newQuery(UploadedContent.class); >>>> query.setFilter("dateCreated < dateCreatedParam"); >>>> query.declareParameters("Date dateCreatedParam"); >>>> query.declareImports("import java.util.Date;"); >>>> if (maxRecords >= 0) { >>>> query.setRange(0, maxRecords); >>>> } >>>> >>>> List<UploadedContent> entities = new >>>> ArrayList<UploadedContent>(); >>>> try { >>>> entities = (List<UploadedContent>) >>>> query.execute(d); >>>> pm.deletePersistentAll(entities); >>>> } catch (Exception e) { >>>> log.log(Level.SEVERE, e.getMessage(), e); >>>> throw new DaoException(e); >>>> } finally { >>>> query.closeAll(); >>>> pm.close(); >>>> } >>>> return entities.size(); >>>> } >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Google App Engine" group. >>>> To post to this group, send email to [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]. >>>> For more options, visit this group at >>>> http://groups.google.com/group/google-appengine?hl=en. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Google App Engine" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/google-appengine?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google App Engine" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/google-appengine?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
