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

mysql(ほぼ)完全な監査

    うーん、私もこれについて考えていました。

    • テーブルごとにテーブルを保持するためのリビジョンを保持することは、個人的にはそれほど問題にはなりませんが、ちょっと。
    • ユーザー名は、私が信じるユーザー定義変数で保持できます(セッション開始後、SET @user='someone'のようなものを発行します 、そしてそれを使用します。
    • INSERT、UPDATE、DELETEの後にトリガーがある限り、前/次の値を取得するのは簡単なクエリです。古い値のみを保存します。

    つまり、列(a、b、c)を持つテーブルの場合、列(user_id、modtime、a、b、c)を持つテーブルを作成します。

    主な欠点:

    • バッチ更新は遅い (したがって、慎重にリビジョンを保持するためにテーブルを選択してください)
    • データ重複排除デラックス、あなたは/十分なストレージスペースが必要です
    • 「関連する」データはリビジョンをトリガーしません(つまり、group_membersを変更します テーブルは実際にはgroupsを変更しません テーブル、groupsの時点としてそれを保持したい場合があります group_membersを掘り下げるのではなく 変更。

    全体として、それは私には良い取引のように思えますが、実際にはめったに見たことがないので、必要があります なぜそれが悪いのか説得力のある理由があるので、私はそれらの答えを待ちます。




    1. カスタムビルド統計

    2. MDB(Access)ファイルをMySQL(またはプレーンSQLファイル)に変換するにはどうすればよいですか?

    3. PostgreSQL 11のデプロイと管理:ClusterControl1.7.1の新機能

    4. 最大値で個別の行を取得する方法