Ruby 在 Rails / ActiveRecord 和 Table 分区上

Ruby on Rails / ActiveRecord and Table Partitions

到目前为止,我已经阅读了文档并且能够找到任何可以帮助我的东西。我也阅读了大量的博客文章,但似乎没有什么能直接回答我的问题:

是否可以使用 ActiveRecord 在 InnoDB table 中管理 table 分区? 我真的更喜欢保持东西非常干净而且我'我试图避免编写外部脚本以尝试随着时间的推移自动执行 creation/deletion 分区。

我看不出 ActiveRecord 是如何做 DROP PARTITIONREORGANIZE PARTITION 这样的事情的。它甚至可以调用存储过程吗?如果是这样,则构建一个类似于 my blog 中的内容并从 Rails.

中调用它

是的,你可以! 但我不认为有 gem 可以为您做到这一点。

为了执行分区 management 你需要自己做艰苦的工作,并通过以下方式直接通过连接在数据库上 运行 发送你需要的命令

ActiveRecord::Base.connection.execute("ALTER TABLE your_table drop partition p0")

自从我第一次提出这个问题后,又出现了一个解决方案。虽然该解决方案确实需要在 MySQL 或 Maria 上使用 Postgresql,但这不是一个高障碍,因为它或多或少是 Rails.

的默认数据库

Github 上的 Partitioned gem 专门以一种很好的 Railsy 方式处理所有分区机制。