mysql:9387
From: "久松大輔" <"久松大輔" <CQN04630@xxxxxxxxxx>>
Date: Wed, 19 May 2004 15:52:43 +0900
Subject: [mysql 09387] 巨大テーブルの高速操作
久松と申します。 いつも大変参考にさせてもらっています。 あるシステムのトレンドデータを管理するために、MySQL(Windows)を利用しているのです が、SELECT 実行中の INSERT が実行されないので困っています。 トレンドデータは、日時と実数のカラムが約300あるテーブルで、1秒間隔でデータを 保存しています。一ヶ月分のデータを保持しているので、約7GBのテーブルです。件数 は…約270万件になります。古いデータは毎日、DELETE されます。 このデータを表示するために、SELECT を実行するのですが、この時指定した抽出期間に よって、かなり長いSQL実行時間になり、その間、別プロセスで INSERT しているはず のデータが見当たりません。(グラフ表示しているので一目瞭然) SELECT 実行中にそのテーブルがロックされ、 INSERTが拒否されているように思えるので すが、これを回避する方法はないでしょうか? 一応、現在発行しているSQLを書いておきます。 SELECT SQL_SMALL_RESULT DISTINCT PTIME, XXX, XXX, XXX, XXX FROM TRNDLOG WHERE (PTIME > XXXX) AND (PTIME <= XXXX) GROUP BY XXXXX ORDER BY PTIME LIMIT XXX; PTIMEは日時で、これを MINUTE とか SECOND とかを使って GROUP BY の条件にしていま す。 取得するデータは PTIME を含めて300点中の8点です。 ちなみに、Delphi から ODBC 経由でのアクセスです。 よろしくお願いします。
-> 9387 2004-05-19 15:52 ["久松大輔" <CQN04630] 巨大テーブルの高速操作 9390 2004-05-19 22:45 ┗[SUGAWARA Hajime <sug] 9392 2004-05-20 09:02 ┗["久松大輔" <CQN04630] 9395 2004-05-20 11:30 ┣[SUGAWARA Hajime <sug] 9397 2004-05-20 11:56 ┃┗[SUGAWARA Hajime <sug] 9398 2004-05-20 12:48 ┃ ┗["久松大輔" <CQN04630] 9396 2004-05-20 11:46 ┗[SUGAWARA Hajime <sug]