mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-09-12 16:32:16 +00:00
* feat(mito): add per-region write buffer limit Signed-off-by: evenyag <realevenyag@gmail.com> * feat(mito): add default region write buffer size Signed-off-by: evenyag <realevenyag@gmail.com> * docs: expand configuration change checklist Signed-off-by: evenyag <realevenyag@gmail.com> * test: cover table write buffer size option Signed-off-by: evenyag <realevenyag@gmail.com> * fix(mito): refine region write buffer checks Signed-off-by: evenyag <realevenyag@gmail.com> * fix(mito): keep region-stalled writes queued Signed-off-by: evenyag <realevenyag@gmail.com> * fix(mito): allow zero region write buffer size Signed-off-by: evenyag <realevenyag@gmail.com> * fix(mito): validate region state before write stall Signed-off-by: evenyag <realevenyag@gmail.com> * fix(mito): reject writes beyond region hard limit Signed-off-by: evenyag <realevenyag@gmail.com> * docs: update example Signed-off-by: evenyag <realevenyag@gmail.com> --------- Signed-off-by: evenyag <realevenyag@gmail.com>
386 lines
15 KiB
Plaintext
386 lines
15 KiB
Plaintext
CREATE TABLE ato(i INTEGER, j TIMESTAMP TIME INDEX, PRIMARY KEY(i));
|
|
|
|
Affected Rows: 0
|
|
|
|
INSERT INTO ato VALUES(1, now()), (2, now());
|
|
|
|
Affected Rows: 2
|
|
|
|
SELECT i FROM ato;
|
|
|
|
+---+
|
|
| i |
|
|
+---+
|
|
| 1 |
|
|
| 2 |
|
|
+---+
|
|
|
|
ALTER TABLE ato SET 'ttl'='1d';
|
|
|
|
Affected Rows: 0
|
|
|
|
SELECT i FROM ato;
|
|
|
|
+---+
|
|
| i |
|
|
+---+
|
|
| 1 |
|
|
| 2 |
|
|
+---+
|
|
|
|
SHOW CREATE TABLE ato;
|
|
|
|
+-------+------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+------------------------------------+
|
|
| ato | CREATE TABLE IF NOT EXISTS "ato" ( |
|
|
| | "i" INT NULL, |
|
|
| | "j" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("j"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | ttl = '1day' |
|
|
| | ) |
|
|
+-------+------------------------------------+
|
|
|
|
ALTER TABLE ato SET 'ttl'='2d';
|
|
|
|
Affected Rows: 0
|
|
|
|
SELECT i FROM ato;
|
|
|
|
+---+
|
|
| i |
|
|
+---+
|
|
| 1 |
|
|
| 2 |
|
|
+---+
|
|
|
|
SHOW CREATE TABLE ato;
|
|
|
|
+-------+------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+------------------------------------+
|
|
| ato | CREATE TABLE IF NOT EXISTS "ato" ( |
|
|
| | "i" INT NULL, |
|
|
| | "j" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("j"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | ttl = '2days' |
|
|
| | ) |
|
|
+-------+------------------------------------+
|
|
|
|
ALTER TABLE ato SET 'ttl'=NULL;
|
|
|
|
Affected Rows: 0
|
|
|
|
SELECT i FROM ato;
|
|
|
|
+---+
|
|
| i |
|
|
+---+
|
|
| 1 |
|
|
| 2 |
|
|
+---+
|
|
|
|
SHOW CREATE TABLE ato;
|
|
|
|
+-------+------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+------------------------------------+
|
|
| ato | CREATE TABLE IF NOT EXISTS "ato" ( |
|
|
| | "i" INT NULL, |
|
|
| | "j" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("j"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | ttl = 'forever' |
|
|
| | ) |
|
|
+-------+------------------------------------+
|
|
|
|
ALTER TABLE ato SET 'ttl'='1s';
|
|
|
|
Affected Rows: 0
|
|
|
|
SHOW CREATE TABLE ato;
|
|
|
|
+-------+------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+------------------------------------+
|
|
| ato | CREATE TABLE IF NOT EXISTS "ato" ( |
|
|
| | "i" INT NULL, |
|
|
| | "j" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("j"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | ttl = '1s' |
|
|
| | ) |
|
|
+-------+------------------------------------+
|
|
|
|
ALTER TABLE ato SET 'ttl'='😁';
|
|
|
|
Error: 1004(InvalidArguments), Invalid set table option request: Invalid set region option request, key: ttl, value: 😁
|
|
|
|
ALTER TABLE ato SET '🕶️'='1s';
|
|
|
|
Error: 1004(InvalidArguments), Invalid set table option request: Invalid set region option request, key: 🕶️, value: 1s
|
|
|
|
SELECT i FROM ato;
|
|
|
|
+---+
|
|
| i |
|
|
+---+
|
|
| 1 |
|
|
| 2 |
|
|
+---+
|
|
|
|
ALTER TABLE ato SET 'compaction.twcs.time_window'='2h';
|
|
|
|
Affected Rows: 0
|
|
|
|
ALTER TABLE ato SET 'compaction.twcs.max_output_file_size'='500MB';
|
|
|
|
Affected Rows: 0
|
|
|
|
ALTER TABLE ato SET 'compaction.twcs.trigger_file_num'='2';
|
|
|
|
Affected Rows: 0
|
|
|
|
SHOW CREATE TABLE ato;
|
|
|
|
+-------+-----------------------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+-----------------------------------------------------+
|
|
| ato | CREATE TABLE IF NOT EXISTS "ato" ( |
|
|
| | "i" INT NULL, |
|
|
| | "j" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("j"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | 'compaction.twcs.max_output_file_size' = '500MB', |
|
|
| | 'compaction.twcs.time_window' = '2h', |
|
|
| | 'compaction.twcs.trigger_file_num' = '2', |
|
|
| | 'compaction.type' = 'twcs', |
|
|
| | ttl = '1s' |
|
|
| | ) |
|
|
+-------+-----------------------------------------------------+
|
|
|
|
ALTER TABLE ato UNSET 'compaction.twcs.time_window';
|
|
|
|
Affected Rows: 0
|
|
|
|
ALTER TABLE ato UNSET '🕶️';
|
|
|
|
Error: 1004(InvalidArguments), Invalid unset table option request: Invalid set region option request, key: 🕶️
|
|
|
|
SHOW CREATE TABLE ato;
|
|
|
|
+-------+-----------------------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+-----------------------------------------------------+
|
|
| ato | CREATE TABLE IF NOT EXISTS "ato" ( |
|
|
| | "i" INT NULL, |
|
|
| | "j" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("j"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | 'compaction.twcs.max_output_file_size' = '500MB', |
|
|
| | 'compaction.twcs.trigger_file_num' = '2', |
|
|
| | 'compaction.type' = 'twcs', |
|
|
| | ttl = '1s' |
|
|
| | ) |
|
|
+-------+-----------------------------------------------------+
|
|
|
|
ALTER TABLE ato SET 'compaction.twcs.trigger_file_num'='';
|
|
|
|
Affected Rows: 0
|
|
|
|
SHOW CREATE TABLE ato;
|
|
|
|
+-------+-----------------------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+-----------------------------------------------------+
|
|
| ato | CREATE TABLE IF NOT EXISTS "ato" ( |
|
|
| | "i" INT NULL, |
|
|
| | "j" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("j"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | 'compaction.twcs.max_output_file_size' = '500MB', |
|
|
| | 'compaction.type' = 'twcs', |
|
|
| | ttl = '1s' |
|
|
| | ) |
|
|
+-------+-----------------------------------------------------+
|
|
|
|
-- SQLNESS ARG restart=true
|
|
SHOW CREATE TABLE ato;
|
|
|
|
+-------+-----------------------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+-----------------------------------------------------+
|
|
| ato | CREATE TABLE IF NOT EXISTS "ato" ( |
|
|
| | "i" INT NULL, |
|
|
| | "j" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("j"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | 'compaction.twcs.max_output_file_size' = '500MB', |
|
|
| | 'compaction.type' = 'twcs', |
|
|
| | ttl = '1s' |
|
|
| | ) |
|
|
+-------+-----------------------------------------------------+
|
|
|
|
DROP TABLE ato;
|
|
|
|
Affected Rows: 0
|
|
|
|
CREATE TABLE write_buffer_size_options(
|
|
i INTEGER,
|
|
ts TIMESTAMP TIME INDEX,
|
|
PRIMARY KEY(i)
|
|
);
|
|
|
|
Affected Rows: 0
|
|
|
|
ALTER TABLE write_buffer_size_options SET 'write_buffer_size' = '128MiB';
|
|
|
|
Affected Rows: 0
|
|
|
|
SHOW CREATE TABLE write_buffer_size_options;
|
|
|
|
+---------------------------+----------------------------------------------------------+
|
|
| Table | Create Table |
|
|
+---------------------------+----------------------------------------------------------+
|
|
| write_buffer_size_options | CREATE TABLE IF NOT EXISTS "write_buffer_size_options" ( |
|
|
| | "i" INT NULL, |
|
|
| | "ts" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("ts"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | write_buffer_size = '128.0MiB' |
|
|
| | ) |
|
|
+---------------------------+----------------------------------------------------------+
|
|
|
|
-- SQLNESS ARG restart=true
|
|
SHOW CREATE TABLE write_buffer_size_options;
|
|
|
|
+---------------------------+----------------------------------------------------------+
|
|
| Table | Create Table |
|
|
+---------------------------+----------------------------------------------------------+
|
|
| write_buffer_size_options | CREATE TABLE IF NOT EXISTS "write_buffer_size_options" ( |
|
|
| | "i" INT NULL, |
|
|
| | "ts" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("ts"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | WITH( |
|
|
| | write_buffer_size = '128.0MiB' |
|
|
| | ) |
|
|
+---------------------------+----------------------------------------------------------+
|
|
|
|
ALTER TABLE write_buffer_size_options UNSET 'write_buffer_size';
|
|
|
|
Affected Rows: 0
|
|
|
|
SHOW CREATE TABLE write_buffer_size_options;
|
|
|
|
+---------------------------+----------------------------------------------------------+
|
|
| Table | Create Table |
|
|
+---------------------------+----------------------------------------------------------+
|
|
| write_buffer_size_options | CREATE TABLE IF NOT EXISTS "write_buffer_size_options" ( |
|
|
| | "i" INT NULL, |
|
|
| | "ts" TIMESTAMP(3) NOT NULL, |
|
|
| | TIME INDEX ("ts"), |
|
|
| | PRIMARY KEY ("i") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | |
|
|
+---------------------------+----------------------------------------------------------+
|
|
|
|
DROP TABLE write_buffer_size_options;
|
|
|
|
Affected Rows: 0
|
|
|
|
CREATE TABLE phy (ts timestamp time index, val double) engine=metric with ("physical_metric_table" = "");
|
|
|
|
Affected Rows: 0
|
|
|
|
ALTER TABLE phy set ttl='2years';
|
|
|
|
Affected Rows: 0
|
|
|
|
SHOW CREATE TABLE phy;
|
|
|
|
+-------+------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+------------------------------------+
|
|
| phy | CREATE TABLE IF NOT EXISTS "phy" ( |
|
|
| | "ts" TIMESTAMP(3) NOT NULL, |
|
|
| | "val" DOUBLE NULL, |
|
|
| | TIME INDEX ("ts") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=metric |
|
|
| | WITH( |
|
|
| | physical_metric_table = '', |
|
|
| | ttl = '2years' |
|
|
| | ) |
|
|
+-------+------------------------------------+
|
|
|
|
ALTER TABLE phy UNSET 'ttl';
|
|
|
|
Affected Rows: 0
|
|
|
|
SHOW CREATE TABLE phy;
|
|
|
|
+-------+------------------------------------+
|
|
| Table | Create Table |
|
|
+-------+------------------------------------+
|
|
| phy | CREATE TABLE IF NOT EXISTS "phy" ( |
|
|
| | "ts" TIMESTAMP(3) NOT NULL, |
|
|
| | "val" DOUBLE NULL, |
|
|
| | TIME INDEX ("ts") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=metric |
|
|
| | WITH( |
|
|
| | physical_metric_table = '' |
|
|
| | ) |
|
|
+-------+------------------------------------+
|
|
|
|
DROP TABLE phy;
|
|
|
|
Affected Rows: 0
|
|
|