SELECT * FROM City;改变为一系列 query:
SELECT NOW();SELECT * FROM City;SELECT NOW();你同样可以修改原始的语句,例如,向每一条要执行的语句中添加 EXPLAIN 以获取该语句如何被处理的信息,同样也是将原始 query 语句进行改变,变成下面一系列语句:
SELECT * FROM City;EXPLAIN SELECT * FROM City;在上述两个例子中,客户端将会收到比预期更多的结果集。无论你如何控制进入的 query 以及返回的结果,由 proxy 返回的对应 query 数量的结果集必须要与由客户端原始发送的 query 数目相等。 你可以调整客户端代码以便处理由 proxy 返回的多个结果集,但是在大多数情况下,你会希望 proxy 的存在对于客户端来说是透明的。为了保证这一点,query 的数量和结果集的数量应该保持一致,你可以使用 MySQL Proxy 的 read_query_result() 函数来提取额外的结果集信息,以便只返回客户端原始 query 对应的结果集。你可以通过在向 query 队列中添加 query 时,赋予每一个 query 一个唯一的 ID 的方式来保证这点,然后当 read_query_result() 函数 在后续处理中收到结果集时通过匹配该 ID 的方式过滤掉额外的结果集。