Mysql はテーブル内の古いデータを定期的にクリアし、いくつかのデータを保持します (推奨)

Mysql はテーブル内の古いデータを定期的にクリアし、いくつかのデータを保持します (推奨)

以下の目標を達成するため:

Mysql データベースは、一定の間隔 (2 時間または 1 日、カスタマイズ可能) でライブラリ内のテーブルを定期的に判断します。このテーブルのデータが 20 レコードを超える場合 (このデータもカスタマイズ可能で、200 レコードにすることもできます)、最新の 10 レコードが保持されます (このデータもカスタマイズできますが、以前のデータ レコード数以下である必要があります)。

解決策について簡単に説明します(後ろから前に向かって導き出されます)。

1. タイマーを開始します。タイマーは次の 2 つのことを行います。

⑴時間間隔を設定する

⑵ストアドプロシージャを呼び出す

2. 次の 2 つのことを実行するストアド プロシージャを作成します。

⑴ テーブル内のデータエントリ数が 20 を超えているかどうかを判断します。20 を超える場合は、次の手順を実行します。

⑵ 最新の10件のデータを残し、残りの古いデータを削除します。これには、最新のデータ ID の値が大きくなるように、テーブルの主キー ID が増加する必要がります。現在のテーブルで最大の ID を見つけて 10 を減算して「delete node」を取得し、delete ステートメントに where id <'delete node' と記述します。結果は正確ではないかもしれませんが、おおよその効果は達成できます。

増分される主キー ID を持つデータ テーブルがあるとします。このテーブルのデータは増え続けます。次に、5 秒ごとに最新の 10 個のデータをデータ テーブルに保存し、その他を削除する必要があります。

コードプロセスは次のとおりです。

1. まず、pro_clear_data という名前のストアド プロシージャを定義します。縦棒 (“|”) が欠落していないことを確認してください。

区切り文字 |
 存在する場合はプロシージャを削除します pro_clear_data |
 プロシージャ pro_clear_data() を作成します。
  始める 
  
   SET @datas_count=(SELECTCOUNT(id) FROM datas);
	   IF(@datas_count>20) の場合
	  
   SET @max_id=(SELECT MAX(id) FROM datas);  
	 @max_id を @max_id - 10 に設定します。
    id<@max_id; の場合、`datas` から削除します。   
  終了の場合;
  
  終わり
 |

2. event_time_clear_dataという名前のタイマーを作成する

グローバルイベントスケジューラを 1 に設定します。 
 存在しない場合はイベントを作成 event_time_clear_data
 
 スケジュールどおりに5秒ごとに
 
 完了時に保存 
 
pro_clear_data() を呼び出してください。

3. これは最も簡単ですが、最も重要です。タイマーは手動で開始する必要があります。そうしないと機能しません。

ALTER EVENT event_time_clear_data を ON にする 
 
完了保存を有効にする;

ストアド プロシージャを作成し、タイマー コードを個別に作成します。

データは 5 秒ごとに自動的にクリアされ、最新の 10 件のレコードが保持されます。

さらに、タイマーをオフにするコードは次のとおりです。

ALTER EVENT event_time_clear_data を ON にする 
 
 完了保存無効;

ストアド プロシージャを削除するコードは次のとおりです。

プロシージャ pro_clear_data を削除します。

イベントについて:

MySQL バージョン 5.1 では、イベントの概念が導入され始めました。イベントは「時間トリガー」であり、トリガーのイベント トリガーとは異なります。イベントは Linux crontab のスケジュールされたタスクに似ており、時間トリガーに使用されます。これを単独で使用するか、ストアド プロシージャを呼び出すと、関連する SQL ステートメントまたはストアド プロシージャが特定の時点でトリガーされます。

イベントを削除:

存在する場合はイベントを削除 event_time_clear_data1

これで、MySQL を実装してテーブル内の古いデータを定期的にクリアし、いくつかのデータを保持する方法についての説明は終わりです。MySQL の定期的なデータクリアに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL のデータテーブルをクリアする例と分析
  • MySQL クエリの重複データ (重複データを削除し、ID が最も小さいデータのみを保持します)
  • MySQL は重複データを削除して最小の ID ソリューションを維持します
  • MySQLで重複データを見つけて削除し、1つの例だけを残す方法の詳細な説明

<<:  ウェブデザインにおけるテキスト入力ボックスのパラメータの説明

>>:  TypeScriptのインデックスシグネチャの理解に関する簡単な説明

推薦する

CSSは下部のタップバー機能を実装します

現在多くの携帯電話には、下部のタブバーを切り替える機能があります。私も最近、同様の機能を見つけました...

Vue の foreach 配列と js の traversal 配列の書き方の説明

Vue foreach配列を記述し、jsで配列をトラバースする方法シナリオVueでAxiosを使用し...

mysql5.6 マスタースレーブ設定と非同期の問題の詳細な説明

目次1. MySQL マスタースレーブレプリケーションの原理2. MySQLのコンパイルとインストー...

MYSQL の 3 つのツリー構造テーブル設計の長所と短所の簡単な分析と共有

目次導入質問設計 1: 隣接リストテーブルデザインSQL の例デザイン 2: パスの列挙テーブルデザ...

JavaScript の instanceof メソッドの手動実装

1. instanceofの使用法instanceof演算子は、コンストラクター関数のprototy...

Linux でログインタイムアウト後に非アクティブなユーザーを自動的にログアウトする

方法1: .bashrcまたは.bash_profileファイルを変更するこれは、ホーム ディレクト...

React 非親子コンポーネントパラメータ渡しのサンプルコード

React は、ユーザー インターフェイスを構築するための JavaScript ライブラリです。 ...

MySQL のインデックスとデータ テーブルを管理する方法

目次テーブルの競合を見つけて修正するインデックス統計の更新テーブルの競合を見つけて修正するデータ テ...

FastApi+Vue+LayUIを使用してフロントエンドとバックエンドを分離するサンプルコード

目次序文プロジェクト設計後部フロントエンドプロジェクトを実行する質疑応答序文これまでの API 開発...

1 つの記事で Vue ミドルウェア パイプラインを学ぶ

SPA を構築する場合、多くの場合、特定のルートを保護する必要があります。たとえば、認証されたユーザ...

MySQL イベント スケジューラに関するよくある話 (必読)

概要MySQL には独自のイベント スケジューラもあり、これは Linux の crontab ジョ...

入力ボックスのプレースホルダーアニメーションと入力検証を実現する純粋なCSS

さらに興味深いコンテンツについては、https://github.com/abc-club/free...

CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する例

テーマ今日は、CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する方法を説...

Vue の better-scroll コンポーネントを使用して水平スクロール機能を実現する

について最近、Vue を学習する過程で、基本的な知識の練習と強化を目的として、Qunar.com の...

この記事では、6つの負荷分散技術の実装方法をまとめます(要約)

ロード バランシングは、サーバー クラスタの展開でよく使用されるデバイスです。マシンのパフォーマンス...