0

1,400 万行以上の巨大なテーブルがあります。すべての varchar データ。このクエリを実行しようとしています。私はすぐに出力を取得します。制限は 800K レコードのみに設定されます。

SELECT *
FROM (SELECT unique_user_id, url, count(url) as url_visit_count, categories, count(categories) as count 
FROM ph_usertrack_data GROUP BY unique_user_id LIMIT 800000) a 
ORDER BY a.url_visit_count DESC LIMIT 100;

100万レコードに制限すると、このエラーが発生します

Incorrect key file for table '/tmp/#sql_6663_0.MYI'; try to repair it

私の一時フォルダーには約 100 GB の大量のスペースがあるため、スペースの問題はありません。処理する行数を増やすと、この問題が発生するのはなぜですか?

4

1 に答える 1

1

私はこれが役立つはずだと思います-

df -h を使用して、 \tmp が独自のパーティションにあるかどうか、およびそれに割り当てられているスペースの量を確認できます。

独自のパーティションにあり、スペースが不足している場合は、次のいずれかを実行できます。

(a) /tmp を変更して、そのパーティションがより多くのスペースを持つようにします (メイン パーティションに再割り当てまたは移動することにより - たとえば、ここを参照) (b) MySql 構成を変更して、別のパーティションで別の一時フォルダを使用するようにします。たとえば、/変数/tmp

こここれも参照してください。

于 2012-07-06T10:36:12.770 に答える