MySQL如何快速插入千万级大数据
为了在MySQL中快速插入千万级的数据,可以采取以下几种策略:
- 批量插入:使用单个INSERT语句一次性插入多行数据,而不是为每行数据发送单独的INSERT语句。
- 禁用索引:在插入数据前,可以暂时禁用索引,插入完成后重新创建索引。
- 禁用自动提交:可以通过设置
AUTOCOMMIT=0
来禁用自动提交,批量处理完后再提交。 - 调整批大小:根据服务器性能调整每次插入的批大小,以优化性能。
下面是一个示例代码,展示了如何使用Python和pymysql批量插入数据:
import pymysql
# 连接数据库
connection = pymysql.connect(host='localhost', user='your_user', password='your_password', db='your_db', charset='utf8mb4')
try:
with connection.cursor() as cursor:
# 禁用索引和自动提交
cursor.execute("SET unique_checks=0")
cursor.execute("SET autocommit=0")
# 准备批量插入的SQL语句
sql = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"
values = []
# 生成数据
for i in range(10000000): # 假设我们要插入1000万行数据
values.append((i, i)) # 这里只是示例,实际应该是你的数据
# 每10000行批量插入一次
if len(values) >= 10000:
cursor.executemany(sql, values)
connection.commit()
values = []
# 插入剩余数据
if values:
cursor.executemany(sql, values)
connection.commit()
finally:
connection.close()
在实际应用中,你需要根据自己的数据库、表结构和服务器性能进行调整。记得在生产环境中测试批处理大小,以确保最佳性能。
评论已关闭