V21.0.0
Version Release Notes
Scalability and Performance
Extending Stale Read Capability
Adding system variables to specify the replica role for Stale Read data retrieval, and adding Session variables to control the staleness level of data read by Stale Read.
Modify the DBOptions and CFOptions originally belonging to the Mutable in RocksDB to support dynamic modification in the MySQL parameter system, thereby enhancing Ops convenience.
In the old version, MySQL parameters were supported to view/modify configuration parameters at the TDStore layer. Due to conservative considerations, the DBOptions and CFOptions originally marked as Mutable in RocksDB had their corresponding parameters in the MySQL layer set to read-only. In this version, the parameter system upgrade work has been largely completed. Therefore, parameters marked as Mutable in RocksDB now also support dynamic modification at the MySQL layer. The specific parameters include:
DBOptions for the three DB instances (DataDB, RaftDB, MonitorDB): stats_persist_period_sec, stats_history_buffer_size, strict_bytes_per_sync, daily_offpeak_time_utc
CFOptions for the five CFs (system, user, local, raft, monitor): experimental_mempurge_threshold, blob_compression_type compression, last_level_temperature, sample_for_compression, bottommost_compression
Support performing data Compaction on specified tables and associated indexes via the MySQL OPTIMIZE TABLE statement.
Performing OPTIMIZE TABLE on a specified table triggers Compaction of the data range for that table and its associated indexes. This expedites garbage collection of obsolete data. When it is executed on a columnar storage node, this statement facilitates accelerated offloading of columnar storage data.
Apply the optimization of converting large transaction Write Batches to Memtables to native RocksDB instances.
Apply the large transaction optimization to native RocksDB instances. Introduce the GLOBAL variable tdstore_enable_local_storage_tran_wbi_to_memtable as a switch.
Introducing a new columnar storage replica product variant to enhance capabilities for complex SQL analysis in AP scenarios.
Columnar replicas reside on dedicated Columnar read-only nodes, automatically synchronizing data from row-based replicas on Hybrid nodes to columnar nodes via Raft Log. Asynchronous Compaction mechanisms generate columnar data. Columnar nodes provide independent VIPs and support vectorized SQL engines, enhancing complex SQL analysis capabilities through vectorized execution.
Columnar nodes are compatible with MySQL syntax; however, due to the characteristics of the storage format and vectorized engine, 100% compatibility with MySQL has not yet been achieved.
Supports querying data in columnar storage via the vectorized engine, enables automatic conversion between TDStore and vectorized schemas, parallel scanning, and consistent reads.
Columnar node variable description: Columnar nodes have independent control variables (detailed in columnar parameter changes) that govern the behavior of the columnar node engine. These variables are marked with the prefixes htap_xxx and tdstore_htap_xxx. By default, these variables only affect columnar nodes and have no impact on row-based storage, with two exceptions:
htap_routing_strategy: Enables or disables the columnar vectorized engine, enabled by default. When the vectorized engine is disabled (SET htap_routing_strategy=default), columnar nodes will read data from row-based storage nodes, which will affect the IO of row-based storage nodes.
htap_enable_ve_execution_fallback: Enables fallback to row-based storage execution when columnar queries encounter errors, disabled by default. When it is enabled (SET htap_enable_ve_execution_fallback=on), the columnar node engine will automatically fall back to reading data from row-based storage nodes upon query exceptions, which will impact the IO of row-based storage nodes.
Supports redo operations for columnar nodes
The peer (storage-compute) node page provides the capability to recreate columnar Pods by scaling down and then scaling up to rebuild the columnar Pods.
Support for Columnar Metadata and Related Orchestration
Supports creating columnar replicas at the metadata layer, enabling the adaptation of columnar orchestration logic such as node balancing/automatic Merge.
Stability
Storage engine RocksDB core upgrade from version 5.18.3 to 8.11.3.
The RocksDB kernel version has been upgraded from 5.18.3 to 8.11.3, resulting in enhanced system stability and a more rational code hierarchy.
Optimize the capability to dynamically compact undersized SST files
Due to SST boundary alignment being enabled by default, in scenarios with a large number of databases and tables, the upper layers of the LSM-Tree generate numerous small SST files, causing stability and performance issues. The capability to dynamically compact undersized SST files has been optimized: When adjacent layers of the LSM-Tree use the same compression algorithm, multiple neighboring small SST files are also selected for compaction to more significantly reduce the total number of small SST files. (Prior to this optimization, compaction of small SST files was not considered when adjacent layers used identical compression algorithms.)
Modify the column length limit for data dictionary cache
Modify max_dd_cache_size to 100 to reduce the upper limit of memory usage for the data dictionary cache.
Operations
Special Hint Support for Columnar Nodes
Methods to influence execution plans via hints/outlines are added for SQL queries on columnar nodes. Variable control via /*+set_var*/ and join order control via /*+join_order*/ are supported.
New monitoring metrics related to RocksDB Scan have been added.
Added two metrics, data_db_bytes_scan_read and data_db_num_keys_scan_read, for each TDStore node to record internal RocksDB Scan information.
Added the CALL DBMS_ADMIN.TDSTORE_FORCE_FULL_COMPACTION command to trigger full Compaction for user_cf
Executing CALL DBMS_ADMIN.TDSTORE_FORCE_FULL_COMPACTION; triggers a full Compaction of the user_cf. If the command is executed on a columnar node, it initiates a full data dump to columnar storage.
Bug fixes
Fixed an issue where MC role transition stalling prevented services from being provided. Added time-consuming detection; if the duration exceeds a specific threshold, MC kills itself to trigger etcd re-election.
Fixed the issue of excessive memory usage under DDL pressure after the max_dd_cache_size length is adjusted.
Fixed the issue where some Online DDL operations failed to execute when TDSQL's tdsql_use_online_copy_ddl was set to true by default. For such errors, non-partitioned tables catch and throw specific exception messages, while partitioned tables only throw ERROR 8510 (HY000): SQLEngine system error 'Unknown error occurs'.
Fixed an issue where overlapping scenarios—such as one node's disk being full, another node entering read-only mode, and incremental backups accumulating excessively—could prevent the release of disk space occupied by Raft Logs even after incremental backups caught up.
Data dictionary change
|
Addition | | Used to record the execution process and results of columnar compaction and drop table tasks. |
Addition | | Used to record the process and results of columnar storage file deletion. |
Addition | | Used to display relevant information about columnar files in columnar nodes. |
Addition | | Used to collect statistics on the data volume of row-based storage and column-based storage for a table, as well as the ratio between them. |