release of the distributed DBMS , developed under the influence of Google technologies and . TiDB belongs to the category of hybrid HTAP (Hybrid Transactional/Analytical Processing) systems, capable of both enabling real-time transaction processing (OLTP) and executing analytical query processing. The project is written in Go and under the Apache 2.0 license.
Features of TiDB:
- Support for SQL and provision of a client interface compatible with the MySQL protocol, which simplifies the adaptation of existing applications written for MySQL to TiDB, as well as allowing the use of common client libraries. In addition to the MySQL protocol, it is possible to access the DBMS using a JSON-based API and a connector for Spark.
- SQL features supported include indexes, aggregate functions, GROUP BY, ORDER BY, DISTINCT expressions, joins (LEFT JOIN / RIGHT JOIN / CROSS JOIN), views, window functions, and subqueries. The capabilities provided are sufficient for the operation of web applications with TiDB, such as PhpMyAdmin, and WordPress;
- Ability to scale horizontally and ensure fault tolerance: storage size and computing power can be increased simply by adding new nodes. Data is distributed across nodes with redundancy, allowing continued operation in the event of node failures. Failures are automatically handled.
- The system guarantees consistency and appears to client applications as a single large DBMS, despite the fact that data from multiple nodes is utilized to execute transactions.
- Different backends can be used for physical data storage on nodes, such as local storage engines GoLevelDB and BoltDB or proprietary distributed storage engines and TiFlash. TiKV stores data in rows in a key/value format and is more optimized for transaction processing tasks (OLTP). TiFlash stores data in a columnar format and allows achieving higher performance for solving analytical tasks (OLAP).
- Ability for asynchronous schema changes, allowing columns and indexes to be added on the fly without stopping the processing of current operations.
In the new release:
- By default, the distributed garbage collector Green GC is enabled, allowing for significantly increased garbage collection speed in large clusters and improved stability;
- Support for large transactions has been added, with their size limited primarily by physical memory. The size limit for a single transaction has been increased from 100 MB to 10 GB;
- Support for BACKUP and RESTORE commands for backups has been added;
- The ability to lock tables has been added;
- A MySQL-compatible mechanism for transaction isolation at the read level (READ COMMITTED) has been added;
- The command 'ADMIN SHOW DDL JOBS' now supports LIKE and WHERE expressions;
- The parameter oom-use-tmp-storage has been added, allowing temporary files to be used for caching intermediate results in low memory conditions;
- The Random keyword has been added to assign random values to attributes;
- The LOAD DATA command now supports hexadecimal and binary expressions;
- 15 parameters have been added to control the optimizer's behavior;
- Tools for diagnosing SQL query performance have been added. A slow query log is now available through the system tables SLOW_QUERY / CLUSTER_SLOW_QUERY;
- Support for functions to work with sequences has been added;
- The ability to dynamically change configuration parameters read from PD (Placement Driver, cluster management server) has been added. The expression 'SET CONFIG' can now be used to change settings on PD/TiKV nodes.
- The max-server-connections setting has been added to limit the maximum number of simultaneous connections to the server (default 4096);
- Performance has been improved in situations where requested columns are fully covered by indexes;
- Query optimization based on index merging has been added;
- The performance of range value operations has been improved;
- CPU load has been reduced by caching results of index accesses and filtering out duplicates;
- Support for a new string storage format has been added, increasing the performance of tables with a large number of columns;
- The GROUP_CONCAT function now supports the 'ORDER BY' expression;
- The ability to extract data from the TiFlash log via SQL has been added.
- The team has implemented support for restoring trimmed tables in RECOVER TABLE;
- A system table DDLJobs has been added to query details about DDL job execution;
- Added the ability to use the SHOW CONFIG command to display the settings for PD and TiKV;
- default coprocessor cache;
- The number of goroutines in the commit retry phase can now be controlled via the committer-concurrency setting;
- Added the ability to display regions of table partitions;
- Added the ability to limit the size of temporary storage in tidb-server;
- Support for operations 'insert into tbl_name partition(partition_name_list)' and 'replace into tbl_name partition(partition_name_list)' has been added;
- The hash used for partitioning now supports filtering by the 'is null' attribute;
- For partitioned tables, support for checking, cleaning, and recovering indexes has been added.
Source: opennet.ru
