mysql一次性写入大量数据的时候报错
修改mysql配置
参数解释
1、innodb_buffer_pool_size = 8G
作用:
这是 InnoDB 存储引擎用于缓存表和索引数据的内存区域大小。
数据库主要从内存中读取数据而非磁盘,因此该值越大,系统性能越好(特别是对于大数据量的场景)。
初始值:
MySQL 5.7 及以下:通常为 128 MB。
MySQL 8.0:动态设置,通常是系统总内存的 25%。
推荐值:
设置为可用物理内存的 60%-75%。
如:系统有 4 GB 可用内存,可以设置为 2 GB。
2、max_allowed_packet = 128M
作用:
用于限制 MySQL 客户端和服务器之间传输的最大单个数据包大小(包括 SQL 语句和结果集)。
数据包过大可能导致服务器负载增加,但设置过小会导致大数据写入或查询失败。
初始值:
默认值:4 MB。
推荐值:
如果处理大 JSON 字段或大数据插入,建议设置为 64 MB 或更高(如 128 MB)。
最大值:1 GB。
3、net_write_timeout = 600
作用:
控制服务器在等待客户端写入数据时的超时时间(单位:秒)。
对于写入大数据的场景(如大 JSON 字段),适当增加此值可以避免因超时导致连接中断。
初始值:
默认值:60 秒。
推荐值:
对于大数据操作,建议设置为 300 秒 或更高(如 600 秒)。
4、expire_logs_days=7
作用:
定义二进制日志在过期并被自动删除之前保留的天数,有助于管理硬盘空间,确保不必要的日志不会占用过多磁盘空间。
依照业务需求调整该选项,通常7到30天是较常见的设置。确保你保留足够的日志以支撑你所有的数据恢复策略。
修改完以后记得重启mysql:sudo systemctl restart mysqld