私が働いているところには、ジレンマがあります。私たちは、1テーブルが非常に大きくなっているデータベース(MariaDB 10)を使用しています(これは107.4GiBなので、1181万行です)。これはもちろん、システムのパフォーマンスに影響します。 私と同僚が議論していたので、彼はそのテーブルでパーティションを使用することを提案しました。これにより、パフォーマンスは向上しますが、DBのサイズは縮小されません。 しかし、以前は、そのテーブルから2年以上古いデータを別の場所にあるデータベースの正確なコピーに移動するcronジョブを作成していました。 私はそれがより効果的な方法だと感じます。私はこれを実行するだけでパフォーマンスを向上させるだけでなく(cronjobが実行されている間は除く)、テーブルのサイズも小さくなることがわかっています。 とにかくこの古いデータにお客様が興味を持っているとは考えていません。パーティショニングと追加のデータベース
質問:あなたは何を選択しますか?古いデータは使用されず、メインDBをよりきれいに保つため、私の選択肢が好きです。私の同僚は、常に負荷が少なく、顧客が古いデータにアクセスできるため、ソリューションを好む。
私はパーティショニングを使用するためにプロのいくつかを読んだことがあるが、/これが最も重要であり、問題のテーブルには、いくつかのクエリのを使用しています
を配置パーティショニングし、別のデータベースに古いデータを移動する間、まだ比較を発見していません挿入:
INSERT INTO ".$defaultDataTable." (
sensor_data_type_id,
sequence_number,
value,
flag,
datetime
) VALUES (
'".Database::esc($sdtid)."',
'".Database::esc($valueSequence)."',
'".Database::esc($value)."',
'".Database::esc($valueSensorDataFlagsExtended)."',
'".Database::esc($valueDateTime)."'
);
データは、アプリケーションのいくつかのページで選択されていますが、1例は以下の通りです。
SELECT
ws_sensor_data_type.sensor_data_type_id as sensor_data_type_id,
ws_sensor_data_type.name as sensor_data_type_name,
ws_sensor_data_type.equation_id as equation_id,
ws_sensor.name as sensor_name,
ws_equation.description as data_type_name,
ws_basestation.network_id as network_id,
ws_basestation.name as basestation_name,
ws_basestation.worldwide_id as worldwide_id,
ws_client.name as client_name,
ws_sensor.device_type_id as device_type,
ws_sensor.device_id as device_id
FROM
ws_sensor_data_type,
ws_sensor,
ws_basestation,
ws_client_basestation,
ws_client,
ws_equation
WHERE ws_sensor.sensor_id = ws_sensor_data_type.sensor_id
AND ws_sensor.basestation_id = ws_basestation.basestation_id
AND ws_basestation.basestation_id = ws_client_basestation.basestation_id
AND ws_client_basestation.client_id = ws_client.client_id
AND ws_sensor_data_type.equation_id = ws_equation.equation_id
AND ws_sensor_data_type.sensor_data_type_id = '".Database::esc($sdtid)."'
");
この例では、データとその他の情報が選択され、.CSVエクスポートファイルが作成されています。
私は現在、開発DBのコピーを作成しているので、パーティション作成をテストするためにcreate table文が続きます。
我々は問題になることはありませんUUIDのように使用しないでください。