AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-581281

Dennis CM's questions

Martin Hope
Dennis CM
Asked: 2020-08-24 08:02:18 +0800 CST

AWS RDS MySQL 随着时间的推移变慢

  • 7

我已经阅读了很多关于这个主题的帖子,但没有一篇是关于 AWS RDS MySQL 数据库的。从三天前开始,我在 AWS EC2 实例中运行一个 python 脚本,该脚本在我的 AWS RDS MySQL 数据库中写入行。我必须写 3500 万行,所以我知道这需要一些时间。我定期检查数据库的性能,三天后(今天)我意识到数据库正在变慢。开始时,前 100,000 行仅在 7 分钟内写入(这是我正在使用的行的示例)

0000002178-14-000056    AccountsPayableCurrent  us-gaap/2014        20131231    0   USD 266099000.0000

三天后,数据库已经写入了 5,385,662 行,但现在写 100,000 行需要将近 3 个小时。怎么了?

我正在运行的 EC2 实例是 t2.small。如果需要,您可以在此处查看规格:EC2 SPECS 。我正在运行的 RDS 数据库是 db.t2.small。在此处查看规格:RDS SPECS

我将在此处附上一些关于数据库和 EC2 实例性能的图表: Db CPU / Db Memory / Db Write IOPS / Db Write Throughput / EC2 Network in (bytes) / EC2 Network out (bytes)

如果你能帮助我,那就太好了。非常感谢。

编辑 1:我如何插入行? 正如我之前所说,我有一个在 EC2 实例上运行的 python 脚本,该脚本读取文本文件,使用这些值进行一些计算,然后将每个“新”行写入数据库。这是我的一小段代码。 我如何阅读文本文件?

for i in path_list:
  notify("Uploading: " + i)
  num_path = "path/" + i + "/file.txt"
  sub_path = "path/" + i + "/file.txt"

  try:
    sub_dict = {}
    with open(sub_path) as sub_file:
      for line in sub_file:
        line = line.strip().split("\t")
        sub_dict[line[0]] = line[1] # Save cik for every accession number
        sub_dict[line[1] + "-report"] = line[25] # Save report type for every CIK
        sub_dict[line[1] + "-frecuency"] = line[28] # Save frecuency for every CIK

    with open(num_path) as num_file:
      for line in num_file:
        num_row = line.strip().split("\t")

        # Reminder: sometimes in the very old reports, cik and accession number does not match. For this reason I have to write 
        # the following statement. To save the real cik.

        try: 
          cik = sub_dict[num_row[0]]
        except:
          cik = num_row[0][0:10]

        try: # If there is no value, pass
          value = num_row[7]
          values_dict = {
                  'cik': cik, 
                  'accession': num_row[0][10::].replace("-", ""),  
                  'tag': num_row[1], 
                  'value': value, 
                  'valueid': num_row[6], 
                  'date': num_row[4]
                  }

          sql = ("INSERT INTO table name (id, tag, value_num, value_id, endtime, cik, report, period) "
              "VALUES ('{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}')".format(
                  values_dict['cik'] + values_dict['accession'] + values_dict['date'] + values_dict['value'].split(".")[0] + "-" + values_dict['tag'], 
                  values_dict['tag'], 
                  float(values_dict['value']), 
                  values_dict['valueid'], 
                  values_dict['date'], 
                  int(values_dict['cik']), 
                  sub_dict[values_dict['cik'] + "-report"], 
                  sub_dict[values_dict['cik'] + "-frecuency"]
                  ))

          cursor.execute(sql)
          connection.commit()

我知道没有什么except:可以try表达的,但这只是脚本的一部分。我认为重要的部分是我如何插入每一行。如果我不需要使用这些值进行计算,我将使用Load Data Infile将文本文件写入数据库。我只是意识到commit每次插入一行时可能不是一个好主意。我将尝试在 10,000 行左右之后提交。

mysql amazon-ec2 amazon-web-services rds
  • 3 个回答
  • 2544 Views
Martin Hope
Dennis CM
Asked: 2020-07-04 01:19:02 +0800 CST

MySQL:正常的 CPU 利用率,但内存不足。我应该担心吗?

  • 0

我在 EC2 实例中运行一个繁重的 python 脚本。该脚本将表格(财务报告)插入 MySQL 服务器。有很多桌子,总数是240.000张桌子。我在 1 天前启动了 python 脚本,这些是 MySQL 服务器的统计信息。CPU 利用率/内存正如您所见,cpu 利用率似乎正常,但自脚本开始运行以来内存已下降。请注意,我只运行此脚本,MySQL 没有其他工作。如何保持内存稳定?

mysql memory amazon-web-services amazon-rds
  • 1 个回答
  • 68 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve