#### 27.12.3.3互斥体\_实例表

[](<>)[](<>)

这个[`互斥实例`](performance-schema-mutex-instances-table.html)表列出了服务器执行时性能模式看到的所有互斥体。互斥锁是代码中使用的一种同步机制，用于强制在给定时间只有一个线程可以访问某些公共资源。据说该资源受到互斥锁的“保护”。

当服务器中执行的两个线程（例如，同时执行一个查询的两个用户会话）确实需要访问相同的资源（文件、缓冲区或某些数据段）时，这两个线程会相互竞争，因此第一个获得互斥锁的查询会导致另一个查询等待第一个查询完成并解锁互斥锁。

持有互斥锁时执行的工作被称为“关键部分”，多个查询确实以序列化的方式（一次一个）执行该关键部分，这是一个潜在的瓶颈。

这个[`互斥实例`](performance-schema-mutex-instances-table.html)表中有以下列：

-   `名称`

    与互斥锁关联的仪器名称。

-   `对象\u实例\u开始`

    插入指令的互斥体在内存中的地址。

-   `被线程ID锁定`

    当线程当前锁定了互斥锁时，`被线程ID锁定`是吗`线程ID`锁紧螺纹，否则`无效的`.

    这个[`互斥实例`](performance-schema-mutex-instances-table.html)表中有以下索引：

-   主键打开(`对象\u实例\u开始`)

-   索引(`名称`)

-   索引(`被线程ID锁定`)

[`截断表`](truncate-table.html)是不允许的[`互斥实例`](performance-schema-mutex-instances-table.html)桌子

对于代码中插入的每个互斥体，性能模式提供以下信息。

-   这个[`仪器设置`](performance-schema-setup-instruments-table.html)表列出了检测点的名称及其前缀`等待/同步/互斥/`.

-   当一些代码创建互斥时，一行被添加到[`互斥实例`](performance-schema-mutex-instances-table.html)桌子这个`对象\u实例\u开始`列是唯一标识互斥体的属性。

-   当线程试图锁定互斥锁时[`事件_等待_当前`](performance-schema-events-waits-current-table.html)表显示了该线程的一行，表明它正在等待互斥锁（在`事件名称`列），并指示等待哪个互斥锁（在`对象\u实例\u开始`列）。

-   当线程成功锁定互斥锁时：

    -   [`事件_等待_当前`](performance-schema-events-waits-current-table.html)显示对互斥锁的等待已完成（在`计时器结束`和`等等`专栏）

    -   已完成的等待事件将添加到[`事件等待历史`](performance-schema-events-waits-history-table.html)和[`事件等待历史漫长`](performance-schema-events-waits-history-long-table.html)桌子

    -   [`互斥实例`](performance-schema-mutex-instances-table.html)显示互斥锁现在由线程拥有（在`线程ID`列）。

-   当线程解锁互斥锁时，[`互斥实例`](performance-schema-mutex-instances-table.html)显示互斥锁现在没有所有者（`线程ID`专栏是`无效的`).

-   当互斥对象被销毁时，相应的行将从中删除[`互斥实例`](performance-schema-mutex-instances-table.html).

    通过对以下两个表执行查询，监控应用程序或DBA可以检测涉及互斥锁的线程之间的瓶颈或死锁：

-   [`事件_等待_当前`](performance-schema-events-waits-current-table.html)，以查看线程正在等待的互斥对象

-   [`互斥实例`](performance-schema-mutex-instances-table.html)，以查看当前哪个线程拥有互斥锁
