【发布时间】:2011-05-01 21:02:28
【问题描述】:
根据文档:
http://dev.mysql.com/doc/refman/5.0/en/blackhole-storage-engine.html
黑洞存储引擎可用于诊断和将二进制日志卸载到另一台机器上,而无需在该机器上存储数据库。
你还能为这个引擎想出什么其他的创意用途?
【问题讨论】:
标签: mysql
根据文档:
http://dev.mysql.com/doc/refman/5.0/en/blackhole-storage-engine.html
黑洞存储引擎可用于诊断和将二进制日志卸载到另一台机器上,而无需在该机器上存储数据库。
你还能为这个引擎想出什么其他的创意用途?
【问题讨论】:
标签: mysql
使用触发器找到一个:
如果您需要在事务中进行一系列复杂的插入或更新,您可以在应用程序代码中执行这些操作,或者
您可以创建一个“大”blackhole 表,其中包含足够的行来保存所有值。
并创建一个触发器,如:
DELIMITER $$
CREATE TRIGGER ai_bh_table_each AFTER INSERT ON bh_table FOR EACH ROW
BEGIN
DECLARE lastid1 integer;
INSERT INTO table1 VALUES (null, new.field1, new.field2);
SELECT LAST_INSERT_ID() INTO lastid1;
INSERT INTO table2 VALUES (null, new.field3, lastid1);
....
END$$
DELIMITER ;
如果您包含错误检查代码,您甚至可以在不支持它的引擎上模拟事务,例如 MyISAM。
【讨论】:
对于程序测试而言,这似乎是一个很棒的“模拟”数据库。
我经常使用 Python 的内部 SQLite 数据库来处理这些事情,但是拥有一个特定于 MySQL 的模拟数据库会很好;谢谢分享。
(作为最后一步,单元测试可以删除测试表;等等。但“黑洞”引擎会避免该步骤。)
【讨论】: