MySQL
テーブルのサイズを修正する方法またはオプションはありますか? これは循環バッファとして機能し、新しいデータが挿入されるたびに古いデータを上書きします。これは、アプリケーションが統計を収集していて、1 か月前のデータが役に立たなくなった場合に役立ちます。
私はプログラムでこれが可能であることを知っていますが、それをしたくないので、この要求です。
ところで、これはMongoDbのcapped コレクションと呼ばれる機能に似ています。
MySQL
テーブルのサイズを修正する方法またはオプションはありますか? これは循環バッファとして機能し、新しいデータが挿入されるたびに古いデータを上書きします。これは、アプリケーションが統計を収集していて、1 か月前のデータが役に立たなくなった場合に役立ちます。
私はプログラムでこれが可能であることを知っていますが、それをしたくないので、この要求です。
ところで、これはMongoDbのcapped コレクションと呼ばれる機能に似ています。
これを達成するための特定のオプションがあるとは思いませんが、単純なトリガーを使用して機能させることができます。(プログラムによる方法であることは知っていますが、それがmysqlの唯一のpure-sqlオプションだと思います)
CREATE TRIGGER `CapTable` BEFORE INSERT ON `MyTable` FOR EACH ROW BEGIN
SET @NumRows = (SELECT COUNT(*) FROM MyTable);
IF @NumRows > 1000 THEN
DELETE FROM MyTable ORDER BY id LIMIT 1;
/* delete the oldest row, assuming id is auto_increment */
END IF;
END;
先月のデータを破棄したい場合は、主キーでその月の日を使用してください。先月の「26」は翌月の「26」に上書きされます。