黑洞引擎的创造性用途

时间:2011-05-01 21:02:29

标签: mysql

根据文件:
http://dev.mysql.com/doc/refman/5.0/en/blackhole-storage-engine.html

黑洞存储引擎可用于诊断和将二进制日志卸载到其他计算机,而无需将数据库存储在该计算机上。

您可以提出此引擎的其他创意用途吗?

2 个答案:

答案 0 :(得分:3)

使用触发器找到一个:

如果您在事务中需要进行一系列复杂的插入或更新,可以在应用程序代码中执行这些操作,或者

您可以创建一个“大”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。

答案 1 :(得分:2)

似乎是一个很棒的“模拟”数据库,用于程序测试。

我经常使用Python的内部SQLite数据库来做这些事情,但拥有一个特定于MySQL的模拟数据库会很好;谢谢分享。

(作为最后一步,单元测试可以放弃测试表;等等。但是“黑洞”引擎可以避免这一步。)