如何在Galera集群中使用MySQL临时表?

如何在Galera集群中使用MySQL临时表?,mysql,database-replication,galera,Mysql,Database Replication,Galera,我正在将我的应用程序从一个MySQL服务器扩展到一个3节点的MySQL Galera Gluster。不复制单独的临时表 这个问题有共同的解决方法吗 我当前的代码如下所示: $stmt = " CREATE TEMPORARY TABLE tmp (`city_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL ,INDEX ( `city_id` ) ) "; db_query($

我正在将我的应用程序从一个MySQL服务器扩展到一个3节点的MySQL Galera Gluster。不复制单独的临时表

这个问题有共同的解决方法吗

我当前的代码如下所示:

        $stmt = "
            CREATE TEMPORARY TABLE tmp (`city_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL ,INDEX ( `city_id` ) )
        ";          
        db_query($stmt);
        # travel tips
        $stmt = "
            INSERT INTO tmp
            SELECT city_id
            FROM $DB.$T33 g
            WHERE g.country_code = '$country[code]'
            GROUP BY city_id
        ";          
        execute_stmt($stmt, $link); 
错误消息是:

错误:1146表“test.tmp”不存在

  • CREATE TEMPORARY TABLE
    创建一个仅对创建临时表的会话可见的表。没有其他连接可以看到它
  • 单个连接保持与一个节点的连接
考虑到这两个因素,是否复制这样的表并不重要

  • 基于行的复制是Galera的一项要求
  • MyISAM
    不复制表
对于这两个额外的项目符号,即使
临时表
ENGINE=MyISAM
(或
内存
)也无关紧要

回到你的问题上来。
db\u query
execute\u stmt
做什么

  • 它们是否也连接到服务器?不好的。您的程序只有一个连接
  • 在到达Galera节点之前,它们是否经过某种形式的代理?对它来说,交换节点是不好的