You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Manjaro系统下MariaDB运行Laravel数据库填充速度过慢原因问询

导致填充速度过慢的可能原因

1. 存储IO瓶颈

  • 你的Manjaro运行在HDD上,而之前的WAMP环境大概率使用SSD,两类存储的随机写入IOPS差距可达数十倍。MariaDB默认配置下每次插入都会触发磁盘刷写,单条插入的场景下HDD的IO上限很容易被打满,直接限制插入速度。
  • 可执行iostat -x 1命令查看磁盘使用率,如果持续跑满100%即可确认是IO瓶颈,同时排查是否有后台更新、文件索引等其他进程占用磁盘IO资源。

2. MariaDB配置差异

  • Manjaro官方源安装的MariaDB默认是通用安全导向的配置,而WAMP集成环境的数据库默认做了开发场景的性能优化,核心差异参数包括:
    • innodb_flush_log_at_trx_commit:默认值为1,每次事务提交都会强制刷日志到磁盘,开发环境可临时改为0或2,写入性能会有明显提升
    • innodb_buffer_pool_size:默认值通常很小,无法缓存插入过程中的索引、数据页,导致每次写入都需要额外读磁盘,建议调整为物理内存的50%~70%
    • 可能额外开启了慢查询日志、通用操作日志,增加了不必要的磁盘写入开销
  • 确认目标表的存储引擎和WAMP环境一致,MyISAM的批量插入性能在HDD上远高于默认配置的InnoDB,但不支持事务。

3. Laravel填充逻辑差异

  • 如果你的Seeder使用循环单条Model::create()插入,每次调用都会单独开启事务,产生大量IO请求,这种模式在SSD上的性能损耗不明显,但在HDD上会被放大。建议改成批量插入,调用Model::insert()一次性传入数百到数千条数据的数组,大幅减少事务和IO次数。
  • 检查Manjaro下的PHP是否开启了opcache,未开启的情况下Laravel代码执行效率会下降,也会拉长整体填充耗时。
  • 确认Laravel数据库连接走Unix Socket而非TCP连接,TCP连接的额外开销在大量小请求场景下会被放大。

4. 系统配置差异

  • 检查HDD的挂载参数,是否开启了noatime、nodiratime,未开启的话每次写入都会更新文件访问时间,增加额外的写入开销。
  • 检查磁盘调度器配置,HDD建议使用bfq调度器,关闭透明大页也能进一步提升MariaDB的写入性能。

内容的提问来源于stack exchange,提问作者liana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:36:05