すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB for MySQL:データ変更に関するベストプラクティス

最終更新日:Jun 11, 2024

このトピックでは、データを更新、削除、およびインポートする方法について説明します。

INSERTおよびREPLACE INTOステートメントを実行して、バッチモードでデータを書き込み、データ書き込みパフォーマンスを向上させることができます。 データを書き込むときは、次の項目に注意してください。

  • 各INSERTまたはREPLACE INTOステートメントによって書き込まれるデータの行数は、1,000を超える場合があります。 ただし、書き込むデータの総量は16 MBを超えることはできません。

  • データがバッチモードで書き込まれる場合、書き込みレイテンシは、データが行ごとに書き込まれる場合よりも低い。

  • エラーが発生した場合は, データが書き込まれていることを確認するために再試行する必要があります。 リトライ動作は、データが繰り返し書き込まれることを引き起こし得る。 次に、テーブルの主キーに基づいて重複する行を削除できます。

データの更新

AnalyticDB for MySQLは、データを更新するための複数のメソッドを提供します。 次の方法を使用することを推奨します。

  • データが高頻度で更新され、主キーに基づいて行ごとに上書きされる場合、REPLACE INTO文を実行してデータを一括更新できます。

  • プライマリキーに基づいてデータが更新される頻度が低い場合は、REPLACE INTOまたはUPDATEステートメントを実行して、1行のデータを更新できます。

  • 条件に基づいてデータの更新頻度が低い場合は、UPDATE文を実行してデータを更新できます。

データ、パーティション、またはテーブルの削除

AnalyticDB for MySQLは、データを削除する複数のメソッドを提供します。 次の方法を使用することを推奨します。

  • プライマリキーに基づいてデータが削除される頻度が低い場合、DELETE FROM WHERE PK='xxx' 文を実行してデータを削除できます。

  • 条件に基づいてデータが削除される頻度が低い場合は、DELETE文を実行してデータを削除できます。

  • TRUNCATE TABLE db_name.table_name PARTITION partition_nameステートメントを実行して、リストパーティションを削除します。

  • TRUNCATE TABLE db_name.table_nameステートメントを実行して、すべてのリストパーティションを含むテーブルを削除します。

リアルタイムでデータを一括インポート

  • 一括インポート: この方法は、大量のデータをインポートする必要があるシナリオに適用できます。 インポート処理中に、元のデータを照会できます。 インポートが完了したら、AnalyticDB for MySQLで新しいデータをクエリできます。 インポートが失敗した場合は、元のデータにロールバックできます。 元のデータは引き続き照会できます。

    たとえば、MaxComputeまたはObject Storage Service (OSS) からAnalyticDB For MySQLにデータをインポートする場合、INSERT OVERWRITE SELECTステートメントを実行してデータを一括インポートすることを推奨します。 詳細については、「外部テーブルを使用してdata Warehouse Editionにデータをインポートする」をご参照ください。

    説明

    単一のテーブルからデータを一括インポートすると、インポートタスクは連続して実行されます。 複数のテーブルからデータを一括インポートする場合、インポートタスクは並列に実行されます。 デフォルトでは、2つのタスクが並行して実行されます。

    たとえば、MaxComputeからAnalyticDB For MySQLにデータをインポートする場合、MaxComputeの1つのテーブルのさまざまなパーティションにあるデータがキューに入れられ、連続してインポートされます。

  • リアルタイムインポート: この方法は、数百万のテーブルデータなど、少量のデータがインポートされるシナリオに適用できます。 たとえば、Elastic Compute Service (ECS) でホストされているApsaraDB RDS For MySQLまたはセルフマネージドMySQLデータベースからAnalyticDB for MySQLにデータをインポートする場合は、INSERT INTOステートメントを実行することを推奨します。 詳細については、「外部テーブルを使用してdata Warehouse Editionにデータをインポートする」をご参照ください。

説明

AnalyticDB for MySQLにデータをインポートすると、インポートタスクはAnalyticDB for MySQLのリソースを使用します。 データクエリプロセス中にデータをインポートする場合は、1秒あたりの低クエリ数 (QPS) でインポート操作を実行することをお勧めします。