- What's New
- Function Overview
- Product Bulletin
- Service Overview
- Billing
- Getting Started
-
Kernel
- TaurusDB Kernel Version Release History
-
Common Kernel Functions
- Parallel Query
- Near Data Processing
- DDL Optimization
- Fast Binlog Positioning
- Backward Index Scan
- Statement Outline
- Idle Transaction Disconnection
- LIMIT...OFFSET Pushdown
- Conversion of IN Predicates Into Subqueries
- DISTINCT Optimization for Multi-Table Joins
- Diagnosis on Large Transactions
- Enhanced Partitioned Tables
- Hot Row Update
- Multi-tenancy
- Column Compression
- Table Recycle Bin
- Cold Data Preloading for Read Replicas
- Self-Healing of Read Replicas upon a Replication Latency
-
User Guide
- Permissions Management
- Buying a DB Instance
- Connecting to a DB Instance
- Database Usage
- Data Migration
-
Instance Management
- Viewing the Overall Status of DB Instances
- Viewing Metrics
- Instance Lifecycle Management
-
Configuration Changes
- Changing the vCPUs and Memory of a DB Instance or Node
- Changing the Storage Space of a DB Instance
- Configuring Auto Scaling Policies for a DB Instance
- Changing the Maintenance Window of a DB Instance
- Customizing Displayed Items of the Instance List
- Upgrading the Minor Kernel Version of a DB Instance
- Updating the OS of a DB Instance
- Data Backups
- Data Restorations
- Serverless Instances
- Multi-primary Instances (OBT)
- Read Replicas
-
Database Proxy (Read/Write Splitting)
- What Is Database Proxy?
- Creating a Proxy Instance for Read/Write Splitting
-
Changing Configurations of a Proxy Instance
- Changing the Consistency Level of a Proxy Instance
- Enabling the Connection Pool for a Proxy Instance
- Enabling Transaction Splitting for a Proxy Instance
- Modifying the Routing Policy of a Proxy Instance
- Changing Read Weights of Nodes
- Changing the Multi-statement Processing Mode of a Proxy Instance
- Enabling Automatic Association of New Nodes with a Proxy Instance
- Enabling Access Control for a Proxy Instance
- Changing the Specifications of a Proxy Instance
- Changing the Number of Nodes for a Proxy Instance
- Applying for a Private Domain Name for a Proxy Instance
- Changing the Port of a Proxy Instance
- Changing the Proxy Address of a Proxy Instance
- Modifying Parameters of a Proxy Instance
- Binding an EIP to a Proxy Instance
- Proxy Instance Lifecycle
- Proxy Instance Kernel Versions
- Using Hints for Read/Write Splitting
- DBA Assistant
- Parameter Management
- Security and Encryption
- Cold and Hot Data Separation (OBT)
- Application Lossless and Transparent (ALT)
-
HTAP Analysis (Standard Edition)
- What Is HTAP of Standard Edition?
- Connecting to an HTAP Instance for Complex OLAP Queries
- Connecting to a Standard HTAP Instance
-
Standard HTAP Instance Management
- Rebooting a Standard HTAP Instance
- Rebooting a Node of a Standard HTAP Instance
- Changing Storage Space of a Standard HTAP Instance
- Adding Read Replicas to a Standard HTAP Instance
- Deleting a Standard HTAP Instance
- Adjusting Blacklisted or Whitelisted Tables of a Standard HTAP Instance and Repairing Tables
- Standard HTAP Account Management
- Viewing Metrics of a Standard HTAP Instance or Nodes
- Syntax and Data Type Mappings Between HTAP and TaurusDB Instances
- Performance Tuning
-
RegionlessDB Clusters (OBT)
- What Is a RegionlessDB Cluster?
- Using a RegionlessDB Cluster for Remote Multi-Active DR
- Using a RegionlessDB Cluster for Remote DR
- Performing a Primary/Standby Switchover or Failover in a RegionlessDB Cluster
- Removing a Standby Instance from a RegionlessDB Cluster
- Deleting a RegionlessDB Cluster
- Viewing the Replication Latency and Traffic of a RegionlessDB Cluster
- Monitoring and Alarms
- Logs and Auditing
- Task Center
- Tag Management
- Quota Management
- Best Practices
- Performance White Paper
-
API Reference
- Before You Start
- API Overview
- Calling APIs
-
APIs (Recommended)
- DB Engine Version Queries
- Database Specification Queries
-
Instance Management
- Creating a DB Instance
- Rebooting a DB Instance
- Deleting/Unsubscribing from a DB Instance
- Creating a Read Replica
- Deleting or Unsubscribing from a Read Replica
- Scaling up Storage of a Yearly/Monthly DB Instance
- Changing a DB Instance Name
- Resetting a Database Password
- Changing DB Instance Specifications
- Querying Dedicated Resource Pools
- Querying Dedicated Resources
- Configuring the Monitoring By Seconds Function
- Querying the Configuration of Monitoring by Seconds
- Rebooting a Node
- Upgrading the Kernel Version of a DB Instance
- Enabling or Disabling SSL
- Binding an EIP
- Unbinding an EIP
- Promoting a Read Replica to Primary
- Changing a Maintenance Window
- Changing a Security Group
- Changing a Private IP Address
- Changing a Database Port
- Changing a DB Instance Description
- Applying for a Private Domain Name
- Changing a Private Domain Name
- Querying the Kernel Version
- Modifying Auto Scaling Policies
- Querying Auto Scaling Policies
- Pre-Checking Resources
- Querying DB instances
- Querying Details of a DB Instance
- Querying Details of DB Instances in Batches
- Modifying a Recycling Policy
- Querying a Recycling Policy
- Querying Instances in the Recycle Bin
- Changing Node Names in Batches
- Querying Historical Records of Auto Scaling
- Setting a Policy for a Serverless DB Instance
- Changing the Failover Priority of a Read Replica
- Querying an EIP
-
Backup Management
- Configuring a Same-Region Backup Policy
- Creating a Manual Backup
- Querying Full Backups
- Querying an Automated Backup Policy
- Deleting a Manual Backup
- Restoring Data to the Original Instance or an Existing Instance
- Querying the Restoration Time Range
- Enabling or Disabling Encrypted Backup
- Checking Whether Encrypted Backup Is Enabled
- Querying Incremental Backups
- Configuring a Cross-Region Backup Policy
- Restoring Tables to a Specified Point in Time
- Querying Tables for Table-level Point-in-Time Recovery
-
Parameter Template Management
- Querying Parameter Templates
- Creating a Parameter Template
- Deleting a Parameter Template
- Obtaining Details About a Parameter Template
- Modifying Parameters in a Parameter Template
- Applying a Parameter Template
- Replicating a Parameter Template
- Comparing Parameter Templates
- Querying Instances That a Parameter Template Can Be Applied To
- Viewing Parameter Change History
- Obtaining Parameter Information of a Specified DB Instance
- Modifying Parameters of a Specified DB Instance
- Replicating the Parameter Template of a DB Instance
- Querying Application Records of a Parameter Template
- Quota Management
-
Database Proxy
- Creating a Proxy Instance
- Deleting a Proxy Instance
- Querying Proxy Instances
- Querying Proxy Instance Specifications
- Adding Proxy Nodes
- Deleting Proxy Nodes
- Changing the Specifications of a Proxy Instance
- Assigning Read Weights
- Changing the Routing Policy of a Proxy Instance
- Enabling or Disabling Transaction Splitting for a Proxy Instance
- Enabling or Disabling Automatic Association of New Nodes with Proxy Instances
- Changing Session Consistency of a Proxy Instance
- Changing the Connection Pool Type of a Proxy Instance
- Changing the Port of a Proxy Instance
- Upgrading the Kernel Version of a Proxy Instance
- Modifying the Name of a Proxy Instance
- Querying Access Control Settings of a Proxy Instance
- Querying the Minor Version of a Proxy Instance
- Modifying Parameters of a Proxy Instance
- Querying Kernel Parameters of a Proxy Instance
- Enabling or Disabling Access Control
- Configuring Access Control Rules
- Enabling or Disabling SSL for a Proxy Instance
- Rebooting a Proxy Instance
-
Log Management
- Enabling or Disabling SQL Explorer
- Querying Whether SQL Explorer Is Enabled
- Querying Slow Query Logs
- Querying Error Logs
- Obtaining the Temporary Link for Downloading Full SQL
- Querying LTS Configurations of an Instance
- Deleting LTS Configurations in Batches
- Creating LTS Configurations in Batches
- Querying Whether Show Original Log Is Enabled
- Enabling or Disabling Show Original Log
- Querying Slow Query Log Statistics
- Obtaining Links for Downloading Slow Query Logs
- Tag Management
- Database User Management
- Database Management
- Traffic Management
- Task Center
- Intelligent Diagnosis
-
HTAP (Standard Edition)
- Restoring a Data Synchronization Task for a StarRocks Instance
- Stopping a Data Synchronization Task for a StarRocks Instance
- Checking Table Configurations for HTAP Data Synchronization
- Creating a StarRocks Instance
- Querying a StarRocks Instance
- Deleting a StarRocks Instance
- Rebooting a StarRocks Instance
- Rebooting a StarRocks Node
- Checking StarRocks Resources
- Querying HTAP Engine Resources
- Obtaining the Storage Type of an HTAP Instance
- Querying Specifications of an HTAP Instance
- Querying HTAP Instances
- Creating a Data Synchronization Task for a StarRocks Instance
- Deleting a Data Synchronization Task for a StarRocks Instance
- Querying Data Synchronization Tasks of a StarRocks Instance
- Checking Database Configurations for HTAP Data Synchronization
- Querying Configurations of a StarRocks Data Synchronization Task
- Querying Database Parameter Settings for StarRocks Data Synchronization
- Querying Databases of a StarRocks Instance
- Querying Database Accounts
- Creating a Database Account
- Deleting a Database Account
- Changing the Password of a Database Account
- Changing Permissions of a Database Account
- Changing the Specifications of a StarRocks Instance
- Querying Parameters
- Modifying Parameters
- Enabling Assign Requests to Row and Column Store Nodes for a StarRocks Instance
- Comparing Parameters
- Multi-tenancy
-
APIs (Unavailable Soon)
- DB Engine Version Queries
- Database Specification Queries
-
Instance Management
- Creating a DB Instance
- Querying DB Instances
- Querying DB Instances
- Deleting a DB Instance
- Querying Details of a DB Instance
- Querying Details of DB Instances in Batches
- Querying Details of a DB Instance
- Creating a Read Replica
- Deleting a Read Replica
- Scaling up Storage of a Yearly/Monthly DB Instance
- Changing a DB Instance Name
- Resetting a Database Password
- Modifying DB Instance Specifications
- Backup Management
- Parameter Template Management
- Quota Management
- Database Proxy
- Log Management
- Task Information Queries
- Permissions Policies and Supported Actions
- Appendix
- SDK Reference
-
FAQs
- Product Consulting
- Resource Freezing, Unfreezing, Release, Deletion, and Unsubscription
-
Database Connections
- What Should I Do If I Can't Connect to My TaurusDB Instance?
- What Should I Do If an ECS Can't Connect to a TaurusDB Instance?
- Can an External Server Access a TaurusDB Instance?
- What Is the Maximum Number of Connections to a TaurusDB Instance?
- What Do I Do If There Are Too Many Database Connections?
- Are There Any Risks If There Are Too Many Connections to a TaurusDB Instance?
- What Should I Do If the Network Connectivity Test Fails?
- Can I Access a TaurusDB Instance over an Intranet Connection Across Regions?
- How Do I Check the Connections to a TaurusDB Instance?
- How Do I Enable Availability Detection for a Connection Pool in the Service Code?
- Client Installation
- Database Migration
- Database Permissions
-
Database Performance
- What Should I Do If the CPU Usage of My TaurusDB Instance Is High?
- How Do I Handle Slow SQL Statements Caused by Inappropriate Composite Index Settings?
- How Do I Handle a Large Number of Temporary Tables Being Generated for Long Transactions and High Memory Usage?
- What Should I Do If Locks on Long Transactions Block the Execution of Subsequent Transactions?
- How Can I Use Temporary Disks of TaurusDB?
- What Is the CPU Usage of a TaurusDB Instance with Empty Load?
-
Database Usage
- Why Are the Results Inconsistent After the MATCH AGAINST Statement Is Executed, Respectively, on Primary Nods and Read Replicas?
- How Do I Add Columns Using INSTANT?
- How Do I Use LOAD DATA to Import Local Data?
- How Do I Write Data to or Create Indexes for an Ultra-large Table?
- What Are the Risks of Deleting an Index from an Ultra-large Table?
- Backups
-
Database Parameter Modification
- How Do I Change the Time Zone of a TaurusDB Instance?
- How Do I Configure a Password Expiration Policy for TaurusDB Instances?
- How Do I Ensure that the Database Character Set of a TaurusDB Instance Is Correct?
- How Do I Use the utf8mb4 Character Set to Store Emojis in a TaurusDB Instance?
- How Do I Set Case Sensitivity for TaurusDB Table Names?
- Can I Use SQL Commands to Modify Global Parameters of My TaurusDB Instance?
- Network Security
-
Log Management
- Can I Enable general_log for TaurusDB?
- How Do I View All SQL Statements Executed by TaurusDB?
- How Do I Enable and View Binlog of My TaurusDB Instance?
- How Do I Change the Binlog Retention Period?
- How Do I View Deadlock Logs of TaurusDB?
- Why Are Slow SQL Statements Displayed in Slow Query Log Monitoring, but No Information About Them Is Displayed on the Slow Query Logs Tab Page in the Logs Module?
- Version Upgrade
-
Troubleshooting
-
Backup and Restoration Issues
- Insufficient Permissions During Data Export Using mysqldump
- How Do I use mysqlbinlog to Obtain Binlog Files?
- Canal Fails to Parse Binlogs
- Precautions for Exporting Large Tables Through mysqldump
- Commands for Exporting Data Through mysqldump
- System Inaccessible After Field Addition to a Database Table
- SQL Statements Such as SET @@SESSION.SQL_LOG_BIN Displayed After You Run mysqldump
- Insufficient Privileges Reported for Canal
-
Connection Issues
- Login Failed After ssl_type of root Is Changed to ANY
- Failed to Connect to a DB Instance Using SSL
- Description of Each IP Address
- SSL Connection Failed Due to Inconsistent TLS Versions
- Error Message "connection established slowly"
- "Access denied" Displayed During Database Connection
- Failed to Connect to a Database Using mariadb-connector in SSL Mode
- Failed to Connect to a Database as User root
- Client Automatically Disconnected from a DB Instance
- Disconnection Occurs Every 45 Days Due to the istio-citadel Certificate Mechanism
-
SQL Issues
- Invalid TIMESTAMP Default Value during Table Creation
- Failed to Change the VARCHAR Length Due to the Index Length Limit
- Slow SQL Queries After a Large Amount of Data Is Deleted from a Large Table
- Error 1366 Reported When Data Containing Emojis Is Updated
- Slow Stored Procedure Execution Due to Inconsistent Collations
- ERROR [1412] Reported for a DB Instance
- Failed to Delete a Table with a Foreign Key
- Incorrect GROUP_CONCAT Results
- Error Message "Too many keys specified" Displayed When a Secondary Index Is Created
- DISTINCT and GROUP BY Optimization
- Equivalent Comparison Failures with Floating-Point Numbers
- A Large Number of SELECT Requests Routed to The Primary Instance After Database Proxy Is Enabled
- Tablespace Bloat
- ERROR 1396 Reported When a User Is Created
- Error Message Reported When alter table xxx discard/import tablespace Is Executed
- Native Error 1461 Reported by a DB Instance
- "Row size too large" Reported When a Table Failed to Be Created
- Duplicate Data Exists After ORDER BY LIMIT Is Executed
- Error Message Reported When select * from sys.innodb_lock_waits Is Executed
- Parameter-related Issues
-
Performance Issues
- High CPU Usage
- Out of Memory (OOM) Errors
- Tablespace Bloat
- Read Replica Uses Far More Storage Than the Primary Node
- Slow SQL Execution Due to Hot and Cold Data Problems
- Full Storage Caused by Complex Queries
- Slow Response Due to Deadlocks
- CPU Usage Increase
- CPU Resource Exhaustion Caused by Too Many Concurrent Slow Queries
-
Basic Issues
- How Do I View the Used Storage of My TaurusDB Instance?
- Renaming Databases and Tables
- Character Set and Collation Settings
- Auto-Increment Field Value Jump
- Starting Value and Increment of AUTO_INCREMENT
- Changing the AUTO_INCREMENT Value of a Table
- Failed to Insert Data Because Values for the Auto-increment Primary Key Field Reach the Upper Limit
- Auto-increment Field Values
- AUTO_INCREMENT Not Displayed in the Table Structure
- Impact of Creating an Empty Username
- No Scanned Rows Recorded in Slow Query Logs
- "handle_sync_msg_from_slave my_net_read error:-1" Displayed on the Error Logs Tab Page
- ERROR 1290 (HY000): The MySQL server is running with the --sql-replica-on option so it cannot execute this statement
-
Backup and Restoration Issues
- Videos
- General Reference
Show all
Copied.
Index Design
- Use the same field type to prevent implicit conversion from causing invalid indexes.
- Create unique indexes on all minimum sets of fields or combinations of fields with uniqueness.
For example, there is a table containing the fields a, b, c, d, e, and f. If the combinations of fields ab and ef have uniqueness, you are advised to create unique indexes for ab and ef, respectively.
NOTE:
Even if complete verification control is implemented at the application layer, dirty data is generated as long as there is no unique index according to Murphy's Law.
Before creating a unique index, consider whether it is helpful for queries. Useless indexes can be deleted.
Evaluate the impact of extra indexes on INSERT operations. Determine whether to create unique indexes based on the requirements for the correctness and performance of data with uniqueness.
- Create indexes on fixed-length fields (for example, INT). When creating an index on a VARCHAR field, the index length must be specified. It is not necessary to create an index on the whole field. The index length is determined according to the actual text distinction.
NOTE:
The index length and distinction are a pair of contradictions. Generally, for string type data, the distinction of an index with a length of 20 bytes will be higher than 90%. The distinction formula is COUNT(DISTINCT LEFT(Column_name, Index_length))/COUNT(*). Place the column names with a high distinction on the left.
- If possible, do not use left fuzzy search (for example, SELECT * FROM users WHERE u_name LIKE ' %hk') or full fuzzy search on the page to avoid degradation from index scan to full table scan. Solve the problem at the application layer.
NOTE:
An index file has the leftmost prefix matching feature of B-tree. If the value on the left is not determined, the index cannot be used.
- Use a covering index to query data and avoid returning to the table. However, do not add too many fields to the covering index, or the write performance will be compromised.
NOTE:
Types of indexes that can be created include primary key indexes, unique indexes, and normal indexes. A covering index indicates that if you execute EXPLAIN statements, "using index" will be displayed in the Extra column.
- Optimize the SQL performance as follows: range (minimum requirement), ref (basic requirement), and consts (maximum requirement).
- When creating a composite index, place the column with the highest distinction on the left.
- Ensure that the number of indexes in a single table is at most 5, or does not exceed 20% of the number of table fields.
- Avoid the following misunderstandings when creating indexes:
- Indexes should be frequently used. An index needs to be created for a query.
- Indexes should be as few as possible. Indexes consume space and slow down updates and insertions.
- Unique indexes cannot be used. Unique features must be resolved at the application layer using the "query first and then insert" method.
- Reduce the use of ORDER BY that cannot be used with indexes based on the actual service requirements. The statements such as ORDER BY, GROUP BY, and DISTINCT consume many CPU resources.
- If a complex SQL statement is involved, use the existing index design and add EXPLAIN before the SQL statement. EXPLAIN can help you optimize the index by adding some query restrictions.
- Execute new SELECT, UPDATE, or DELETE statements with EXPLAIN to check the index usage and ensure no Using filesort and Using temporary are displayed in the Extra column. If the number of scanned rows exceeds 1,000, exercise caution when executing these statements. Analyze slow query logs and delete unused slow query statements every day.
NOTE:
EXPLAIN:- type: ALL, index, range, ref, eq_ref, const, system, NULL (The performance is sorted from poor to good from left to right.)
- possible_keys: indicates the indexes from which MySQL can choose to find rows in this table. If there is an index on a field, the index is listed but may not be used by the query.
- key: indicates the key (index) that MySQL actually decided to use. If key is NULL, MySQL found no index to use for executing the query more efficiently. To force MySQL to use or ignore an index listed in the possible_keys column, use FORCE INDEX, USE INDEX, or IGNORE INDEX in your query.
- ref: shows which columns or constants are compared to the index named in the key column to select rows from the table.
- rows: indicates the estimated number of rows to be read for required records based on table statistics and index selection.
- Extra:
- Using temporary: To resolve the query, MySQL needs to create a temporary table to hold the result. This typically happens if the query contains GROUP BY and ORDER BY clauses that list columns differently.
- Using filesort: MySQL must do an extra pass to find out how to retrieve rows in sorted order.
- Using index: The column information is retrieved from the table using only information in the index tree without having to do an additional seek to read the actual row. If Using where is displayed at the same time, it indicates that desired information needs to be obtained by using the index tree and reading rows of the table.
- Using where: In WHERE clause, Using where is displayed when the desire data is obtained without reading all the data in the table or the desire data cannot be obtained by only using indexes. Unless you specifically intend to fetch or examine all rows from the table, you may have something wrong in your query if the Extra value is not Using where and the table join type is ALL or index.
- If a function is used on a WHERE statement, the index becomes invalid.
For example, in WHERE left(name, 5) = 'zhang', the left function invalidates the index on name.
You can modify the condition on the service side and delete the function. When the returned result set is small, the service side filters the rows that meet the condition.
- For ultra-large tables, you also need to comply with the following rules when using indexes:
- Create indexes for columns involved in the WHERE and ORDER BY statements. You can use EXPLAIN to check whether indexes or full table scans are used.
- Fields with sparse value distribution, such as gender with only two or three values, cannot be indexed.
- Do not use string fields as primary keys.
- Do not use foreign keys. Programs can enforce the constraints.
- When using multi-column indexes, arrange them in the same order as the query conditions and remove unnecessary single-column indexes (if any).
- Before removing an index, conduct a thorough analysis and back up the data.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot