drop table if exists t1, t2, t3;
ALTER DATABASE test CHARACTER SET latin1 COLLATE latin1_swedish_ci; SET @save_key_buffer_size=@@key_buffer_size; SET @save_key_cache_block_size=@@key_cache_block_size; SET @save_key_cache_segments=@@key_cache_segments; SET @save_key_cache_file_hash_size=@@key_cache_file_hash_size;
SELECT @@key_buffer_size, @@small.key_buffer_size;
@@key_buffer_size @@small.key_buffer_size 2097152131072 SET @@global.key_buffer_size=16*1024*1024; SET @@global.default.key_buffer_size=16*1024*1024; SET @@global.default.key_buffer_size=16*1024*1024; SET @@global.small.key_buffer_size=1*1024*1024; SET @@global.medium.key_buffer_size=4*1024*1024; SET @@global.medium.key_buffer_size=0; SET @@global.medium.key_buffer_size=0;
SHOW VARIABLES like "key_buffer_size";
Variable_name Value
key_buffer_size 16777216
SELECT @@key_buffer_size;
@@key_buffer_size 16777216
SELECT @@global.key_buffer_size;
@@global.key_buffer_size 16777216
SELECT @@global.default.key_buffer_size;
@@global.default.key_buffer_size 16777216
SELECT @@global.default.`key_buffer_size`;
@@global.default.`key_buffer_size` 16777216
SELECT @@global.`default`.`key_buffer_size`;
@@global.`default`.`key_buffer_size` 16777216
SELECT @@`default`.key_buffer_size;
@@`default`.key_buffer_size 16777216
SELECT @@small.key_buffer_size;
@@small.key_buffer_size 1048576
SELECT @@medium.key_buffer_size;
@@medium.key_buffer_size 0 SET @@global.key_buffer_size=@save_key_buffer_size;
SELECT @@default.key_buffer_size; ERROR42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'default.key_buffer_size' at line 1
SELECT @@skr.default_storage_engine="test"; ERROR HY000: Variable 'default_storage_engine' is not a variable component (can't be used as XXXX.variable_name)
select @@keycache1.key_cache_block_size;
@@keycache1.key_cache_block_size 0
select @@keycache1.key_buffer_size;
@@keycache1.key_buffer_size 0 set global keycache1.key_cache_block_size=2048;
select @@keycache1.key_buffer_size;
@@keycache1.key_buffer_size 0
select @@keycache1.key_cache_block_size;
@@keycache1.key_cache_block_size 2048 set global keycache1.key_buffer_size=1*1024*1024;
select @@keycache1.key_buffer_size;
@@keycache1.key_buffer_size 1048576
select @@keycache1.key_cache_block_size;
@@keycache1.key_cache_block_size 2048 set global keycache2.key_buffer_size=4*1024*1024;
select @@keycache2.key_buffer_size;
@@keycache2.key_buffer_size 4194304
select @@keycache2.key_cache_block_size;
@@keycache2.key_cache_block_size 1024 set global keycache1.key_buffer_size=0;
select @@keycache1.key_buffer_size;
@@keycache1.key_buffer_size 0
select @@keycache1.key_cache_block_size;
@@keycache1.key_cache_block_size 2048
select @@key_buffer_size;
@@key_buffer_size 2097152
select @@key_cache_block_size;
@@key_cache_block_size 1024
select @@key_cache_file_hash_size;
@@key_cache_file_hash_size 512 set global keycache1.key_buffer_size=1024*1024;
create table t1 (p int primary key, a char(10)) delay_key_write=1;
create table t2 (p int primary key, i int, a char(10), key k1(i), key k2(a));
select @org_key_blocks_unused-unused_blocks as key_blocks_unused, used_blocks as key_blocks_used from information_schema.key_caches where key_cache_name="default";
key_blocks_unused key_blocks_used 00
insert into t1 values (1, 'qqqq'), (11, 'yyyy');
insert into t2 values (1, 1, 'qqqq'), (2, 1, 'pppp'),
(3, 1, 'yyyy'), (4, 3, 'zzzz');
select * from t1;
p a 1 qqqq 11 yyyy
select * from t2;
p i a 11 qqqq 21 pppp 31 yyyy 43 zzzz
update t1 set p=2 where p=1;
update t2 set i=2 where i=1;
select @org_key_blocks_unused-unused_blocks as key_blocks_unused, used_blocks as key_blocks_used from information_schema.key_caches where key_cache_name="default";
key_blocks_unused key_blocks_used 44
cache index t1 key (`primary`) in keycache1;
Table Op Msg_type Msg_text
test.t1 assign_to_keycache status OK
explain select p from t1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index NULL PRIMARY 4 NULL 2 Using index
select p from t1;
p 2 11
explain select i from t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index NULL k1 5 NULL 4 Using index
select i from t2;
i 2 2 2 3
explain select count(*) from t1, t2 where t1.p = t2.i;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 2 Using index 1 SIMPLE t2 ref k1 k1 5 test.t1.p 1 Using index
select count(*) from t1, t2 where t1.p = t2.i;
count(*) 3
cache index t2 in keycache1;
Table Op Msg_type Msg_text
test.t2 assign_to_keycache status OK
update t2 set p=p+1000, i=2 where a='qqqq';
cache index t2 in keycache2;
Table Op Msg_type Msg_text
test.t2 assign_to_keycache status OK
insert into t2 values (2000, 3, 'yyyy');
cache index t2 in keycache1;
Table Op Msg_type Msg_text
test.t2 assign_to_keycache status OK
update t2 set p=3000 where a='zzzz';
select * from t2;
p i a 10012 qqqq 22 pppp 32 yyyy 30003 zzzz 20003 yyyy
explain select p from t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index NULL PRIMARY 4 NULL 5 Using index
select p from t2;
p 2 3 1001 2000 3000
explain select i from t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index NULL k1 5 NULL 5 Using index
select i from t2;
i 2 2 2 3 3
explain select a from t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index NULL k2 11 NULL 5 Using index
select a from t2;
a
pppp
qqqq
yyyy
yyyy
zzzz
cache index t1 in unknown_key_cache; ERROR HY000: Unknown key cache 'unknown_key_cache'
cache index t1 key (unknown_key) in keycache1;
Table Op Msg_type Msg_text
test.t1 assign_to_keycache Error Key 'unknown_key' doesn't exist in table 't1'
test.t1 assign_to_keycache status Operation failed
select @@keycache2.key_buffer_size;
@@keycache2.key_buffer_size 4194304
select @@keycache2.key_cache_block_size;
@@keycache2.key_cache_block_size 1024 set global keycache2.key_buffer_size=0;
select @@keycache2.key_buffer_size;
@@keycache2.key_buffer_size 0
select @@keycache2.key_cache_block_size;
@@keycache2.key_cache_block_size 1024 set global keycache2.key_buffer_size=1024*1024;
select @@keycache2.key_buffer_size;
@@keycache2.key_buffer_size 1048576
update t2 set p=4000 where a='zzzz';
update t1 set p=p+1; set global keycache1.key_buffer_size=0;
select * from t2;
p i a 10012 qqqq 22 pppp 32 yyyy 40003 zzzz 20003 yyyy
select p from t2;
p 2 3 1001 2000 4000
explain select i from t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index NULL k1 5 NULL 5 Using index
select i from t2;
i 2 2 2 3 3
explain select a from t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index NULL k2 11 NULL 5 Using index
select a from t2;
a
pppp
qqqq
yyyy
yyyy
zzzz
select * from t1;
p a 3 qqqq 12 yyyy
select p from t1;
p 3 12
create table t3 (like t1);
cache index t3 in small;
Table Op Msg_type Msg_text
test.t3 assign_to_keycache status OK
insert into t3 select * from t1;
cache index t3 in keycache2;
Table Op Msg_type Msg_text
test.t3 assign_to_keycache status OK
cache index t1,t2 in default;
Table Op Msg_type Msg_text
test.t1 assign_to_keycache status OK
test.t2 assign_to_keycache status OK
drop table t1,t2,t3;
select @org_key_blocks_unused-unused_blocks as key_blocks_unused, used_blocks as key_blocks_used from information_schema.key_caches where key_cache_name="default";
key_blocks_unused key_blocks_used 04
create table t1 (a int primary key);
cache index t1 in keycache2;
Table Op Msg_type Msg_text
test.t1 assign_to_keycache status OK
insert t1 values (1),(2),(3),(4),(5),(6),(7),(8); set global keycache2.key_buffer_size=0;
select * from t1;
a 1 2 3 4 5 6 7 8
drop table t1; set global keycache3.key_buffer_size=100;
Warnings:
Warning 1292 Truncated incorrect key_buffer_size value: '100' set global keycache3.key_buffer_size=0;
create table t1 (mytext text, FULLTEXT (mytext));
insert t1 values ('aaabbb');
check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK set @my_key_cache_block_size= @@global.key_cache_block_size; set GLOBAL key_cache_block_size=2048;
check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1; set global key_cache_block_size= @my_key_cache_block_size;
CREATE TABLE t1(a int NOT NULL AUTO_INCREMENT PRIMARY KEY); SET @my_key_cache_block_size= @@global.key_cache_block_size; SET GLOBAL key_cache_block_size=1536;
INSERT INTO t1 VALUES (1);
SELECT @@key_cache_block_size;
@@key_cache_block_size 1536
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;
CREATE TABLE t1(a int NOT NULL AUTO_INCREMENT PRIMARY KEY, b int);
CREATE TABLE t2(a int NOT NULL AUTO_INCREMENT PRIMARY KEY, b int); SET GLOBAL key_cache_block_size=1536;
INSERT INTO t1 VALUES (1,0);
INSERT INTO t2(b) SELECT b FROM t1;
INSERT INTO t1(b) SELECT b FROM t2;
INSERT INTO t2(b) SELECT b FROM t1;
INSERT INTO t1(b) SELECT b FROM t2;
INSERT INTO t2(b) SELECT b FROM t1;
INSERT INTO t1(b) SELECT b FROM t2;
INSERT INTO t2(b) SELECT b FROM t1;
INSERT INTO t1(b) SELECT b FROM t2;
INSERT INTO t2(b) SELECT b FROM t1;
INSERT INTO t1(b) SELECT b FROM t2;
INSERT INTO t2(b) SELECT b FROM t1;
INSERT INTO t1(b) SELECT b FROM t2;
INSERT INTO t2(b) SELECT b FROM t1;
INSERT INTO t1(b) SELECT b FROM t2;
INSERT INTO t2(b) SELECT b FROM t1;
INSERT INTO t1(b) SELECT b FROM t2;
INSERT INTO t2(b) SELECT b FROM t1;
INSERT INTO t1(b) SELECT b FROM t2;
SELECT COUNT(*) FROM t1;
COUNT(*) 4181
SELECT @@key_cache_block_size;
@@key_cache_block_size 1536
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1,t2; set global key_cache_block_size= @my_key_cache_block_size; set @@global.key_buffer_size=0; ERROR HY000: Cannot drop default keycache
select @@global.key_buffer_size;
@@global.key_buffer_size 2097152 SET @bug28478_key_cache_block_size= @@global.key_cache_block_size; SET GLOBAL key_cache_block_size= 1536;
CREATE TABLE t1 (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
c1 CHAR(150),
c2 CHAR(150),
c3 CHAR(150),
KEY(c1, c2, c3)
) ENGINE= MyISAM;
INSERT INTO t1 (c1, c2, c3) VALUES
('a', 'b', 'c'), ('b', 'c', 'd'), ('c', 'd', 'e'), ('d', 'e', 'f'),
('e', 'f', 'g'), ('f', 'g', 'h'), ('g', 'h', 'i'), ('h', 'i', 'j'),
('i', 'j', 'k'), ('j', 'k', 'l'), ('k', 'l', 'm'), ('l', 'm', 'n'),
('m', 'n', 'o'), ('n', 'o', 'p'), ('o', 'p', 'q'), ('p', 'q', 'r'),
('q', 'r', 's'), ('r', 's', 't'), ('s', 't', 'u'), ('t', 'u', 'v'),
('u', 'v', 'w'), ('v', 'w', 'x'), ('w', 'x', 'y'), ('x', 'y', 'z');
INSERT INTO t1 (c1, c2, c3) SELECT c1, c2, c3 from t1;
INSERT INTO t1 (c1, c2, c3) SELECT c1, c2, c3 from t1;
INSERT INTO t1 (c1, c2, c3) SELECT c1, c2, c3 from t1;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SHOW VARIABLES LIKE 'key_cache_block_size';
Variable_name Value
key_cache_block_size 1536 SET GLOBAL key_cache_block_size= @bug28478_key_cache_block_size;
DROP TABLE t1;
#
# Bug#12361113: crash when load index into cache
#
# Note that this creates an empty disabled key cache! SET GLOBAL key_cache_none.key_cache_block_size = 1024;
CREATE TABLE t1 (a INT, b INTEGER NOT NULL, KEY (b) ) ENGINE = MYISAM;
INSERT INTO t1 VALUES (1, 1);
CACHE INDEX t1 in key_cache_none; ERROR HY000: Unknown key cache 'key_cache_none'
# The bug crashed the server at LOAD INDEX below. Now it will succeed
# since the default cache is used due to CACHE INDEX failed for
# key_cache_none.
LOAD INDEX INTO CACHE t1;
Table Op Msg_type Msg_text
test.t1 preload_keys status OK
DROP TABLE t1; set global key_buffer_size=@save_key_buffer_size; set global key_cache_block_size=@save_key_cache_block_size;
select @@key_buffer_size;
@@key_buffer_size 2097152
select @@key_cache_block_size;
@@key_cache_block_size 1024
select @@key_cache_segments;
@@key_cache_segments 0
create table t1 (
p int not null auto_increment primary key,
a char(10));
create table t2 (
p int not null auto_increment primary key,
i int, a char(10), key k1(i), key k2(a));
select @@key_cache_segments;
@@key_cache_segments 0
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default NULL NULL 209715210240 # 00000
small NULL NULL 104857610241 # 01021
insert into t1 values (1, 'qqqq'), (2, 'yyyy');
insert into t2 values (1, 1, 'qqqq'), (2, 1, 'pppp'),
(3, 1, 'yyyy'), (4, 3, 'zzzz');
select * from t1;
p a 1 qqqq 2 yyyy
select * from t2;
p i a 11 qqqq 21 pppp 31 yyyy 43 zzzz
update t1 set p=3 where p=1; set statement optimizer_scan_setup_cost=0 for update t2 set i=2 where i=1;
select * from information_schema.session_status where variable_name like 'key_%'and variable_name != 'Key_blocks_unused';
VARIABLE_NAME VARIABLE_VALUE
KEY_BLOCKS_NOT_FLUSHED 0
KEY_BLOCKS_USED 4
KEY_BLOCKS_WARM 0
KEY_READ_REQUESTS 21
KEY_READS 0
KEY_WRITE_REQUESTS 26
KEY_WRITES 6
select variable_value into @key_blocks_unused from information_schema.session_status where variable_name = 'Key_blocks_unused';
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default NULL NULL 209715210244 # 0210266
small NULL NULL 104857610241 # 01021
delete from t2 where a='zzzz';
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default NULL NULL 209715210244 # 0280329
small NULL NULL 104857610241 # 01021
delete from t1;
delete from t2;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default NULL NULL 209715210244 # 0280329
small NULL NULL 104857610241 # 01021 set global key_cache_segments=2;
select @@key_cache_segments;
@@key_cache_segments 2
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 209715210240 # 00000
small NULL NULL 104857610241 # 01021
insert into t1 values (1, 'qqqq'), (2, 'yyyy');
insert into t2 values (1, 1, 'qqqq'), (2, 1, 'pppp'),
(3, 1, 'yyyy'), (4, 3, 'zzzz');
select * from t1;
p a 1 qqqq 2 yyyy
select * from t2;
p i a 11 qqqq 21 pppp 31 yyyy 43 zzzz
update t1 set p=3 where p=1; set statement optimizer_scan_setup_cost=0 for update t2 set i=2 where i=1;
select * from information_schema.session_status where variable_name like 'key_%'and variable_name != 'Key_blocks_unused';
VARIABLE_NAME VARIABLE_VALUE
KEY_BLOCKS_NOT_FLUSHED 0
KEY_BLOCKS_USED 4
KEY_BLOCKS_WARM 0
KEY_READ_REQUESTS 21
KEY_READS 0
KEY_WRITE_REQUESTS 26
KEY_WRITES 6
select variable_value < @key_blocks_unused from information_schema.session_status where variable_name = 'Key_blocks_unused';
variable_value < @key_blocks_unused 1
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 209715210244 # 0210266
small NULL NULL 104857610241 # 01021
delete from t1;
delete from t2;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 209715210244 # 0210266
small NULL NULL 104857610241 # 01021 set global key_cache_segments=1;
select @@key_cache_segments;
@@key_cache_segments 1
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 1 NULL 209715210240 # 00000
small NULL NULL 104857610241 # 01021
insert into t1 values (1, 'qqqq'), (2, 'yyyy');
insert into t2 values (1, 1, 'qqqq'), (2, 1, 'pppp'),
(3, 1, 'yyyy'), (4, 3, 'zzzz');
select * from t1;
p a 1 qqqq 2 yyyy
select * from t2;
p i a 11 qqqq 21 pppp 31 yyyy 43 zzzz
update t1 set p=3 where p=1; set statement optimizer_scan_setup_cost=0 for update t2 set i=2 where i=1;
select * from information_schema.session_status where variable_name like 'key_%'and variable_name != 'Key_blocks_unused';
VARIABLE_NAME VARIABLE_VALUE
KEY_BLOCKS_NOT_FLUSHED 0
KEY_BLOCKS_USED 4
KEY_BLOCKS_WARM 0
KEY_READ_REQUESTS 21
KEY_READS 0
KEY_WRITE_REQUESTS 26
KEY_WRITES 6
select variable_value = @key_blocks_unused from information_schema.session_status where variable_name = 'Key_blocks_unused';
variable_value = @key_blocks_unused 1
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 1 NULL 209715210244 # 0210266
small NULL NULL 104857610241 # 01021
delete from t1;
delete from t2;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 1 NULL 209715210244 # 0210266
small NULL NULL 104857610241 # 01021
flush tables;
flush global status;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 1 NULL 209715210244 # 00000
small NULL NULL 104857610241 # 00000 set global key_buffer_size=32*1024; set global key_cache_file_hash_size=128;
select @@key_buffer_size;
@@key_buffer_size 32768 set global key_cache_segments=2;
select @@key_cache_segments;
@@key_cache_segments 2
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 3276810240 # 00000
small NULL NULL 104857610241 # 00000
insert into t1 values (1, 'qqqq'), (2, 'yyyy');
insert into t2 values (1, 1, 'qqqq'), (2, 1, 'pppp'),
(3, 1, 'yyyy'), (4, 3, 'zzzz');
select * from t1;
p a 1 qqqq 2 yyyy
select * from t2;
p i a 11 qqqq 21 pppp 31 yyyy 43 zzzz
update t1 set p=3 where p=1; set statement optimizer_scan_setup_cost=0 for update t2 set i=2 where i=1;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 3276810244 # 0210266
small NULL NULL 104857610241 # 00000
insert into t1(a) select a from t1;
insert into t1(a) select a from t1;
insert into t1(a) select a from t1;
insert into t1(a) select a from t1;
insert into t1(a) select a from t1;
insert into t1(a) select a from t1;
insert into t1(a) select a from t1;
insert into t1(a) select a from t1;
insert into t2(i,a) select i,a from t2;
insert into t2(i,a) select i,a from t2;
insert into t2(i,a) select i,a from t2;
insert into t2(i,a) select i,a from t2;
insert into t2(i,a) select i,a from t2;
insert into t2(i,a) select i,a from t2;
insert into t2(i,a) select i,a from t2;
insert into t2(i,a) select i,a from t2;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 06732 # 3684103
small NULL NULL 10485761024 # # 00 # 00
select * from t1 where p between 1010and1020;
p a
select * from t2 where p between 1010and1020;
p i a 10102 pppp 10112 yyyy 10123 zzzz 10132 qqqq 10142 pppp 10152 yyyy 10163 zzzz 10172 qqqq 10182 pppp 10192 yyyy 10203 zzzz
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 06749 # 3684103
small NULL NULL 10485761024 # # 00 # 00
analyze table t2;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
flush tables;
flush global status;
update t1 set a='zzzz' where a='qqqq'; set statement optimizer_scan_setup_cost=0 for update t2 set i=1 where i=2;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0307618155218
small NULL NULL 10485761024 # # 00000 set global keycache1.key_buffer_size=256*1024;
select @@keycache1.key_buffer_size;
@@keycache1.key_buffer_size 262144 set global keycache1.key_cache_segments=7;
select @@keycache1.key_cache_segments;
@@keycache1.key_cache_segments 7
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0307618155218
small NULL NULL 10485761024 # # 00000
keycache1 7 NULL 2621432048 # # 00000
select * from information_schema.key_caches where key_cache_name like "key%" and segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
keycache1 7 NULL 26214320480 # 00000
cache index t1 key (`primary`) in keycache1;
Table Op Msg_type Msg_text
test.t1 assign_to_keycache status OK
explain select p from t1 where p between 1010and1020;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 Using where; Using index
select p from t1 where p between 1010and1020;
p
explain select i from t2 where p between 1010and1020;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 9 Using index condition
select i from t2 where p between 1010and1020;
i 1 1 3 1 1 1 3 1 1 1 3
explain select count(*) from t1, t2 where t1.p = t2.i;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index k1 k1 5 NULL 1024 Using where; Using index 1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.i 1 Using index
select count(*) from t1, t2 where t1.p = t2.i;
count(*) 256
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache1 7 NULL 2621432048 # # 014300
select * from information_schema.key_caches where key_cache_name like "key%" and segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
keycache1 7 NULL 26214320483 # 014300
cache index t2 in keycache1;
Table Op Msg_type Msg_text
test.t2 assign_to_keycache status OK
update t2 set p=p+3000, i=2 where a='qqqq';
select * from information_schema.key_caches where key_cache_name like "key%" and segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
keycache1 7 NULL 262143204825 # 0208225107119 set global keycache2.key_buffer_size=1024*1024;
cache index t2 in keycache2;
Table Op Msg_type Msg_text
test.t2 assign_to_keycache status OK
insert into t2 values (2000, 3, 'yyyy');
select * from information_schema.key_caches where key_cache_name like "keycache2" and segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
keycache2 NULL NULL 104857610246 # 06633
select * from information_schema.key_caches where key_cache_name like "key%" and segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
keycache1 7 NULL 262143204825 # 0208225107119
keycache2 NULL NULL 104857610246 # 06633
cache index t2 in keycache1;
Table Op Msg_type Msg_text
test.t2 assign_to_keycache status OK
update t2 set p=p+5000 where a='zzzz';
select * from t2 where p between 1010and1020;
p i a 10101 pppp 10111 yyyy 10141 pppp 10151 yyyy 10181 pppp 10191 yyyy
explain select p from t2 where p between 1010and1020;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
select p from t2 where p between 1010and1020;
p 1010 1011 1014 1015 1018 1019
explain select i from t2 where a='yyyy'and i=3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index_merge k1,k2 k1,k2 5,11 NULL 50 Using intersect(k1,k2); Using where; Using index
select i from t2 where a='yyyy'and i=3;
i 3
explain select a from t2 where a='yyyy'and i=3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index_merge k1,k2 k1,k2 5,11 NULL 50 Using intersect(k1,k2); Using where; Using index
select a from t2 where a='yyyy'and i=3;
a
yyyy
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache1 7 NULL 2621432048 # # 0322943159430
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_cache_block_size=2*1024;
insert into t2 values (7000, 3, 'yyyy');
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache1 7 NULL 2621432048 # # 06633
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_cache_block_size=8*1024;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache1 3 NULL 2621438192 # # 00000
keycache2 NULL NULL 10485761024 # # 06633
insert into t2 values (8000, 3, 'yyyy');
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache1 3 NULL 2621438192 # # 06533
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_buffer_size=64*1024;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_cache_block_size=2*1024;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache1 3 NULL 655352048 # # 00000
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_cache_block_size=8*1024;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_buffer_size=0;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_cache_block_size=8*1024;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_buffer_size=0;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_buffer_size=128*1024;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache1 1 NULL 1310728192 # # 00000
keycache2 NULL NULL 10485761024 # # 06633 set global keycache1.key_cache_block_size=1024;
select * from information_schema.key_caches where segment_number is null;
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
default 2 NULL 327681024 # # 0317224155218
small NULL NULL 10485761024 # # 00000
keycache1 7 NULL 1310681024 # # 00000
keycache2 NULL NULL 10485761024 # # 06633
drop table t1,t2; set global keycache1.key_buffer_size=0; set global keycache2.key_buffer_size=0; set global key_buffer_size=@save_key_buffer_size; set global key_cache_segments=@save_key_cache_segments; set global key_cache_file_hash_size=@save_key_cache_file_hash_size;
#
# SIGSEGV in flush_all_key_blocks when changing
# key_buffer_size / ASAN: heap-use-after-free in flush_all_key_blocks
# SET GLOBAL keycache1.key_cache_segments=7; SET GLOBAL keycache1.key_buffer_size=1*1024*1024; SET GLOBAL keycache1.key_buffer_size=0; SET GLOBAL keycache1.key_buffer_size=128*1024;
create table t1 (p int primary key, a char(10)) delay_key_write=1;
cache index t1 key (`primary`) in keycache1;
Table Op Msg_type Msg_text
test.t1 assign_to_keycache status OK
insert into t1 values (1, 'qqqq'), (11, 'yyyy');
select * from t1;
p a 1 qqqq 11 yyyy
drop table t1; SET GLOBAL keycache1.key_buffer_size=0;
#
# End of 10.3 tests
#
ALTER DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.