【发布时间】:2011-12-07 23:28:57
【问题描述】:
我正在使用 Django 构建一个带有 MySQL (MyISAM) 后端的网站。
数据库数据是从多个 XML 文件导入的,这些文件由外部脚本处理并输出为 JSON 文件。每当一个新的 JSON 文件与旧的不同时,我需要擦除旧的 MySQL-db 并使用 manage.py loaddata 重新创建它,(至少这是最简单的方法,我想我可以检查 JSON 之间的差异文件并将它们应用到数据库,但我还没有找到一个好的解决方案(我既不是一个很好的编码器也不是一个网络开发人员)。
无论如何,JSON 文件大约 10 Mb,最终大约有 21,000 行 SQL(预计不会显着增长)。有 7 个表,它们看起来都像这样:
class Subnetwork(models.Model):
SubNetwork = models.CharField(max_length=50)
NetworkElement = models.CharField(max_length=50)
subNetworkId = models.IntegerField()
longName = models.CharField(max_length=50)
shortName = models.CharField(max_length=50)
suffix = models.CharField(max_length=50)
将其导入 MySQL 最多需要一分钟(有时只需 30 秒)。我不知道这种大小的文件是否会出现这种情况?我可以做些什么(如果有的话)来提高性能?
对于它的价值,这里有一些分析器输出https://gist.github.com/1287847
【问题讨论】:
-
确保 settings.py 中的 DEBUG=False。我有一个 300mb 的文件要导入,它通常会运行一个小时左右并失败。我更改了 DEBUG,它在 30 分钟内开始运行并完成。当 DEBUG=True 时,ORM 使用更多内存来缓存查询...
-
这将加载时间缩短了几秒钟。我想这是一个好的开始,谢谢。
标签: python mysql xml django json