基本的に膨大な量のデータをデータベースにロードする次のクエリがあります。
LOAD data local INFILE
'/Users/Masters/Model/quotes/sp500hst-1.txt'
INTO TABLE quote fields
TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\r\n'
(quote.date,quote.ticker,quote.open,quote.high,quote.low,quote.close,
quote.volume,@market)
SET market = 'sp500';
ファイル sp500hst-1.txt のスニペットは次のとおりです。
20090821,A,25.6,25.61,25.22,25.55,34758
20090824,A,25.64,25.74,25.33,25.5,22247
20090825,A,25.5,25.7,25.225,25.34,30891
20090826,A,25.32,25.6425,25.145,25.48,33334
ファイルの長さは約150,000行で、「AFTER INSERT」トリガープロシージャ、テーブルのプライマリインデックス以外の2つのインデックスがありますquote
。
何が起こるかというと、クエリが 15 分間実行され続け、「サーバーへの接続が失われました」が返されます。クエリを再度実行すると、影響を受ける行の数で即座に成功が返されます。
時間がかかりすぎる理由は理解できますが、解決する必要があるのは「サーバーへの接続が失われた」不具合です。