sql >> データベース >  >> RDS >> Mysql

テーブル'/tmp/#sql_3c51_0.MYI'のキーファイルが正しくありません。修復しようとしました

    この問題は、/tmpフォルダーのディスク容量が不足していることが原因です。/tmpボリュームは、一時テーブルの作成が必要なクエリで使用されます。クエリがInnoDBのテーブルのみを使用している場合でも、これらの一時テーブルはMyISAM形式です。

    いくつかの解決策は次のとおりです。

    • 一時テーブルが作成されないようにクエリを最適化します(クエリを書き直したり、複数のクエリに分割したり、適切なインデックスを追加したり、 pt-query-digest およびEXPLAIN <query> )これを参照一時テーブルに関するPerconaの記事
    • MySQLを最適化して、一時テーブル(sort_buffer_size、join_buffer_size)を作成しないようにします。参照: https://dba.stackexchange.com/questions/53201/mysql-creates-temporary-tables-on-disk-how-do-i-stop-it
    • テーブルを小さくします。可能であれば、不要な行を削除してください
    • SELECT table1.col1, table2,col1 ...を使用します select *の代わりに クエリで必要な列のみを使用して、より小さな一時テーブルを生成する
    • より少ないスペースで済むデータ型を使用する
    • /tmpフォルダーが存在するボリュームにディスクスペースを追加します
    • TMPDIRを設定して、mysqlによって一時フォルダユーザーを変更します mysqld起動前の環境変数。ポイントTMPDIR より多くの空き領域があるディスクボリューム上のフォルダに移動します。 tmpdirを使用することもできます /etc/my.cnfのオプション または--tmpdir mysqldサービスのコマンドラインで。参照:B.5.3.5MySQLが一時ファイルを保存する場所


    1. MySQLのSUBDATE()とDATE_SUB():違いは何ですか?

    2. PostgreSQL監査ログのベストプラクティス

    3. JDBCバッチ挿入例外処理

    4. ScrapyのMySQLデータベースへのアイテムの書き込み