我想在mysql数据库中创建一个临时表,它是master replication的成员。我运行查询并创建了临时表,但是,该表是在其中一个服务器中创建的,而不是在复制的另一个成员中创建的。我的问题是,不是所有的查询都应该在两个复制成员中运行?
wztqucjr1#
不,一点也不。引用手册:临时表仅在当前会话中可见,并在会话关闭时自动删除。这意味着,即使在同一服务器上打开另一个连接,也不会看到该表。因此,在多个服务器上创建临时表是没有意义的,至少在dml语句中不使用临时表时是这样。如果使用此表执行update、delete或insert语句,则会复制它,但这取决于复制的方式。如果binlog格式是statement,那么将在复制服务器上的磁盘上,在tmp\u数据变量中指定的目录中创建临时表。如果它是混合的或行的,它会以行格式传输,如果我没记错的话。
1条答案
按热度按时间wztqucjr1#
不,一点也不。
引用手册:
临时表仅在当前会话中可见,并在会话关闭时自动删除。
这意味着,即使在同一服务器上打开另一个连接,也不会看到该表。
因此,在多个服务器上创建临时表是没有意义的,至少在dml语句中不使用临时表时是这样。
如果使用此表执行update、delete或insert语句,则会复制它,但这取决于复制的方式。
如果binlog格式是statement,那么将在复制服务器上的磁盘上,在tmp\u数据变量中指定的目录中创建临时表。
如果它是混合的或行的,它会以行格式传输,如果我没记错的话。