我来这里找到很多次解决方案,几乎总是找到一些适合我的完美答案。现在我终于决定写下我的第一个问题。将表中的多个分区分区
也是我第一次使用分区挂载分区,但不是如此简单的分区,这就是为什么我没有在mysql官方文档中找到任何解决方案。
我有这个表:
CREATE TABLE SystemEvents
(
ID int unsigned not null auto_increment primary key,
ReceivedAt datetime NULL,
DeviceReportedTime datetime NULL,
Facility smallint NULL,
Priority smallint NULL,
FromHost varchar(60) NULL,
Message text,
NTSeverity int NULL,
EventSource varchar(60),
EventUser varchar(60) NULL,
EventCategory int NULL,
EventID int NULL,
InfoUnitID int NULL ,
SysLogTag varchar(60),
EventLogType varchar(60),
)
我需要通过 “FromHost” 键进行分区:
PARTITIOM BY LIST (FromHost)
(
PARTITION p01 VALUES IN ('server1'),
PARTITION p02 VALUES IN ('server2'),
PARTITION p03 VALUES IN ('server3', 'server4'),
PARTITION p04 VALUES IN less than maxvalue
);
直到这里是一切OK。但是这里出现了困难的部分:
一旦主表分区为多个服务器,我需要按日期字段(receivedAt)将每个分区的内容分隔成子分区,如果它是可行的,则为周。
原因是,数据库必须存储整个公司所有服务器的事件,“server1”和“server2”每个月都会创建近3万行。我们需要的大多数查询都是先由服务器完成,然后,一旦我们获得了筛选出的选定服务器的事件列表,我们将按日期搜索,以查找我们正在查找的事件。
那么,你可以指示我如何创建子分区到分区p01和p02的脚本,按receivedAt字段排序?
如果有什么不明白的地方,请告诉我,我会改写它。
非常感谢。
问候。 Xavidpr