gpt4 book ai didi

python - 将数据导入 MySQL 时提高性能?

转载 作者:行者123 更新时间:2023-11-30 23:35:30 24 4
gpt4 key购买 nike

我正在使用 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 秒)。我不知道这种大小的文件是否会出现这种情况?我可以做些什么(如果有的话)来提高性能?

对于它的值(value),这里有一些分析器输出 https://gist.github.com/1287847

最佳答案

有几个解决方案,与其他解决方案一样不错,但这里有一个解决方法可以使您的系统“停机时间”最少,而无需编写数据库同步机制(在大多数情况下这可能是更好的解决方案)。 :

  • 创建自定义 settings_build.py 文件,使用 from settings import * 为新数据库选择一个随机名称(可能在数据库名称中包含日期),通过调用 mysqladmin 创建它,并将名称更新为 DATABASES .
  • 创建 custom django management command (我们称它为 builddb)通过克隆 loaddata 命令或调用它,如果成功,它应该将数据库名称写入 dbname 包含一行的文本文件,并执行重新加载 django ( apache/gunicorn/?) 服务器的 shell 命令。
  • 修改您的 settings.py 以从文本文件加载数据库名称。

现在像这样运行你的构建过程:

./manage.py builddb --settings=settings_build

关于python - 将数据导入 MySQL 时提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7771790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com