TiDB 3.0.4 Release Notes
Release date: October 8, 2019
TiDB version: 3.0.4
TiDB Ansible version: 3.0.4
New features
- Add the
performance_schema.events_statements_summary_by_digestsystem table to troubleshoot performance issues at the SQL level - Add the
WHEREclause in TiDB’sSHOW TABLE REGIONSsyntax - Add the
worker-countandtxn-batchconfiguration items in Reparo to control the recovery speed
- Add the
Improvements
- Support batch Region split command and empty split command in TiKV to improve split performance
- Support double linked list for RocksDB in TiKV to improve performance of reverse scan
- Add two perf tools
iosnoopandfuncslowerin TiDB Ansible to better diagnose the cluster state - Optimize the output of slow query logs in TiDB by deleting redundant fields
Changed behaviors
- Update the default value of
txn-local-latches.enabletofalseto disable the default behavior of checking conflicts of local transactions in TiDB - Add the
tidb_txn_modesystem variable of global scope in TiDB and allow using the pessimistic lock; note that TiDB still adopts the optimistic lock by default - Replace the
Index_idsfield in TiDB slow query logs withIndex_namesto improve the usability of slow query logs - Add the
split-region-max-numparameter in the TiDB configuration file to modify the maximum number of Regions allowed in theSPLIT TABLEsyntax - Return the
Out Of Memory Quotaerror instead of disconnecting the link when a SQL execution exceeds the memory limit - Disallow dropping the
AUTO_INCREMENTattribute of columns in TiDB to avoid misoperations. To drop this attribute, change thetidb_allow_remove_auto_incsystem variable
- Update the default value of
Fixed issues
- Fix the issue that the uncommented TiDB-specific syntax
PRE_SPLIT_REGIONSmight cause errors in the downstream database during data replication - Fix the issue in TiDB that the slow query logs are incorrect when getting the result of
PREPARE+EXECUTEby using the cursor - Fix the issue in PD that adjacent small Regions cannot be merged
- Fix the issue in TiKV that file descriptor leak in idle clusters might cause TiKV processes to exit abnormally when the processes run for a long time
- Fix the issue that the uncommented TiDB-specific syntax
Contributors
Our thanks go to the following contributors from the community for helping this release:
TiDB
- SQL Optimizer
- Fix the issue that invalid query ranges might be resulted when splitted by feedback #12170
- Display the returned error of the
SHOW STATS_BUCKETSstatement in hexadecimal rather than return errors when the result contains invalid Keys #12094 - Fix the issue that when a query contains the
SLEEPfunction (for example,select 1 from (select sleep(1)) t;)), column pruning causes invalidsleep(1)during query #11953 - Use index scan to lower IO when a query only concerns the number of columns rather than the table data #12112
- Do not use any index when no index is specified in
use index()to be compatible with MySQL #12100 - Strictly limit the number of
TopNrecords in theCMSketchstatistics to fix the issue that theANALYZEstatement fails because the statement count exceeds TiDB’s limit on the size of a transaction #11914 - Fix the error occurred when converting the subqueries contained in the
Updatestatement #12483 - Optimize execution performance of the
select ... limit ... offset ...statement by pushing the Limit operator down to theIndexLookUpReaderexecution logic #12378
- SQL Execution Engine
- Print the SQL statement in the log when the
PREPAREDstatement is incorrectly executed #12191 - Support partition pruning when the
UNIX_TIMESTAMPfunction is used to implement partitioning #12169 - Fix the issue that no error is reported when
AUTO_INCREMENTincorrectly allocatesMAX int64andMAX uint64#12162 - Add the
WHEREclause in theSHOW TABLE … REGIONSandSHOW TABLE .. INDEX … REGIONSsyntaxes #12123 - Return the
Out Of Memory Quotaerror instead of disconnecting the link when a SQL execution exceeds the memory limit #12127 - Fix the issue that incorrect result is returned when
JSON_UNQUOTEfunction handles JSON text #11955 - Fix the issue that
LAST INSERT IDis incorrect when assigning values to theAUTO_INCREMENTcolumn in the first row (for example,insert into t (pk, c) values (1, 2), (NULL, 3)) #12002 - Fix the issue that the
GROUPBYparsing rule is incorrect in thePREPAREstatement #12351 - Fix the issue that the privilege check is incorrect in the point queries #12340
- Fix the issue that the duration by
sql_typefor thePREPAREstatement is not shown in the monitoring record #12331 - Support using aliases for tables in the point queries (for example,
select * from t tmp where a = "aa") #12282 - Fix the error occurred when not handling negative values as unsigned when inserting negative numbers into BIT type columns #12423
- Fix the incorrectly rounding of time (for example,
2019-09-11 11:17:47.999999666should be rounded to2019-09-11 11:17:48.) #12258 - Refine the usage of expression blocklist (for example,
<is equivalent toIt.) #11975 - Add the database prefix to the message of non-existing function error (for example,
[expression:1305]FUNCTION test.std_samp does not exist) #12111
- Print the SQL statement in the log when the
- Server
- Add the
Prev_stmtfield in slow query logs to output the previous statement when the last statement isCOMMIT#12180 - Optimize the output of slow query logs by deleting redundant fields #12144
- Update the default value of
txn-local-latches.enabletofalseto disable the default behavior of checking conflicts of local transactions in TiDB #12095 - Replace the
Index_idsfield in TiDB slow query logs withIndex_namesto improve the usability of slow query logs #12061 - Add the
tidb_txn_modesystem variable of global scope in TiDB and allow using pessimistic lock #12049 - Add the
Backofffield in the slow query logs to record the Backoff information in the commit phase of 2PC #12335 - Fix the issue that the slow query logs are incorrect when getting the result of
PREPARE+EXECUTEby using the cursor (for example,PREPARE stmt1FROM SELECT * FROM t WHERE a > ?; EXECUTE stmt1 USING @variable) #12392 - Support
tidb_enable_stmt_summary. When this feature is enabled, TiDB counts the SQL statements and the result can be queried by using the system tableperformance_schema.events_statements_summary_by_digest#12308 - Adjust the level of some logs in tikv-client (for example, change the log level of
batchRecvLoop failsfromERRORtoINFO) #12383
- Add the
- DDL
- Add the
tidb_allow_remove_auto_incvariable. Dropping theAUTO INCREMENTattribute of the column is disabled by default #12145 - Fix the issue that the uncommented TiDB-specific syntax
PRE_SPLIT_REGIONSmight cause errors in the downstream database during data replication #12120 - Add the
split-region-max-numvariable in the configuration file so that the maximum allowable number of Regions is adjustable #12097 - Support splitting a Region into multiple Regions and fix the timeout issue during Region scatterings #12343
- Fix the issue that the
drop indexstatement fails when the index that contains anAUTO_INCREMENTcolumn referenced by two indexes #12344
- Add the
- Monitor
- Add the
connection_transient_failure_countmonitoring metrics to count the number of gRPC connection errors intikvclient#12093
- Add the
TiKV
- Raftstore
- Server
- Fix the issue that the output format of the
-Vcommand is not consistent with the format of 2.X #5501 - Upgrade Titan to the latest version in the 3.0 branch #5517
- Upgrade grpcio to v0.4.5 #5523
- Fix the issue of gRPC coredump and support shared memory to avoid OOM #5524
- Fix the issue in TiKV that file descriptor leak in idle clusters might cause TiKV processes to exit abnormally when the processes run for a long time #5567
- Fix the issue that the output format of the
- Storage
PD
- Fix the issue that adjacent small Regions cannot be merged #1726
- Fix the issue that the TLS enabling parameter in
pd-ctlis invalid #1738 - Fix the thread-safety issue that the PD operator is accidentally removed #1734
- Support TLS for Region syncer #1739
Tools
- TiDB Binlog
- TiDB Lightning
TiDB Ansible
- Upgrade TiSpark to v2.2.0 #926
- Update the default value of the TiDB configuration item
pessimistic_txntotrue#933 - Add more system-level monitoring metrics to
node_exporter#938 - Add two perf tools
iosnoopandfuncslowerin TiDB Ansible to better diagnose the cluster state #946 - Replace the raw module to shell module to address the long waiting time in such situations as the password expires #949
- Update the default value of the TiDB configuration item
txn_local_latchestofalse - Optimize the monitoring metrics and alert rules of Grafana dashboard #962 #963 #969
- Check the configuration file before the deployment and upgrade #934 #972