【问题标题】:Creative uses for the blackhole engine黑洞引擎的创造性用途
【发布时间】:2011-05-01 21:02:28
【问题描述】:

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

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

你还能为这个引擎想出什么其他的创意用途?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    使用触发器找到一个:

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

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

    【讨论】:

      【解决方案2】:

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

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

      (作为最后一步,单元测试可以删除测试表;等等。但“黑洞”引擎会避免该步骤。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-11
        • 1970-01-01
        • 2011-07-21
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 2011-10-21
        相关资源
        最近更新 更多