Skip to content

Instantly share code, notes, and snippets.

@amyroi
Created December 7, 2015 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amyroi/083d4ead4118cbb9e541 to your computer and use it in GitHub Desktop.
Save amyroi/083d4ead4118cbb9e541 to your computer and use it in GitHub Desktop.
Railsでパーティショニング
# 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