MySQLデータベースを使用していて、2つのMyISAMテーブルがあります。1. 1,000万レコード以上のマスタ(inf_article_details)テーブル2.約50,000以上の一時的な(temp_inf_article_details)記録。これらのテーブルの構造は同じで、主キーとして1つの列(データ型としてBIGINT)しかありません。データは、さまざまなデータソースプロバイダの一時テーブルに定期的に格納され、私は一時テーブルからマスタテーブルにデータをプッシュするスケジュールされたジョブを持っています。MyISAMのINSERT/UPDATEクエリのパフォーマンスを向上させる方法
FYI、マスターテーブルは以下のようにマスターテーブル20のパーティション
インデックス情報(inf_articles_details)にキーに区画されている:inf_articles_detailsから
ショーインデックス。
以下のように一時テーブルのインデックス情報(temp_inf_articles_details):
temp_inf_articles_detailsからショーのインデックス;
以下のようにマスターテーブルの結果を説明:
を説明します。
は、以下のように一時テーブルの結果を説明inf_articles_details
SELECT * FROM説明select * from temp_i
表
inf_articles_details
(
ard_ean_code
BIGINT(20)符号なしNULL NOT、
ard_provider_reference
BIGINTをCREATE nf_articles_detailsマスターテーブル(inf_articles_details)構造(70+列は合計周りに存在します) (20)符号なしDEFAULT NULL、
ard_reference
varchar(20)NOT NULL、
ard_modified_date
日時のDEFAULT NULL、
PRIMARY KEY(ard_ean_code
)、
KEYidx_ard_modified_date
(ard_modified_date
)
)ENGINE = MyISAMテーブルのデフォルトの文字セット= UTF8/*!構造KEY()PARTITIONS 20 */
一時テーブル(temp_inf_articles_details)BY 50100パーティションがある(70+カラムは約ある)
符号なし表
temp_inf_articles_details
(
tard_ean_code
BIGINT(20)NOT CREATE NULL、
tard_provider_reference
BIGINT(20)符号なしのDEFAULT NULL、
tard_status
tinyint型(3)符号なしのNOT NULL DEFAULTを '0'、
PRIMARY KEY(tard_ean_code
)、
(tard_status
)idx_status
KEY)ENGINE = MyISAMテーブルのデフォルトの文字セット= utf8を
データ更新作業の一環として、私たちは "ard_ean_code & tard_ean_code" と更新時にこれら2つのテーブルを結合しますテンポラリ・テーブルの値を持つマスタ・テーブルの既存のローを作成し、テンポラリ・テーブルからマスタに新しいローを挿入します。しかし、このデータ更新は、一時テーブルからマスターテーブルへのデータの挿入/更新に時間がかかりすぎています。
パフォーマンスを向上させるために必要な調整はありますか?
ありがとうございました。
に役立ちます願っています。 1行ずつ(一度に全部)行を読んだり、個々の挿入(複数の挿入に対して)を好む場合、またはクライアントの言語からの操作を実行すると、スローダウンが発生する可能性があります。 –
申し訳ありません私の最初の投稿に詳細情報を含めないためです。私は必要な情報を含めました。 – Niranjan