我们在服务器上有一个不合理的大表大小问题,例如:
昨天,创建了一个带有分区的表,开始将数据写入特定的分区。
mysql> show table status like 'in_followers_bots_p'\G
*************************** 1. row ***************************
Name: in_followers_bots_p
Engine: InnoDB
Version: 10
Row_format: Dynamic
Rows: 38517
Avg_row_length: 73
Data_length: 2818048
Max_data_length: 0
Index_length: 1589248
Data_free: 4194304
Auto_increment: NULL
Create_time: 2021-05-04 14:58:32
Update_time: 2021-05-04 14:59:45
Check_time: NULL
Collation: utf8mb4_unicode_ci
Checksum: NULL
Create_options: partitioned
Comment: 但是与此同时,磁盘3.7G上这个表(分区)的大小
-rw-r----- 1 mysql mysql 3.7G May 5 12:29 in_followers_bots_p#p#p05.ibd
mysql Ver 8.0.20
Centos 8
这个问题在许多表格中都有观察到,请告诉我这个问题的原因以及是否有解决办法。我很乐意提供所有必要的信息。
UPD
mysql> SHOW CREATE TABLE in_followers_bots_p\G
*************************** 1. row ***************************
Table: in_followers_bots_p
Create Table: CREATE TABLE `in_followers_bots_p` (
`owner_id` bigint unsigned NOT NULL DEFAULT '0',
`bot_id` bigint unsigned NOT NULL DEFAULT '0',
`month_id` tinyint NOT NULL,
PRIMARY KEY (`bot_id`,`owner_id`,`month_id`),
KEY `in_followers_bots_owner_id_index` (`owner_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
/*!50100 PARTITION BY RANGE (`month_id`)
(PARTITION p01 VALUES LESS THAN (2) ENGINE = InnoDB,
PARTITION p02 VALUES LESS THAN (3) ENGINE = InnoDB,
PARTITION p03 VALUES LESS THAN (4) ENGINE = InnoDB,
PARTITION p04 VALUES LESS THAN (5) ENGINE = InnoDB,
PARTITION p05 VALUES LESS THAN (6) ENGINE = InnoDB,
PARTITION p06 VALUES LESS THAN (7) ENGINE = InnoDB,
PARTITION p07 VALUES LESS THAN (8) ENGINE = InnoDB,
PARTITION p08 VALUES LESS THAN (9) ENGINE = InnoDB,
PARTITION p09 VALUES LESS THAN (10) ENGINE = InnoDB,
PARTITION p10 VALUES LESS THAN (11) ENGINE = InnoDB,
PARTITION p11 VALUES LESS THAN (12) ENGINE = InnoDB,
PARTITION p12 VALUES LESS THAN (13) ENGINE = InnoDB) */```发布于 2021-05-26 12:46:15
通过将数据传输到带有参数ROW_FORMAT=COMPRESSED的分区表中,解决了这个问题。
https://dba.stackexchange.com/questions/291029
复制相似问题