TiDB 4.0 Beta Release Notes

Release date: January 17, 2020

TiDB version: 4.0.0-beta

TiDB Ansible version: 4.0.0-beta

TiDB

  • Print the log or cancel the SQL execution when the memory used during the execution of INSERT/REPLACE/DELETE/UPDATE exceeds the limit specified by the MemQuotaQuery configuration item. The actual behavior depends on the OOMAction configuration. #14179 #14289 #14299
  • Increase the accuracy of calculating the cost of Index Join by considering the row counts of both driving tables and driven tables #12085
  • Add 15 SQL hints to control the behavior of the optimizer and make the optimizer more stable
  • Improve the performance when the columns involved in a query can be fully covered by indexes #12022
  • Improve the performance of table query by supporting the Index Merge feature #10121 #10512 #11245 #12225 #12248 #12305 #12843
  • Improve the performance of Range calculation and reduce the CPU overhead by caching index results and eliminating duplicate results #12856
  • Decouple the level of slow logs from the level of ordinary logs #12359
  • Add the oom-use-tmp-storage parameter (true by default) to control whether to use temporary files to cache intermediate results when the memory usage for the execution of a single SQL statement exceeds mem-quota-query and the SQL contains Hash Join #11832 #11937 #12116 #12067
  • Support using create index/alter table to create expression index and using drop index to drop expression index #14117
  • Increase the default value of the query-log-max-len parameter to 4096 to reduce the number of truncated SQL outputs. This parameter can be adjusted dynamically. #12491
  • Support adding the AutoRandom keyword in the column attribute to control whether the system automatically assigns a random integer to the primary key, which avoids the hotspot problem caused by the AUTO_INCREMENT primary key #13127
  • Support Table Locks #11038
  • Support using the LIKE or WHERE clause in ADMIN SHOW DDL JOBS for conditional filtering #12484
  • Add the TIDB_ROW_ID_SHARDING_INFO column in the information_schema.tables table to output the RowID scattering information (for example, the value of the SHARD_ROW_ID_BITS column in table A is "SHARD_BITS={bit_number}") #13418
  • Optimize the error code of SQL error messages to avoid the situation that the ERROR 1105 (HY000) code is used for multiple error messages (the Unknown Error type)
  • Convert a narrow data range of the discrete type into point set and use CM-Sketch to improve the estimation accuracy when estimating the number of rows #11524
  • Extract the TopN information from CM-Sketch for normal Analyze and separately maintain the frequently occurring values #11409
  • Support dynamically adjusting the depth and width of CM-Sketch and the number of TopN information #11278
  • Support automatically capturing and evolving SQL Binding #13199 #12434
  • Optimize the encoding format of communication with TiKV by using Chunk to improve communication performance #12023 #12536 #12613 #12621 #12899 #13060 #13349
  • Support the new row store format to improve the performance of the wide table #12634
  • Optimize the Recover Binlog interface to ensure waiting all transactions to be committed before returning to the client #13740
  • Support querying the binlog statuses enabled by TiDB servers in the cluster through the HTTP info/all interface #13025
  • Support the MySQL-compatible Read Committed transaction isolation level when using the pessimistic transaction mode #14087
  • Support large-sized transactions. The transaction size is limited by the size of the physical memory.
  • Improve the stability of Kill #10841
  • Support hexadecimal and binary expressions as separators in LOAD DATA #11029
  • Improve the performance of IndexLookupJoin and reduce memory consumption during execution by splitting IndexLookupJoin into IndexHashJoin and IndexMergeJoin #8861 #12139 #12349 #13238 #13451 #13714
  • Fix several issues relating to RBAC #13896 #13820 #13940 #14090 #13940 #13014
  • Fix the issue that VIEW cannot be created because the SELECT statement contains union #12595
  • Fix several issues relating to the CAST function
  • Output the detailed backoff information of TiKV RPC in the slow log to facilitate troubleshooting #13770
  • Optimize and unify the format of the memory statistics in the expensive log #12809
  • Optimize the explicit format of EXPLAIN and support outputting information about the operator’s usage of memory and disk #13914 #13692 #13686 #11415 #13927 #13764 #13720
  • Optimize the check for duplicate values in LOAD DATA based on the transaction size and support setting the transaction size by configuring the tidb_dml_batch_size parameter #11132
  • Optimize the performance of LOAD DATA by separating the data preparing routine and the commit routine and assigning the workload to different Workers #11533 #11284

TiKV

PD

  • Support optimizing hotspot scheduling according to the load information of storage nodes
  • Add the Placement Rules feature that supports controlling the number of replicas of any data range, the storage location, the storage host type and roles by combining different scheduling rules
  • Support using plugins (experimental) #1799
  • Add the feature that the schedulers support the customized configuration and key ranges (experimental) #1735 #1783 #1791
  • Support automatically adjusting the scheduling speed according the cluster load information (experimental, disabled by default) #1875 #1887 #1902

Tools

  • TiDB Lightning
    • Add the parameter in the command-line tool to set the password of the downstream database #253

TiDB Ansible

  • Add checksum check in the package in case that the downloaded package is incomplete #1002
  • Support checking the systemd version which must be systemd-219-52 or later #1020 #1074
  • Fix the issue that the log directory is incorrectly created when TiDB Lightning is started #1103
  • Fix the issue that the customized port of TiDB Lightning is invalid #1107
  • Support deploying and maintaining TiFlash #1119