information-schema-innodb-buffer-page-lru-table.md 6.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
### 26.4.3 信息\_SCHEMA INNODB\_缓冲\_页\_LRU 表

[](<>)

[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)表提供了有关页面中的信息`InnoDB` [缓冲池](glossary.html#glos_buffer_pool);特别是它们在决定哪些页面的 LRU 列表中的排序方式[驱逐](glossary.html#glos_eviction)当缓冲池变满时从缓冲池中取出。

[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)表具有相同的列[`INNODB_BUFFER_PAGE`](information-schema-innodb-buffer-page-table.html)表有一些例外。它有`LRU_POSITION``压缩`列而不是`BLOCK_ID``PAGE_STATE`列,它不包括和`IS_STALE`柱子。

有关相关使用信息和示例,请参阅[第 15.15.5 节,“InnoDB 信息\_SCHEMA 缓冲池表”](innodb-information-schema-buffer-pool-tables.html).

警告

查询[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)表会影响性能。不要在生产系统上查询此表,除非您知道性能影响并确定它是可以接受的。为避免影响生产系统的性能,请重现您要调查的问题并在测试实例上查询缓冲池统计信息。

[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)表有这些列:

-   `POOL_ID`

    缓冲池 ID。这是区分多个缓冲池实例的标识符。

-   `LRU_POSITION`

    页面在 LRU 列表中的位置。

-   `空间`

    表空间 ID;相同的值`INNODB_TABLES.SPACE`.

-   `PAGE_NUMBER`

    页码。

-   `PAGE_TYPE`

    页面类型。下表显示了允许的值。

    [](<>)

    **表 26.6 INNODB\_缓冲\_页\_LRU.PAGE\_类型值**

    | 页面类型 | 描述 |
    | ---- | --- |
    | `已分配` | 新分配的页面 |
    | `斑点` | 未压缩的 BLOB 页面 |
    | `COMPRESSED_BLOB2` | 随后的comp BLOB页面 |
    | `COMPRESSED_BLOB` | 第一个压缩的 BLOB 页面 |
    | `ENCRYPTED_RTREE` | 加密 R 树 |
    | `EXTENT_DESCRIPTOR` | 范围描述符页面 |
    | `FILE_SPACE_HEADER` | 文件空间头 |
    | `FIL_PAGE_TYPE_UNUSED` | 没用过 |
    | `IBUF_BITMAP` | 插入缓冲区位图 |
    | `IBUF_FREE_LIST` | 插入缓冲区空闲列表 |
    | `IBUF_INDEX` | 插入缓冲区索引 |
    | `指数` | B树节点 |
    | `节点` | 索引节点 |
    | `LOB_DATA` | 未压缩的 LOB 数据 |
    | `LOB_FIRST` | 未压缩 LOB 的第一页 |
    | `LOB_INDEX` | 未压缩的 LOB 索引 |
    | `PAGE_IO_COMPRESSED` | 压缩页面 |
    | `PAGE_IO_COMPRESSED_ENCRYPTED` | 压缩和加密页面 |
    | `PAGE_IO_ENCRYPTED` | 加密页面 |
    | `RSEG_ARRAY` | 回滚段数组 |
    | `RTREE_INDEX` | R树索引 |
    | `SDI_BLOB` | 未压缩的 SDI BLOB |
    | `SDI_COMPRESSED_BLOB` | 压缩 SDI BLOB |
    | `SDI_INDEX` | SDI指数 |
    | `系统` | 系统页面 |
    | `TRX_SYSTEM` | 交易系统数据 |
    | `UNDO_LOG` | 撤消日志页面 |
    | `未知` | 未知 |
    | `ZLOB_DATA` | 压缩的 LOB 数据 |
    | `ZLOB_FIRST` | 压缩 LOB 的第一页 |
    | `ZLOB_FRAG` | 压缩的 LOB 片段 |
    | `ZLOB_FRAG_ENTRY` | 压缩的 LOB 片段索引 |
    | `ZLOB_INDEX` | 压缩的 LOB 索引 |

-   `FLUSH_TYPE`

    冲洗型。

-   `FIX_COUNT 个`

    缓冲池中使用此块的线程数。当为零时,该块有资格被驱逐。

-   `IS_HASHED`

    该页面是否建立了哈希索引。

-   `NEWEST_MODIFICATION`

    最新修改的日志序列号。

-   `OLDEST_MODIFICATION`

    最旧修改的日志序列号。

-   `ACCESS_TIME`

    一个抽象的数字,用来判断页面的第一次访问时间。

-   `TABLE_NAME`

    页面所属的表的名称。此列仅适用于具有`PAGE_TYPE`的价值`指数`.该列是`空值`如果服务器尚未访问该表。

-   `INDEX_NAME`

    页面所属索引的名称。这可以是聚集索引或二级索引的名称。此列仅适用于具有`PAGE_TYPE`的价值`指数`.

-   `NUMBER_RECORDS`

    页内的记录数。

-   `数据大小`

    记录大小的总和。此列仅适用于具有`PAGE_TYPE`的价值`指数`.

-   `COMPRESSED_SIZE`

    压缩页面大小。`空值`对于未压缩的页面。

-   `压缩`

    页面是否被压缩。

-   `IO_FIX`

    此页面是否有任何 I/O 待处理:`IO_NONE`= 没有挂起的 I/O,`IO_READ`= 待读,`IO_WRITE`= 写入挂起。

-   `老了`

    该块是否在 LRU 列表中旧块的子列表中。

-   `FREE_PAGE_CLOCK`

    的价值`freed_pa​​ge_clock`当块最后被放置在 LRU 列表的头部时计数器。这`freed_pa​​ge_clock`计数器跟踪从 LRU 列表末尾删除的块数。

#### 例子

```
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU LIMIT 1\G
*************************** 1. row ***************************
            POOL_ID: 0
       LRU_POSITION: 0
              SPACE: 97
        PAGE_NUMBER: 1984
          PAGE_TYPE: INDEX
         FLUSH_TYPE: 1
          FIX_COUNT: 0
          IS_HASHED: YES
NEWEST_MODIFICATION: 719490396
OLDEST_MODIFICATION: 0
        ACCESS_TIME: 3378383796
         TABLE_NAME: `employees`.`salaries`
         INDEX_NAME: PRIMARY
     NUMBER_RECORDS: 468
          DATA_SIZE: 14976
    COMPRESSED_SIZE: 0
         COMPRESSED: NO
             IO_FIX: IO_NONE
             IS_OLD: YES
    FREE_PAGE_CLOCK: 0
```

#### 笔记

-   此表主要用于专家级性能监控,或在为 MySQL 开发与性能相关的扩展时。

-   你必须拥有[`过程`](privileges-provided.html#priv_process)查询此表的权限。

-   使用`INFORMATION_SCHEMA` [`列`](information-schema-columns-table.html)表或[`显示列`](show-columns.html)语句以查看有关此表列的其他信息,包括数据类型和默认值。

-   查询此表可能需要 MySQL 分配大块连续内存,超过缓冲池中活动页数的 64 字节乘以。这种分配可能会导致内存不足错误,尤其是对于具有数 GB 缓冲池的系统。

-   查询这张表需要MySQL在遍历LRU列表的同时锁定代表缓冲池的数据结构,这样会降低并发性,尤其是对于拥有数千兆字节缓冲池的系统。

-   当表、表行、分区或索引被删除时,关联的页面会保留在缓冲池中,直到其他数据需要空间为止。这[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)table 报告有关这些页面的信息,直到它们从缓冲池中逐出。有关如何`InnoDB`管理缓冲池数据,请参阅[第 15.5.1 节,“缓冲池”](innodb-buffer-pool.html).