默认新建表存储块空闲度百分比(block_pctfree)
📄字数 678
👁️阅读量 加载中...
引入版本
v11.0.0
功能描述
数据页的默认预留空间百分比。
参数属性
属性 | 属性值 |
---|---|
参数类型 | INTEGER |
默认值 | 15 |
取值范围 | [0, 99] |
影响范围 | 系统级 |
修改方式 | 在线修改,立即生效 |
使用场景说明
- block_pctfree 适用于堆表/临时表/全局临时表。
- 在线修改 block_pctfree 不会影响已有表。
- 支持访问系统表 SYSDBA.SYS_TABLES 的 PCTFREE 字段查看各个表对象的数据页默认预留空间。
- 创表语句支持显式指定数据页的默认预留空间,则优先使用指定的值(该参数值无效)。
- block_pctfree 可减少插入/更新场景下数据行溢出:
场景 | 应用 |
---|---|
INSERT 大行 | 对于长度超过 4KB 的行记录,一个数据页无法容纳 2 条记录,且每个数据页都必然会产生数据溢出(Overflow), 此场景下可调整 block_pctfree > 50,以保证一个数据页中永远只有一条数据,从而避免产生数据溢出(Overflow)。 |
UPDATE 变长 | 新数据长度大于旧数据长度的变长字段更新,可利用预留的页内空间容纳溢出的数据内容。 |
该参数值过大会造成空间浪费,过小可能导致数据行访问产生多次IO,需要更具行数据长度和使用方式合理配置。
示例
- 在线修改 block_pctfree
sql
SQL> set block_pctfree to 15;
Execute successful.
Use time:2 ms.
- 在线查看 block_pctfree
sql
SQL> show block_pctfree;
+---------------+
| BLOCK_PCTFREE |
+---------------+
| 15 |
+---------------+
(1 row)
Use time:0 ms.