【问题标题】:How to speed up mysql docker container for tests?如何加快 mysql docker 容器的测试速度?
【发布时间】:2020-02-17 10:06:04
【问题描述】:

我使用 docker/docker-compose 来运行服务和测试。其中一项服务是mysql:

db:
    image: mysql:5.6
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    expose:
      - "3306"

有什么方法可以专门针对测试优化容器的速度(例如,将所有内容保存在内存中等)?

【问题讨论】:

  • 嗨,planetp,请说明什么需要这么长时间。插入初始dump.sql?数据库查询?
  • @ckaserer 好吧,我猜都是这样,因为默认情况下mysqld 使用文件系统,并且没有针对仅运行测试进行优化。
  • 什么样的测试?慢查询的主要修复是 (1) 更好的索引,以及 (2) 重新构造查询。

标签: mysql docker testing docker-compose database-performance


【解决方案1】:

如果您有足够的空间,您可以在 RAM 中运行数据库。这可能会加快速度。

services:
  db:
    image: mysql:5.6
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    expose:
      - "3306"
    tmpfs:
      - /var/lib/mysql

来源

【讨论】:

  • 嗯? /var/... 看起来像磁盘位置??
  • 是和不是。是的,这就是容器内应该写入的位置(例如磁盘位置)。 tmpfs 符号改变该文件夹的写入行为。临时存储不会写入主机上的磁盘,而是写入主机系统的内存中。
  • 这似乎加快了测试速度(在我的情况下,大约 5-7%,在 macos 上)。这会比将 MySQL 本身配置为使用内存数据库更高效吗?
  • 没有尝试过,但这意味着与您的目标设置有偏差。不确定权衡是否值得配置偏差的不利影响
  • 哇! WSLv2 上的单元测试从几分钟缩短到几秒钟。但是我没有看到 vmmem 增加任何额外的内存,所以不确定 tmpfs 的实际去向。 PS - 重新启动计算机,我的测试数据库仍然存在。
猜你喜欢
  • 2019-07-22
  • 2012-10-26
  • 1970-01-01
  • 2011-09-30
  • 2012-05-10
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多