sort_spill_mem¶
sort_spill_mem系统变量用于设置排序操作的内存阈值(字节)。当排序操作消耗的内存超过 此值时,MatrixOne 会将中间排序数据溢写到磁盘以避免内存不足。设置为0表示禁用排序溢 写,所有排序数据保留在内存中。提高此值可以在不溢写的情况下运行更大的排序操作,但会增加 内存消耗。
sort_spill_mem 系统变量控制查询执行期间排序溢写磁盘行为的内存限制。当查询需要排序大
量数据且内存不足时,将 sort_spill_mem 设为正值可让中间数据写入临时磁盘存储,避免查询
因内存不足而失败。
语法¶
SET GLOBAL sort_spill_mem = value; SET SESSION sort_spill_mem = value;
查询当前值:
SHOW VARIABLES LIKE ‘sort_spill_mem’; SELECT @@sort_spill_mem; SELECT @@global.sort_spill_mem;
参数说明¶
属性 |
值 |
|---|---|
变量类型 |
|
作用域 |
|
是否动态 |
是 |
默认值 |
|
可选值 |
|
示例¶
DROP DATABASE IF EXISTS sort_spill_demo;
CREATE DATABASE sort_spill_demo;
USE sort_spill_demo;
CREATE TABLE t1(id INT, grp INT);
INSERT INTO t1 VALUES (1, 40), (2, 10), (3, 20), (4, 10), (5, 30), (6, 20);
SHOW VARIABLES LIKE 'sort_spill_mem';
SET @@sort_spill_mem = 1;
SHOW VARIABLES LIKE 'sort_spill_mem';
SET @@max_dop = 1;
SELECT id, grp FROM t1 WHERE id <= 6 ORDER BY grp, id;
SET @@sort_spill_mem = 0;
SHOW VARIABLES LIKE 'sort_spill_mem';
DROP TABLE t1;
DROP DATABASE sort_spill_demo;
限制¶
sort_spill_mem以字节为单位。默认值0表示禁用溢写磁盘;如果内存不足,排序操作将 失败并报内存不足错误。溢写会产生 I/O 开销;启用溢写后查询可能比纯内存执行更慢。
实际溢写行为还依赖于
max_dop设置和可用的临时存储空间。