代码之家  ›  专栏  ›  技术社区  ›  badperson

MySQL插入/更新后更新缓慢,并通过源加载

  •  0
  • badperson  · 技术社区  · 8 年前

    我有一个带有tomcat/mysql的j2ee web应用程序,我正在家里开发,我把它部署在一个家庭服务器上。我花了一些时间升级它,我对DB模式做了一些修改。

    我重新编写了Java/JSP/JavaScript的一部分,然后将数据库转储到本地桌面上的文本文件中,复制到服务器,然后通过 source 命令,使其成为生产数据库。

    当我这样做的时候,我立刻注意到插入/更新非常缓慢。在以前的数据库版本中,我从来没有遇到过这样的问题。

    我尝试完全删除数据库并重新创建,再次使用mysql 来源 命令。写得还是很慢。

    db的生产版本和测试版本都是在ubuntu上运行的mysql。

    test :  5.7.22-0ubuntu18.04.1 
    server: 5.7.20-0ubuntu0.16.04.1 
    

    我不知道16.04.1是否有什么不同,但之前版本的数据库没有问题。

    我已经做了一些搜索,大多数结果都与innodb设置有关。但是由于之前的版本没有问题,我想这是显而易见的,比如文本文件导入了一些我没有看到的设置。

    mysqldump文件中的所有表的顶部都有:

    LOCK TABLES `address` WRITE;
    /*!40000 ALTER TABLE `address` DISABLE KEYS */;
    

    不确定这是否是问题的一部分?我对表锁的理解有限,它与用户及其当前会话有关吗?但是,以前的版本使用的mysql转储文件没有这个问题。

    所有表都使用Simple自动增量值来主键,而DB很小,大多数表只有大约1000行,而我现在是唯一的用户。

    此外,数据库的测试版本具有相同的模式,运行时没有问题。

    有什么想法吗? 谢谢!

    1 回复  |  直到 8 年前
        1
  •  0
  •   badperson    8 年前

    我可以通过在/etc/mysql/mysql.conf.d/mysqsld.cnf中添加var来解决这个问题:

    innodb_flush_log_at_trx_commit=2
    

    找到几个问题 here ,re innodb设置和 here 用于检查数据库设置