问题:
我知道我应该有一个BEFORE DELETE触发器来查看用户是否可以删除一行,以及一个AFTER DELETE触发器来增加用户删除的行数。
我应该如何存储有关数据库用户从该特定表中删除了多少行的信息,以及如何允许数据库管理员向用户添加更多“删除令牌”。
我想创建一个表来存储它,但我想知道没有表是否有不同的方法来做到这一点?这可能听起来像一个奇怪的问题,但我只是想弄清楚更高级的东西是如何工作的。
对于这种粒度,您需要进行相当复杂的设置。
我正在考虑建议几件事
必须对每个用户的 DELETE 数量进行微观管理以减轻 DML 不应成为针对特定表的 DELETE 的以服务器为中心的功能。这应该仍然是一个以应用程序为中心的功能。因此,创建一个可以管理 DELETE 数量的存储过程。
使用真实表的 DELETE 的任何审计跟踪都可能会产生局部磁盘瓶颈,而这种瓶颈很难控制。如果审计跟踪记录在 BLACKHOLE 表中,则将显着减少任何磁盘 I/O 问题,否则这些问题将导致丑陋的后果。如果写入 BLACKHOLE 表,审计跟踪数据将写入哪里?这导致...
MySQL 复制有何帮助?假设该表名为mydb.audittrail. 如果mydb.audittrail在 Prod Server 上使用 BLACKHOLE,它可以复制到具有 MyISAM 的 Slave mydb.audittrail。这将是实际审计数据的位置。唯一的缺点是添加磁盘 I/O 以将审计跟踪信息写入二进制日志。您可以通过将二进制日志存储在 SSD 或 RAM 磁盘上来进一步减少这种情况。
请参阅我对使用多个触发器是否正常? 有关使用 BLACKHOLE 存储引擎和 MySQL 复制进行审计跟踪记录这一概念的更多信息。
| 归档时间: |
|
| 查看次数: |
833 次 |
| 最近记录: |