私はここで多くの時間をかけて解決策を見つけるために来てくれました。そして、ついに私は最初の質問を書こうと決めました。テーブル内の複数のパーティションをサブパーティション化
私は初めてデータベースをパーティション化してマウントする必要がありますが、単純なパーティション化ではないので、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" キーでパーティションを作成する必要があります。それはすべてOKです
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
);
ここまで。
メインテーブルをいくつかのサーバに分割したら、すべてのパーティションの内容を日付フィールド(receivedAt)でサブパーティションに分割する必要があります。
理由は、データベースは1年を通して企業内のすべてのサーバーのイベントを格納しなければならず、 "server1"と "server2"の両方が毎月3ミリオンの行を作成するからです。私たちが必要とするほとんどのクエリは、まずサーバーによって行われ、選択したサーバーに対してフィルタリングされたイベントのリストが取得されると、日付で検索して、探しているイベントを見つけます。
したがって、サブパーティションをp01およびp02パーティションに作成するスクリプトをreceivedAtフィールドでソートする方法を教えてください。
理解できないことがある場合は教えてください。私はそれを言い換えます。
ありがとうございます。
よろしくお願いいたします。 Xavidpr