我希望能在每个查询的开头添加一个小注释,这样当我在进程列表或“mytop”中看到它时,就能知道它在哪里运行。
这样的操作是否可行?
我不确定这个方法是否有效,但值得尝试。
只需在正常发送的任何SQL查询之前添加"/* some comment or tag */ "
即可。
可能MySQL服务器会将此注释作为其查询分析/准备的一部分删除,但也可能会保留它,因此在日志和其他监视工具中显示为这样。
如果注释被剥离,并且假设是SELECT查询,则可以对上述内容进行轻微变化,将计算列作为SELECT后的第一件事添加,例如
SELECT IF('some comment/tag' = '', 1, 0) AS BogusMarker, here-start-the-original-select-list
-- or
SELECT 'some [short] comment/tag' AS QueryID, here-start-the-original-select-list
/*!<min-version> code here */
为了嵌入只由MySQL解释的代码,而且仅适用于指定最低版本的MySQL。
这在文档 9.7 Comments 中有详细记录(例如mysqldump中使用)。
这些注释不会被解析,并且不像普通注释那样包含在进程列表中,即使代码实际上没有被执行。
因此你可以这样做:
/*!999999 comment goes here */ select foo from bla;
为了在进程列表中显示注释,但不改变代码。(直到MySQL开发人员决定膨胀其版本号并发布一个编号超过99.99.99的版本,在这种情况下,您将只需添加另一个数字。
SELECT IF('owner' = 'joe', 'additional comment', original_first_column)
,以避免额外的列。 - Tgrmysql
命令行客户端会这样做。 - Bill Karwin