对比原版 MyRocks 的兼容性
总结
MyRocks 针对自身特点提供了一系列的测试,这些测试共有五类:
- rocksdb
- rocksdb_hotbackup
- rocksdb_rpl
- rocksdb_stress
- rocksdb_sys_vars
针对这几类测试,以下是 TerarkSQL 的运行结果如下,其中部分失败的原因,在详细说明中做了阐述:
suite | total | success | fail |
---|---|---|---|
rocksdb | 242 | 214 | 28 |
rocksdb_stress | 2 | 2 | 0 |
rocksdb_sys_vars | 133 | 125 | 8 |
rocksdb_hotbackup | 6 | 3 | 3 |
rocksdb_rpl | 15 | 15 | 0 |
详细说明
根据目前测试,针对 MyRocks 的功能测试,只有以下少数 MyRocks 官方原版可以通过但 Terark 不能通过的测试。
1. rocksdb
1.1 rocksdb.show_engine
相关语句:SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_CF_OPTIONS;
TerarkSQL 在 INFORMATION_SCHEMA 数据库的表 ROCKSDB_CF_OPTIONS 中添加了 TABLE_FACTORY_NAME 相关的记录,用于显示所使用的 table factory
,故与 MyRocks 预期结果不一致。
添加内容如下:
select * from information_schema.ROCKSDB_CF_OPTIONS where OPTION_TYPE='TABLE_FACTORY_NAME';
+------------+--------------------+----------------+
| CF_NAME | OPTION_TYPE | VALUE |
+------------+--------------------+----------------+
| __system__ | TABLE_FACTORY_NAME | TerarkZipTable |
| default | TABLE_FACTORY_NAME | TerarkZipTable |
+------------+--------------------+----------------+
MyRocks 官方在最新的 release prod201704 中在表 INFORMATION_SCHEMA.ROCKSDB_CF_OPTIONS
添加了若干变量,但测试程序未及时更新,导致与测试程序预期结果不符合。
添加内容类似如下:
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_CF_OPTIONS;
CF_NAME OPTION_TYPE VALUE
+default COMPARATOR #
+default MERGE_OPERATOR #
+default COMPACTION_FILTER #
+default COMPACTION_FILTER_FACTORY #
+default WRITE_BUFFER_SIZE #
+default MAX_WRITE_BUFFER_NUMBER #
+default MIN_WRITE_BUFFER_NUMBER_TO_MERGE #
+default NUM_LEVELS #
+default LEVEL0_FILE_NUM_COMPACTION_TRIGGER #
+default LEVEL0_SLOWDOWN_WRITES_TRIGGER #
+default LEVEL0_STOP_WRITES_TRIGGER #
+default MAX_MEM_COMPACTION_LEVEL #
+default TARGET_FILE_SIZE_BASE #
...
1.2 rocksdb.mysqldump2
相关语句:
select case when variable_value - @a > 100 then 'true' else 'false' end
from information_schema.global_status
where variable_name='rocksdb_block_cache_add';
预期结果:
case when variable_value - @a > 100 then 'true' else 'false' end
true
测试结果:
case when variable_value - @a > 100 then 'true' else 'false' end`
false
TerarkSQL 不使用 block cache,故相关统计数据与预期不符,不影响功能。
1.3 rocksdb.cardinality
相关语句:show index in t1;
预期结果:
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 id A 100000 NULL NULL LSMTREE
t1 1 t1_1 1 id A 100000 NULL NULL LSMTREE
t1 1 t1_1 2 i1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_2 1 i1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_2 2 i2 A 100000 NULL NULL YES LSMTREE
t1 1 t1_3 1 i2 A 11111 NULL NULL YES LSMTREE
t1 1 t1_3 2 i1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_4 1 c1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_4 2 c2 A 100000 NULL NULL YES LSMTREE
t1 1 t1_5 1 c2 A 11111 NULL NULL YES LSMTREE
t1 1 t1_5 2 c1 A 100000 NULL NULL YES LSMTREE
测试结果:
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 id A 100595 NULL NULL LSMTREE
t1 1 t1_1 1 id A 100595 NULL NULL LSMTREE
t1 1 t1_1 2 i1 A 100595 NULL NULL YES LSMTREE
t1 1 t1_2 1 i1 A 100595 NULL NULL YES LSMTREE
t1 1 t1_2 2 i2 A 100595 NULL NULL YES LSMTREE
t1 1 t1_3 1 i2 A 11177 NULL NULL YES LSMTREE
t1 1 t1_3 2 i1 A 100595 NULL NULL YES LSMTREE
t1 1 t1_4 1 c1 A 100595 NULL NULL YES LSMTREE
t1 1 t1_4 2 c2 A 100595 NULL NULL YES LSMTREE
t1 1 t1_5 1 c2 A 11177 NULL NULL YES LSMTREE
t1 1 t1_5 2 c1 A 100595 NULL NULL YES LSMTREE
相关语句:SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE();
预期结果:
table_name table_rows
t1 100000
测试结果:
table_name table_rows
t1 100403
rocksdb.cardinality
测试的输出如下:
show index in t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 PRIMARY 1 id A 100000 NULL NULL LSMTREE
-t1 1 t1_1 1 id A 100000 NULL NULL LSMTREE
-t1 1 t1_1 2 i1 A 100000 NULL NULL YES LSMTREE
-t1 1 t1_2 1 i1 A 100000 NULL NULL YES LSMTREE
-t1 1 t1_2 2 i2 A 100000 NULL NULL YES LSMTREE
-t1 1 t1_3 1 i2 A 11111 NULL NULL YES LSMTREE
-t1 1 t1_3 2 i1 A 100000 NULL NULL YES LSMTREE
-t1 1 t1_4 1 c1 A 100000 NULL NULL YES LSMTREE
-t1 1 t1_4 2 c2 A 100000 NULL NULL YES LSMTREE
-t1 1 t1_5 1 c2 A 11111 NULL NULL YES LSMTREE
-t1 1 t1_5 2 c1 A 100000 NULL NULL YES LSMTREE
+t1 0 PRIMARY 1 id A 100403 NULL NULL LSMTREE
+t1 1 t1_1 1 id A 100403 NULL NULL LSMTREE
+t1 1 t1_1 2 i1 A 100403 NULL NULL YES LSMTREE
+t1 1 t1_2 1 i1 A 100403 NULL NULL YES LSMTREE
+t1 1 t1_2 2 i2 A 100403 NULL NULL YES LSMTREE
+t1 1 t1_3 1 i2 A 11155 NULL NULL YES LSMTREE
+t1 1 t1_3 2 i1 A 100403 NULL NULL YES LSMTREE
+t1 1 t1_4 1 c1 A 100403 NULL NULL YES LSMTREE
+t1 1 t1_4 2 c2 A 100403 NULL NULL YES LSMTREE
+t1 1 t1_5 1 c2 A 11155 NULL NULL YES LSMTREE
+t1 1 t1_5 2 c1 A 100403 NULL NULL YES LSMTREE
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE();
table_name table_rows
-t1 100000
+t1 100403
Cardinality 为估计值,且需要在数据写入 SST 后才能计算得出,对功能不影响。
1.4 rocksdb.optimize_table
错误日志:
At line 67: command "perl suite/rocksdb/optimize_table_check_sst.pl $MYSQL_TMP_DIR/sst_size.dat" failed
Output from before failure:
checking sst file reduction on optimize table from 0 to 1..
sst file reduction was not enough. 7140->7140 (minimum 1000kb)
测试中先创建 6 张表,然后依次插入 10,000
条数据,再依次删除 9,900
条,最后依次 compact 每张表,比较对每张表进行 compact 前后的空间压缩是否大于 1,000 kb。MySQL on TerarkDb 使用 universal compaction,MyRocks 未对其优化,故 TerarkSQL 不使用 optimize table tablename;
触发主动 compact,且 TerarkSQL 不能单独对一张表进行 compact。故与测试预期行为不一致,但是这不会对功能有任何影响。
1.5 rocksdb.rocksdb_cf_per_partition
相关语句:EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col3 = 0x4 AND col2 = 0x34567;
预期结果:
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 custom_p2 ref col3 col3 258 const 1 Using where
测试结果:
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 custom_p2 ref col3 col3 258 const 2 Using where
其中 rows 为估计值,因使用的算法不同估算值也略有不同,对功能不会造成影响。
1.6 rocksdb.add_index_inplace
相关语句:select INDEX_LENGTH from information_schema.tables where table_schema=database() and table_name='t1';
预期结果:
INDEX_LENGTH
1300
测试结果:
INDEX_LENGTH
1504
TerarkSQL 使用的索引算法与 MyRocks 不同,故 index_length 不同。
1.7 rocksdb.drop_table2, rocksdb.drop_table3, rocksdb.truncate_table3
这一块背景比较复杂,MyRocks 在 drop table 时,会先后做两件事情:
- 把只包含该 table(极其 index) 的 sst 直接删除
- 执行 CompactRange,彻底删除该 table 所有相关的数据。
对于 Level Compaction,这个策略很高效,但是,TerarkSQL 默认使用的是 universal compaction,事情就比较麻烦了————
在 universal compaction 中,所有 Level 之间没有重叠的 seqnum(相当于数据插入的时间),从而,要保持这个不变式,就不能按 Key Range 去 Compact 不同 Level 中的数据,所以,在 CompactRange 的实现中,如果是 universal compaction,就忽略 Key Range,总是 compact 所有数据。
于是,在 drop table 时,第一步不受影响,仍然有效,但是第二步非常要命,哪怕我们删除的 table 只占所有数据的万分之一,它也会去 Compact 所有数据。所以,我们对 MyRocks 做了一个修改,在 drop table 时,如果是 universal compaction,就跳过第二步的 CompactRange。
同时,我们对第一步增加了一个优化:每次 drop table 时,把新被 drop 的 table(及其 index) 加入被删除列表,如果某个 SST 只包含被删除列表中的数据,就把这个 SST 删除。———因为跳过了第二步,drop table 时会遗留数据,drop 多个 table,遗留的数据会增加,这些数据只要在 Key Range 上连续起来,就很有可能完全覆盖了某个(或多个) SST。
到此为止,这个用例跑不通就可以理解了,当然,如果我们在 drop table 之后,主动对所有 cf 进行 compact,测试就可以通过了。
1.8 rocksdb.rocksdb
TerarkSQL 增加了一个后台线程用于定时 compact __system__
column family,故统计信息中会多出这个线程的信息,这与预期结果不一致。错误信息如下:
--- /newssd1/temp/mysql-on-terarkdb-4.8-bmi2-0/mysql-test/suite/rocksdb/r/rocksdb.result 2018-01-02 14:11:45.000000000 +0300
+++ /oldssd2/tempvar/1/log/rocksdb.reject 2018-01-10 16:09:18.590916677 +0300
@@ -956,6 +956,7 @@
rocksdb_store_row_debug_checksums OFF
rocksdb_strict_collation_check OFF
rocksdb_strict_collation_exceptions
+rocksdb_system_cf_background_flush_interval 120
rocksdb_table_cache_numshardbits 6
rocksdb_table_stats_sampling_pct 10
rocksdb_tmpdir
1.9 rocksdb.compact_deletes
原因同 1.7
1.10 rocksdb.singledelete
相关语句:
select case when variable_value-@s = 0 then 'true' else 'false' end
from information_schema.global_status
where variable_name='rocksdb_number_sst_entry_singledelete';
预期结果:
case when variable_value-@s = 0 then 'true' else 'false' end
true
测试结果:
case when variable_value-@s = 0 then 'true' else 'false' end
false
singledelete 相关统计数据与 compact 次数相关,而 TerarkSQL 的 write_buffer_size 默认设置(1G)与该测试中 MyRocks 不一致,write_buffer_size 不同时触发的 compact 次数不同,从而导致相关统计数据不一致,手动设置为与测试中一致(64K)即可通过。
1.11 rocksdb.bulk_load_errors
错误日志:
mysqltest: At line 27: query 'SET rocksdb_bulk_load=0' succeeded - should have failed with errno 2013...
MyRocks 对 universal compaction 支持不完善,在该模式下使用 MyRocks bulk load 模式时会发生死锁,TerarkSQL 不支持 MyRocks bulk load 模式,在使用中不能开启(set rocksdb_bulk_load=1)该模式。
1.12 rocksdb.compression_zstd
TerarkSQL 不使用 zstd 压缩算法。
1.13 rocksdb.bulk_load_rev_data, rocksdb.bulk_load, rocksdb.bulk_load_rev_cf, rocksdb.bulk_load_rev_cf_and_data
相关语句:SHOW TABLE STATUS WHERE name LIKE 't%';
预期结果:
SHOW TABLE STATUS WHERE name LIKE 't%';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
测试结果:
SHOW TABLE STATUS WHERE name LIKE 't%';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
t1 ROCKSDB 10 Fixed 4910123 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
测试输出如下:
--- /newssd1/temp/mysql-on-terarkdb-4.8-bmi2-0/mysql-test/suite/rocksdb/r/bulk_load_rev_cf_and_data.result 2018-01-02 14:11:45.000000000 +0300
+++ /oldssd2/tempvar/3/log/bulk_load_rev_cf_and_data.reject 2018-01-23 12:13:48.943023180 +0300
@@ -36,7 +36,7 @@
set rocksdb_bulk_load=0;
SHOW TABLE STATUS WHERE name LIKE 't%';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
+t1 ROCKSDB 10 Fixed 4910123 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
rows 为估计值,同 1.5。
1.14 rocksdb.native_procedure
错误信息如下:
mysqltest: In included file "./include/native_procedure.inc":
included from ./include/native_procedure.inc at line 38:
At line 37: Can't initialize replace from 'replace_result $NP_EXAMPLE_LIB NP_EXAMPLE_LIB'
官方原版 MyRocks 也不能通过,且 TerarkSQL 错误信息与原版 MyRocks 一致。
1.15 rocksdb.rocksdb_cf_options
TerarkSQL 为针对自身特点,使用了不同于原版 MyRocks 的默认 cf options,故与测试预期结果不符合。其错误信息如下:
--- /newssd1/temp/mysql-on-terarkdb-4.8-bmi2-0/mysql-test/suite/rocksdb/r/rocksdb_cf_options.result 2017-06-08 06:26:45.000000000 +0300
+++ /oldssd2/tempvar/1/log/rocksdb_cf_options.reject 2018-01-10 16:12:53.374043657 +0300
@@ -17,21 +17,21 @@
'MAX_BYTES_FOR_LEVEL_MULTIPLIER')
order by cf_name, option_type;
cf_name option_type value
-cf1 MAX_BYTES_FOR_LEVEL_MULTIPLIER 10.000000
-cf1 TARGET_FILE_SIZE_BASE 1048576
-cf1 WRITE_BUFFER_SIZE 12582912
-cf2 MAX_BYTES_FOR_LEVEL_MULTIPLIER 10.000000
-cf2 TARGET_FILE_SIZE_BASE 1048576
-cf2 WRITE_BUFFER_SIZE 12582912
-default MAX_BYTES_FOR_LEVEL_MULTIPLIER 10.000000
-default TARGET_FILE_SIZE_BASE 1048576
-default WRITE_BUFFER_SIZE 12582912
-z MAX_BYTES_FOR_LEVEL_MULTIPLIER 10.000000
-z TARGET_FILE_SIZE_BASE 1048576
-z WRITE_BUFFER_SIZE 12582912
-__system__ MAX_BYTES_FOR_LEVEL_MULTIPLIER 10.000000
-__system__ TARGET_FILE_SIZE_BASE 1048576
-__system__ WRITE_BUFFER_SIZE 12582912
+cf1 MAX_BYTES_FOR_LEVEL_MULTIPLIER 2.000000
+cf1 TARGET_FILE_SIZE_BASE 2147483648
+cf1 WRITE_BUFFER_SIZE 1073741824
+cf2 MAX_BYTES_FOR_LEVEL_MULTIPLIER 2.000000
+cf2 TARGET_FILE_SIZE_BASE 2147483648
+cf2 WRITE_BUFFER_SIZE 1073741824
+default MAX_BYTES_FOR_LEVEL_MULTIPLIER 2.000000
+default TARGET_FILE_SIZE_BASE 2147483648
+default WRITE_BUFFER_SIZE 1073741824
+z MAX_BYTES_FOR_LEVEL_MULTIPLIER 2.000000
+z TARGET_FILE_SIZE_BASE 2147483648
+z WRITE_BUFFER_SIZE 1073741824
+__system__ MAX_BYTES_FOR_LEVEL_MULTIPLIER 2.000000
+__system__ TARGET_FILE_SIZE_BASE 2147483648
+__system__ WRITE_BUFFER_SIZE 1073741824
1.16 rocksdb.records_in_range
相关语句:explain extended select a, b from t1 where a < 750;
错误信息类似如下:
--- /newssd1/temp/mysql-on-terarkdb-4.8-bmi2-0/mysql-test/suite/rocksdb/r/records_in_range.result 2017-06-08 06:26:45.000000000 +0300
+++ /oldssd2/tempvar/6/log/records_in_range.reject 2018-01-23 11:39:56.283711337 +0300
@@ -56,7 +56,7 @@
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` < 750)
explain extended select a, b from t1 where a < 750;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 ALL ka NULL NULL NULL 20000 75.00 Using where
+1 SIMPLE t1 ALL ka NULL NULL NULL 19694 76.17 Using where
Warnings:
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (`test`.`t1`.`a` < 750)
explain extended select a from t1 where a = 700;
其中有 rows 为预估值,同 1.5。
1.17 rocksdb.statistics
相关语句:SELECT table_name, table_rows
FROM information_schema.tables
WHERE table_schema = DATABASE() and table_name <> 't1';
错误信息如下:
--- /newssd1/temp/mysql-on-terarkdb-4.8-bmi2-0/mysql-test/suite/rocksdb/r/statistics.result 2017-06-08 06:26:45.000000000 +0300
+++ /oldssd2/tempvar/4/log/statistics.reject 2018-01-23 11:42:12.405805520 +0300
@@ -21,8 +21,8 @@
) engine=rocksdb;
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE() and table_name <> 't1';
table_name table_rows
-t2 1000
-t3 1000
+t2 4999
+t3 4999
SELECT CASE WHEN table_rows < 100000 then 'true' else 'false' end from information_schema.tables where table_name = 't1';
CASE WHEN table_rows < 100000 then 'true' else 'false' end
true
tables_rows 估计值,同 1.5。
1.17 rocksdb.issue255
相关语句:SHOW TABLE STATUS LIKE 't1';
错误信息类似如下:
--- /newssd1/temp/mysql-on-terarkdb-4.8-bmi2-0/mysql-test/suite/rocksdb/r/issue255.result 2018-01-02 14:11:45.000000000 +0300
+++ /oldssd2/tempvar/5/log/issue255.reject 2018-01-23 11:50:13.060075980 +0300
@@ -2,7 +2,7 @@
INSERT INTO t1 VALUES (5);
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 ROCKSDB # Fixed 1 # # # # # 6 NULL NULL NULL latin1_swedish_ci NULL
+t1 ROCKSDB # Fixed 0 # # # # # 6 NULL NULL NULL latin1_swedish_ci NULL
rows 为估计值,同 1.5。
1.18 rocksdb.max_open_files
相关语句:SELECT FLOOR(@@global.open_files_limit / 2) = @@global.rocksdb_max_open_files;
预期结果:
FLOOR(@@global.open_files_limit / 2) = @@global.rocksdb_max_open_files
1
测试结果:
FLOOR(@@global.open_files_limit / 2) = @@global.rocksdb_max_open_files
0
为了避免 sst 被多次打开,MySQL on Terarkdb 需要将 rocksdb_max_open_files 设置为 -1,故与预期不一致。
1.19 rocksdb.check_ignore_unknown_options
Corruption: Bad table magic number: expected 9863518390377041911, found 1234605616436508552 in ./.rocksdb/000126.sst
2. rocksdb_sys_vars
2.1 rocksdb_sys_vars.all_vars
相关语句:
select variable_name as `There should be *no* variables listed below:`
from t2 left join t1
on variable_name=test_name
where test_name is null
ORDER BY variable_name;
预期结果:
There should be *no* variables listed below:
测试结果:
There should be *no* variables listed below:
ROCKSDB_SYSTEM_CF_BACKGROUND_FLUSH_INTERVAL
ROCKSDB_SYSTEM_CF_BACKGROUND_FLUSH_INTERVAL
因 TerarkSQL 有更多的背景线程用于 flush __system__
cloumn famliy 以及时删除 WAL log 文件,故输出结果与预期不一致。
2.2 rocksdb_sys_vars.rocksdb_max_background_compactions_basic
错误信息如下:
mysqltest: In included file "./suite/sys_vars/inc/rocksdb_sys_var.inc":
included from ./suite/sys_vars/inc/rocksdb_sys_var.inc at line 10:
At line 9: query 'SET @start_global_value = @@global.$sys_var' failed: 1193: Unknown system variable 'ROCKSDB_MAX_BACKGROUND_COMPACTIONS'
MyRocks 版本更新,参数 ROCKSDB_MAX_BACKGROUND_COMPACTIONS
被移除,但测试程序未及时更新,导致测试失败。
类似错误导致的测试还有如下:
测试 | 被移除参数 |
---|---|
rocksdb_sys_vars.rocksdb_max_background_compactions_basic | ROCKSDB_MAX_BACKGROUND_COMPACTIONS |
rocksdb_sys_vars.rocksdb_max_background_flushes_basic | ROCKSDB_MAX_BACKGROUND_FLUSHES |
rocksdb_sys_vars.rocksdb_background_sync_basic | ROCKSDB_BACKGROUND_SYNC |
rocksdb_sys_vars.rocksdb_base_background_compactions_basic | ROCKSDB_BASE_BACKGROUND_COMPACTIONS |
rocksdb_sys_vars.rocksdb_flush_memtable_on_analyze_basic | rocksdb_flush_memtable_on_analyze |
rocksdb_sys_vars.rocksdb_use_direct_writes_basic | ROCKSDB_USE_DIRECT_WRITES |
2.3 rocksdb_sys_vars.rocksdb_update_cf_options_basic
错误信息如下:
--- /newssd1/temp/mysql-on-terarkdb-4.8-bmi2-0/mysql-test/suite/rocksdb_sys_vars/r/rocksdb_update_cf_options_basic.result 2017-06-08 06:26:45.000000000 +0300
+++ /oldssd2/tempvar/1/log/rocksdb_update_cf_options_basic.reject 2018-01-05 19:56:00.905260769 +0300
@@ -38,10 +38,10 @@
NULL
SELECT * FROM ROCKSDB_CF_OPTIONS WHERE CF_NAME='default' AND OPTION_TYPE='WRITE_BUFFER_SIZE';
CF_NAME OPTION_TYPE VALUE
-default WRITE_BUFFER_SIZE 67108864
+default WRITE_BUFFER_SIZE 6330063232
SELECT * FROM ROCKSDB_CF_OPTIONS WHERE CF_NAME='default' AND OPTION_TYPE='TARGET_FILE_SIZE_BASE';
CF_NAME OPTION_TYPE VALUE
-default TARGET_FILE_SIZE_BASE 67108864
+default TARGET_FILE_SIZE_BASE 101281011712
SET @@global.rocksdb_update_cf_options = 'default={write_buffer_size=8m;target_file_size_base=2m};';
SELECT @@global.rocksdb_update_cf_options;
@@global.rocksdb_update_cf_options
因 TerarkSQL 默认设置的 WRITE_BUFFER_SIZE
,TARGET_FILE_SIZE_BASE
与 MyRocks 默认值不一致,故导致测试失败。
3. rocksdb_hostbackup
3.1 rocksdb_hotbackup.slocket、rocksdb_hotbackup.gtid、rocksdb_hotbackup.xbstream
错误信息:
mysqltest: Could not open connection 'default' after 500 attempts: 2002 Can't connect to local MySQL server through socket '/newssd1/temp/mysql-on-terarkdb-4.8-bmi2-0/mysql-test/var/tmp/1/mysqld.2.sock' (2)
测试中第二个实例不能启动,导致测试超时,测试程序有误,原版 MyRocks 也不能通过。
Bloom Filter 相关的测试
TerarkDB 不需要 Bloom Filter,但 RocksDB 原版需要 Bloom Filter,这些测试不影响 TerarkDB 的功能。
- rocksdb.bloomfilter
- rocksdb.bloomfilter2
- rocksdb.bloomfilter3
- rocksdb.prefix_extractor_override