性能模式为预备语句提供了工具,为有两个协议:
二进制协议。这是通过MySQL C API访问映射到底层服务器命令,如下表所示。
C API函数 相应的服务器命令 mysql_stmt_prepare ()
COM_STMT_PREPARE
mysql_stmt_execute ()
COM_STMT_EXECUTE
mysql_stmt_close ()
COM_STMT_CLOSE
协议的文本。这是使用SQL语句访问映射到底层服务器命令,如下表所示。
事先准备好的声明中仪表性能模式涵盖协议。下面的讨论是指服务器命令而不是C API函数或SQL语句。
预处理语句的信息是可用的prepared_statements_instances
表。这个表可以检查准备好的语句中使用的服务器,并提供汇总的统计数据。这个表的大小,控制设置performance_schema_max_prepared_statements_instances
在服务器启动系统变量。
预置语句集合信息取决于声明仪器如下表所示。这些仪器是默认启用。修改,更新setup_instruments
表。
仪器 | 服务器命令 |
---|---|
声明/com/Prepare |
COM_STMT_PREPARE |
声明/com/Execute |
COM_STMT_EXECUTE |
声明/ sql / prepare_sql |
SQLCOM_PREPARE |
声明/ sql / execute_sql |
SQLCOM_EXECUTE |
性能模式管理的内容prepared_statements_instances
表如下:
声明准备
一个
COM_STMT_PREPARE
或SQLCOM_PREPARE
在服务器命令创建一份事先准备好的声明中。如果语句成功检测,添加到新的一行prepared_statements_instances
表。如果声明不能被检测,Performance_schema_prepared_statements_lost
状态变量是递增的。准备语句执行
执行
COM_STMT_EXECUTE
或SQLCOM_PREPARE
命令为一个检测预置语句更新相应的实例prepared_statements_instances
表行。事先准备好的声明中回收
执行
COM_STMT_CLOSE
或SQLCOM_DEALLOCATE_PREPARE
命令为一个检测预置语句删除相应的实例prepared_statements_instances
表行。为了避免资源泄漏,除发生即使事先准备好的声明中仪器前面描述的都是禁用的。
的prepared_statements_instances
表有这些列:
OBJECT_INSTANCE_BEGIN
内存的地址的。
STATEMENT_ID
内部服务器ID指定的声明。文本和二进制协议都使用语句id。
STATEMENT_NAME
的二进制协议,本专栏
零
。对于文本协议,这列是外部声明的名字由用户指定。例如,对于下面的SQL语句,预备语句的名称支撑
:从“选择1”准备支撑;
SQL_TEXT
准备语句文本,
吗?
占位符标记。OWNER_THREAD_ID
,OWNER_EVENT_ID
这些列表明事件创造了事先准备好的声明中。
OWNER_OBJECT_TYPE
,OWNER_OBJECT_SCHEMA
,OWNER_OBJECT_NAME
在一份事先准备好的声明中由客户端会话,这些列
零
。在一份事先准备好的声明中创建的存储程序,这些列指向存储程序。一个典型的用户错误忘记释放准备好的语句。这些列可以用于查找存储程序泄漏预备语句:选择OWNER_OBJECT_TYPE、OWNER_OBJECT_SCHEMA OWNER_OBJECT_NAME、STATEMENT_NAME SQL_TEXT performance_schema。prepared_statements_instances OWNER_OBJECT_TYPE不是空的地方;
TIMER_PREPARE
执行语句的时间准备。
COUNT_REPREPARE
的次数声明reprepared内部(见准备好的语句缓存和存储程序)。定时统计repreparation不可用,因为它是算作语句执行的一部分,而不是作为一个单独的操作。
COUNT_EXECUTE
,SUM_TIMER_EXECUTE
,MIN_TIMER_EXECUTE
,AVG_TIMER_EXECUTE
,MAX_TIMER_EXECUTE
汇总统计数据预置语句的执行。
SUM_
xxx
剩下的
SUM_
列是一样声明汇总表(见部分10.20.3,声明“汇总表”)。xxx
的prepared_statements_instances
这些索引表有:
主键(
OBJECT_INSTANCE_BEGIN
)指数(
STATEMENT_ID
)指数(
STATEMENT_NAME
)指数(
OWNER_THREAD_ID
,OWNER_EVENT_ID
)指数(
OWNER_OBJECT_TYPE
,OWNER_OBJECT_SCHEMA
,OWNER_OBJECT_NAME
)
截断表
重置的数据列prepared_statements_instances
表。