首页 > 解决方案 > MySql插入速度太慢

问题描述

我正在开发一个从 GitHub API 接收信息并对其进行分析的项目。问题是当我尝试插入这种巨大的数据时(例如在文件中我插入一个列表列表,如下所示,其中包含 19k 个项目)需要很长时间。我该如何改进呢?谢谢。

       for i in commits_array:
            for j in i[-1]:
                self.insert_value_to_files_DB(j)


    def insert_value_to_files_DB(self, array):
    try:

        sql = "INSERT INTO files (file_count,file_sha,file_name,file_status,file_additions,file_deletions,file_changes,commit_sha) VALUES (%s, %s, %s, %s,%s, %s, %s,%s)"
        self.cursor.execute(sql, array)
        self.connection.commit()
    except mysql.connector.Error as error:
        print("Failed to insert into MySQL table {}".format(erro

标签: pythonmysqlbulkinsertbulk-load

解决方案


19,000 行对于 dbms 来说并不大。它很小。

在开始插入行之前,请执行

self.connection.start_transaction()

然后每隔一百行左右

self.connection.commit()
self.connection.start_transaction()

然后,当你完成后,做一个最终的 commit()。

在插入时,提交操作需要时间。将多行放入一个提交中会使事情变得更快。


推荐阅读