当我使用MySQLdb
或oursql
等客户端库时,我怎么知道它是否使用预处理语句?
无论如何,我能说出服务器端的区别吗?也许通过查看某种日志?
编辑:我正在使用MySQL5.1
答案 0 :(得分:2)
假设客户端具有使用存储过程的权限,则必须使用某种形式的日志记录。
如果您拥有对客户端的控制权,则可以让客户端记录所有请求并检查该日志。
如果您无法控制客户端,则可以在数据库服务器上打开详细日志记录,并检查SQL语句与客户端ID。
如果您没有对数据库进行这种控制,您可以通过修改它们来从存储过程中“记录”,也可以将用户发出请求和时间戳等插入到日志表中。
这些选项大致按优先顺序列出。
阅读this link了解启用常规查询记录所涉及的内容。来自该链接的précis:
通用查询日志是mysqld正在做什么的一般记录。客户端连接或断开连接时,服务器会将信息写入此日志,会记录从客户端收到的每个SQL语句。
从MySQL5.1开始,您可以在运行时启用general_log
:SET GLOBAL general_log = 1
使用SELECT @@general_log_file
找到日志文件。
答案 1 :(得分:1)
您需要启用MySQL general_log表/功能。您可以在使用它的客户端看到PREPARE语句。