如何优化knex迁移?

时间:2017-09-21 07:51:21

标签: node.js knex.js bookshelf.js

我正在开发一个项目,从一开始就使用bookshelfjs(使用knexjs迁移系统)(1年半)。 我们现在只有少于80次迁移,并且开始花费大量时间(超过2分钟)来运行所有迁移。我们正在使用持续集成进行部署,因此迁移必须在测试过程和部署过程中运行。

我想知道如何优化它。这可能是从干净的状态开始的吗?我不关心失去回滚的可能性。该项目现在更加成熟,我们不需要再对数据结构部分进行迭代了。

有最佳做法吗?我来自Doctrine(PHP)世界,它确实与众不同。

感谢您的建议!

2 个答案:

答案 0 :(得分:0)

  1. 从当前数据库状态创建数据库转储。
  2. 始终使用该转储初始化新数据库以进行测试
  3. 在已初始化的数据库
  4. 之上运行迁移

    这样,迁移系统仅将新添加的迁移应用于现有初始转储的顶部。

答案 1 :(得分:0)

在使用knex.schema.createTable从另一个表中创建带有Foregin键的表时,以后再运行knex migrate:latest时,应该先处理带有外键的表,然后再使用外键。例如,表1具有来自talbe2的外键key1,要确保首先处理表2,可以在表名之前添加数字。然后,在您的迁移文件夹中,将有1table2.js2table1.js。这看起来很笨拙,但效果不错!

相关问题