2013-10-13 66 views
0

我有一个内容类型组成,我想删除超过25万节点。通过查看批量操作删除在需要的方式很多时间(2天),并运行到错误。有没有更快的方式直接通过数据库来完成此操作。因此,例如,我可以清空数据库中包含该内容类型字段的所有表。我觉得会删除这些快100倍,但它会导致我的网站的问题做直数据库的?删除节点直接从数据库

回答

0

激活Devel模块的查询日志记录功能。删除一个节点。查看执行哪些查询以删除节点。这应该给你需要做删除一个节点,包括挂钩执行的查询有什么不错的图片。

你也可能想看看node_delete_multiple(),看看有什么节点删除(例如搜索索引重建)在其他动作将被执行。

为了了解存在哪些相关钩子实现的图片,你能砍module_invoke_all()将呼叫记录到hook_node_deletehook_entity_delete和检查,如果他们做的比执行数据库查询等其他任务。

有了这些信息,您可以编写一个PHP脚本或Drush命令,该命令可以比多次呼叫node_delete_multiple()更有效地删除多个节点。尤其是引导Drupal并不需要完成(或者至少不经常)。


在另一方面,这只是问题的第一个50个节点上呼吁node_delete_multiple(),直到所有相关节点都走了Drush命令更快实现。可能值得接受增加的处理时间来节省开发时间。