Issue

log_gold_collectパーティション化 #1036

wada opened this at 2021-08-10T17:22:19; closed

Description

opened by wada at 2021-08-10T17:22:19; updated 2025-04-01T16:22:34

log_gold_cahngeテーブル対応 #863

準備

  • ログ移動スクリプト修正

14日後に移動

  • 当日データ移動バッチ作成

log_gold_changeと同じ

  • log_gold_change切り替え時にidをbigintに変更

対応方法

1. ログdbのlog_gold_changeを作り直し、パーティション化
2. 本番dbのlog_gold_changeを同構成(id修正)の新テーブルとスイッチ
3. 集計に必要な当日データを旧テーブルからバッチで移動
集金時に当日集金額を取得するため即時移動
or スイッチ前に移動しておく
4. ログ移動バッチを設定

Comment

#12867 by wada at 2021-08-10T18:27:26; updated 2021-08-10T18:27:26

search_log_gold_collect 使用箇所を log_gold_collect に変更

search_log_gold_collect

  • m_user_detail_gold_collect_log.inc

1日以前のデータ検索用 > log_gold_collect 参照に変更

  • del_log_gold_collect.inc

データ挿入 > 削除

Comment

#12910 by wada at 2021-08-11T16:01:24; updated 2021-08-12T11:04:02

ログ管理テーブル

CREATE TABLE `log_gold_collect` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_no` int(11) NOT NULL,
  `object_id` int(11) NOT NULL,
  `object_no` int(11) NOT NULL,
  `object_lv` int(11) NOT NULL,
  `now_population` float NOT NULL,
  `population` float NOT NULL,
  `business` int(11) NOT NULL,
  `peace` int(11) NOT NULL,
  `security` float NOT NULL,
  `object_population` float NOT NULL,
  `collect_gold` int(11) NOT NULL,
  `plus_population` float NOT NULL,
  `after_now_population` float NOT NULL,
  `after_security` float NOT NULL,
  `item_type` int(11) NOT NULL,
  `item_no` int(11) NOT NULL,
  `reg_date` timestamp NOT NULL,
  PRIMARY KEY (`id`,`reg_date`),
  KEY `user_no` (`user_no`),
  KEY `reg_date` (`reg_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='集金ログ';

Comment

#12911 by wada at 2021-08-11T16:02:04; updated 2021-08-12T11:06:01
#パーティション化
ALTER TABLE log_gold_collect
PARTITION BY RANGE ( UNIX_TIMESTAMP(reg_date) ) (
  PARTITION p202108 VALUES LESS THAN ( UNIX_TIMESTAMP('2021-09-01 00:00:00') ),
  PARTITION p202109 VALUES LESS THAN ( UNIX_TIMESTAMP('2021-10-01 00:00:00') ),
  PARTITION p202110 VALUES LESS THAN ( UNIX_TIMESTAMP('2021-11-01 00:00:00') ),
  PARTITION p202111 VALUES LESS THAN ( UNIX_TIMESTAMP('2021-12-01 00:00:00') ),
  PARTITION p202112 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-01-01 00:00:00') ),
  PARTITION p202201 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-02-01 00:00:00') ),
  PARTITION p202202 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-03-01 00:00:00') ),
  PARTITION p202203 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-04-01 00:00:00') ),
  PARTITION p202204 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-05-01 00:00:00') ),
  PARTITION p202205 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-06-01 00:00:00') ),
  PARTITION p202206 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-07-01 00:00:00') ),
  PARTITION p202207 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-08-01 00:00:00') ),
  PARTITION p202208 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-09-01 00:00:00') ),
  PARTITION p202209 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-10-01 00:00:00') ),
  PARTITION p202210 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-11-01 00:00:00') ),
  PARTITION p202211 VALUES LESS THAN ( UNIX_TIMESTAMP('2022-12-01 00:00:00') ),
  PARTITION p202212 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-01-01 00:00:00') ),
  PARTITION p202301 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-02-01 00:00:00') ),
  PARTITION p202302 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-03-01 00:00:00') ),
  PARTITION p202303 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-04-01 00:00:00') ),
  PARTITION p202304 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-05-01 00:00:00') ),
  PARTITION p202305 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-06-01 00:00:00') ),
  PARTITION p202306 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-07-01 00:00:00') ),
  PARTITION p202307 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-08-01 00:00:00') ),
  PARTITION p202308 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-09-01 00:00:00') ),
  PARTITION p202309 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-10-01 00:00:00') ),
  PARTITION p202310 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-11-01 00:00:00') ),
  PARTITION p202311 VALUES LESS THAN ( UNIX_TIMESTAMP('2023-12-01 00:00:00') ),
  PARTITION p202312 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-01-01 00:00:00') ),
  PARTITION p202401 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-02-01 00:00:00') ),
  PARTITION p202402 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-03-01 00:00:00') ),
  PARTITION p202403 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-04-01 00:00:00') ),
  PARTITION p202404 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-05-01 00:00:00') ),
  PARTITION p202405 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-06-01 00:00:00') ),
  PARTITION p202406 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-07-01 00:00:00') ),
  PARTITION p202407 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-08-01 00:00:00') ),
  PARTITION p202408 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-09-01 00:00:00') ),
  PARTITION p202409 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-10-01 00:00:00') ),
  PARTITION p202410 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-11-01 00:00:00') ),
  PARTITION p202411 VALUES LESS THAN ( UNIX_TIMESTAMP('2024-12-01 00:00:00') ),
  PARTITION p202412 VALUES LESS THAN ( UNIX_TIMESTAMP('2025-01-01 00:00:00') )
);

SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='log_gold_collect';

Comment

#12912 by wada at 2021-08-11T16:31:12; updated 2021-08-19T14:01:12

新テーブルとスイッチ

CREATE TABLE `log_gold_collect__new` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_no` int(11) NOT NULL,
  `object_id` int(11) NOT NULL,
  `object_no` int(11) NOT NULL,
  `object_lv` int(11) NOT NULL,
  `now_population` float NOT NULL,
  `population` float NOT NULL,
  `business` int(11) NOT NULL,
  `peace` int(11) NOT NULL,
  `security` float NOT NULL,
  `object_population` float NOT NULL,
  `collect_gold` int(11) NOT NULL,
  `plus_population` float NOT NULL,
  `after_now_population` float NOT NULL,
  `after_security` float NOT NULL,
  `item_type` int(11) NOT NULL,
  `item_no` int(11) NOT NULL,
  `reg_date` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_no` (`user_no`),
  KEY `reg_date` (`reg_date`),
  KEY `user_no_reg_date` (`user_no`,`reg_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='集金ログ';

RENAME TABLE log_gold_collect TO log_gold_collect__old, log_gold_collect__new TO log_gold_collect;
wada refer at 2021-08-11T16:53:40: 1040:[WIP]log_gold_collectパーティション化
wada refer at 2021-08-12T11:18:23: 1040:【8/19】log_gold_collectパーティション化
wada refer at 2021-08-24T15:49:34: 1080:【8/26】log_gold_collectパーティション化
wada close at 2021-08-26T10:32:02: Close
wada refer at 2021-08-30T17:29:42: 1096:log_del_presentパーティション化