Mariadb 分区

Mariadb Parititioning

Zabbix 数据库中有 table 命名的历史记录,我已经在此 table 上创建了分区。

分区类型为范围,列类型为UNIX_TYPESTAMP。

更改日期后zabbix服务不会向相关分区插入数据

有什么问题?

以及如何显示所有分区? 能不能请教一下如何将数据写入相关分区?

分区创建语句示例;

                        .
                        .
                        .
 ALTER TABLE zabbix.history_test PARTITION BY RANGE(clock)(PARTITION     
 p28082021  VALUES LESS THAN(UNIX_TIMESTAMP("2021-08-28 00:00:00"    
  ))ENGINE=InnoDB);

服务器版本:10.1.31-MariaDB MariaDB服务器

 EXPLAIN PARTITIONS SELECT * FROM zabbix.history;
 +------+-------------+---------+------------+------+---------------+------ 


 | id   | select_type | table   | partitions | type | possible_keys | key  | 
 key_len | ref  | rows     | Extra |


   |    1 | SIMPLE      | history | p28082021  | ALL  | NULL          | NULL 
   | NULL    | NULL | 18956757 |       |





     SELECT DISTINCT PARTITION_EXPRESSION  FROM 
     INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='history' AND 
      TABLE_SCHEMA='zabbix';
      +----------------------+
      | PARTITION_EXPRESSION |
      +----------------------+
      | clock                |
      +----------------------+


         MariaDB [(none)]> SELECT PARTITION_ORDINAL_POSITION, TABLE_ROWS, PARTITION_METHOD
            FROM information_schema.PARTITIONS
             WHERE TABLE_SCHEMA = 'zabbix' AND TABLE_NAME = 'history';
        +----------------------------+------------+------------------+
        | PARTITION_ORDINAL_POSITION | TABLE_ROWS | PARTITION_METHOD |
        +----------------------------+------------+------------------+
        |                          1 |   18851132 | RANGE            |
        +----------------------------+------------+------------------+



         SELECT FROM_UNIXTIME(MAX(clock)) FROM zabbix.history;
         +---------------------------+
         | FROM_UNIXTIME(MAX(clock)) |
         +---------------------------+
         | 2018-04-07 23:06:06       |
         +---------------------------+


         SELECT FROM_UNIXTIME(MIN(clock)) FROM zabbix.history;
         +---------------------------+
         | FROM_UNIXTIME(MIN(clock)) |
         +---------------------------+
         | 2018-04-06 01:06:23       |
         +---------------------------+

此文档帮助我在时钟列上创建分区。 有创建分区的存储过程,你可以看看

https://www.zabbix.org/wiki/Docs/howto/mysql_partition