我正在构建一个具有对象的应用程序,这些对象的数据存储在mysql表中(跨多个表)。当我需要处理对象(检索对象属性/更改属性)时,我使用mysqldb (select / update)查询sql数据库。然而,由于应用程序的计算非常密集,执行时间简直要了我的命。
想了解是否有将所有数据加载到python中的方法,在这些对象上进行计算/修改,然后对mysql数据库进行完整的数据更新?将数据从数据库一次性加载到这些对象的列表中会提高性能吗?另外,由于数据库大小接近25MB,是否会导致任何内存问题。
提前谢谢。
发布于 2010-09-22 22:47:38
25Mb很小。微观世界。SQL很慢。冰川。
不要浪费时间在SQL上,除非您有transactions (带锁定和多用户)。
如果你在做“分析”,尤其是计算密集型的分析,把所有的数据加载到内存中。
在不太可能的情况下,数据无法放入内存中,然后执行此操作。
如果您从一开始就不需要SQL,请考虑最初接收到的数据以及如何处理这些数据。
Python
或YAML文件。这意味着每个后续程序都可以简单地加载JSON (或YAML)文件并开始进行分析。然而。您不能轻松地更新该文件。你必须创建一个新的。这不是一件坏事。它为您提供完整的处理历史记录。
这可能会比酸洗稍微慢一点。它需要您编写一些帮助器,以便正确地转储和加载JSON对象。但是,您可以读取JSON (和YAML),这将使您在使用该文件时具有一些优势。
发布于 2010-09-23 02:51:08
请查看sqlalchemy,这是Python的对象关系映射器。
sqlalchemy允许您将数据库表映射到Python对象。当您这样做时,所有的操作都可以在Python对象上完成(一旦加载了数据),并且当您完成处理时,您可以更新数据库。
假设您有一台现成的基准计算机,25MB绝对不是什么大问题,您可以将整个数据库缓存到内存中。
https://stackoverflow.com/questions/3770394
复制相似问题