Created
December 7, 2015 14:00
-
-
Save amyroi/083d4ead4118cbb9e541 to your computer and use it in GitHub Desktop.
Railsでパーティショニング
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Gem | |
gem 'composite_primary_keys' | |
# 複合keyの設定の為、idのprimary_keyを解除して、複合keyでindex追加 | |
class CreatePageviews < ActiveRecord::Migration | |
def change | |
create_table :pageviews, id: false do |t| | |
t.integer :id, null: false | |
t.integer :article_id, null: false | |
t.integer :category_id, null: false | |
t.integer :genre, null: false | |
t.date :date, null: false | |
t.integer :count, default: 0 | |
t.timestamps | |
end | |
add_index :daily_pageviews, [:id, :date], unique: true | |
# パーティショニング追加 | |
execute <<EOS | |
ALTER TABLE pageviews PARTITION BY RANGE(TO_DAYS(date)) ( | |
PARTITION p_1512 VALUES LESS THAN(TO_DAYS('2016-01-01')), | |
PARTITION p_1601 VALUES LESS THAN(TO_DAYS('2016-02-01')), | |
PARTITION p_1602 VALUES LESS THAN(TO_DAYS('2016-03-01')), | |
PARTITION p_1603 VALUES LESS THAN(TO_DAYS('2016-04-01')), | |
PARTITION p_1604 VALUES LESS THAN(TO_DAYS('2016-05-01')), | |
PARTITION p_1605 VALUES LESS THAN(TO_DAYS('2016-06-01')), | |
PARTITION p_1606 VALUES LESS THAN(TO_DAYS('2016-07-01')), | |
PARTITION p_1607 VALUES LESS THAN(TO_DAYS('2016-08-01')), | |
PARTITION p_1608 VALUES LESS THAN(TO_DAYS('2016-09-01')), | |
PARTITION p_1609 VALUES LESS THAN(TO_DAYS('2016-10-01')), | |
PARTITION p_1610 VALUES LESS THAN(TO_DAYS('2016-11-01')), | |
PARTITION p_1611 VALUES LESS THAN(TO_DAYS('2016-12-01')), | |
PARTITION p_9999 VALUES LESS THAN MAXVALUE | |
); | |
EOS | |
add_index :pageviews, [:article_id, :count] | |
add_index :pageviews, [:category_id, :count] | |
add_index :pageviews, [:genre, :count] | |
add_index :pageviews, [:date, :count] | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment