31,107,600 行の MySQL データベース テーブルがあります。InnoDB を使用しています。これは CentOS 7 システム上にあります。
テーブルには次の列があります:
- id
- タイムスタンプ
- マック
- データ
- 方向
- サイトID
インデックスを作成したいので、次のコマンドを実行します。
ALTER TABLE MY_TABLE ADD INDEX idx_my_index (mac, site_id, timestamp);
約 30 秒かかり、次のようなメッセージが表示されます。
ERROR 1114 (HY000): The table 'MY_TABLE' is full
私の MySQL は、デフォルトを使用して/var/lib/mysql
データを保存しています。現在、そのフォルダーがあるパーティションには 12 GB の空き容量があり、データベースのサイズは 2.7 GB しかないため、私の知る限り、十分なスペースがあるはずです。
なぜこのエラーが表示されるのでしょうか? オンライン検索によると、一時テーブルを使用していて、一時テーブルのサイズ制限に達している可能性があります。それが原因でしょうか? それとも他の何かでしょうか? これを確認するにはどうすればよいですか?
答え1
ALTER TABLE ステートメントの実行中に、df を使用してすべてのファイル システムのスペース使用量を観察します。別のファイル システム (特に小さなファイル システム) のスペースが急速に減少していないかどうかを確認します (例: tmpfs に /tmp がある場合)。