- What's New
- Function Overview
-
Product Bulletin
- Vulnerability Notice
-
Product Notices
- [Notice] Starting OBT for DDS Cluster 5.0 on Nov 5, 2024
- [Notice] Huawei Cloud DDS Replica Set 5.0 Will Be Released Commercially on Oct 11, 2024
- [Notice] Huawei Cloud DDS 3.4 Will Be Discontinued on Oct 11, 2024
- [Notice] Starting OBT for DDS 5.0 on July 24, 2024
- [Notice] Specifications with CPU-Memory Ratio of 1:8 Will Be Available for x86-Powered Enhanced II Replica Set Instances and Cluster Shards on February 15, 2023
- [Notice] DDS 4.4 OBT Invitation
- [Product Discontinuation Notice] Huawei Cloud Document Database Service (DDS) Single Node Instances Will Be Discontinued on July 15, 2023
- [Notice] Huawei Cloud DDS 4.4 Will Be Released Commercially on Oct 08, 2023
- Version Description
- Product Release Notes
-
Service Overview
- Infographics
- What Is DDS?
- Advantages
- Comparison Between DDS and On-Premises Databases
- Typical Application Scenarios
- Functions and Features
- System Architecture
- Instances
- Notes and Constraints
- Basic Concepts
- Compatibility
- Security
- Permissions
- Related Services
- Mapping Between DDS Versions and Community Versions
- Billing
- Getting Started
-
User Guide
- Buying an Instance
-
Connecting to a DB Instance
- Connecting to a Cluster Instance
- Connecting to a Replica Set Instance
- Connecting to a Single Node Instance
- Data Migration
- Performance Tuning
- Permissions Management
- Instance Lifecycle Management
-
Instance Modifications
- Changing an Instance Name
- Changing an Instance Description
- Modifying an Instance Tag
- Changing the Name of the Replica Set in the Connection Address
- Upgrading a Minor Engine Version
- Upgrading a Major Engine Version
- Scaling Up Storage Space
- Changing an Instance Class
- Changing Cluster Instance Nodes
- Changing Replica Set Instance Nodes
- Configuring the Maintenance Window
- Changing an AZ
- Updating the OS of a DB Instance
-
Data Backups
- Backup Principles and Solutions
- Configuring an Automated Backup Policy
- Configuring an Incremental Backup Policy
- Configuring the Cross-Region Backup Policy
- Setting Backup Method for a DB Instance
- Creating a Manual Backup
- Deleting a Manual Backup
- Deleting an Automated Backup
- Stopping a Backup
- Downloading a Backup File
-
Data Restorations
- Solutions
- Restoring Data to a New Instance
- Restoring Data to the Original Instance
- Restoring Data to a Point in Time
- Restoring Data to an On-Premises Database
- Restoring Data of Enhanced Edition
-
Parameter Template Management
- Overview
- Creating a Parameter Template
- Modifying DDS DB Instance Parameters
- Viewing Parameter Change History
- Exporting a Parameter Template
- Comparing Parameter Templates
- Replicating a Parameter Template
- Resetting a Parameter Template
- Applying a Parameter Template
- Viewing Application Records of a Parameter Template
- Modifying the Description of a Parameter Template
- Deleting a Parameter Template
- Connection Management
- Database Usage
- Data Security
- Monitoring and Alarm Reporting
- Auditing
- Logs
- Task Center
- DBA Assistant
- SQL Execution Control
- Cross-AZ Disaster Recovery
- Tags
- Quotas
- DDS Usage Suggestions
- Developer Guide
-
Best Practices
- Overview
- Security Best Practices
- Common Methods for Connecting to a DDS Instance
- From Other Cloud MongoDB to DDS
- From On-Premises MongoDB to DDS
- From ECS-hosted MongoDB to DDS
- How Do Replica Sets Achieve High Availability and Read/Write Splitting?
- Sharding
- How Do I Improve DDS Performance by Optimizing SQL Statements?
- How Do I Prevent the dds mongos Cache Problem?
- How Do I Solve the High CPU Usage Issue?
- How Do I Troubleshoot High Memory Usage of DDS DB Instances?
- What Can I Do If the Number of Connections of an Instance Reaches Its Maximum?
- Creating a User and Granting the Read-Only Permission to the User
- Proper Use of Data Definition Languages (DDL) Statements
- How Is a DDS Node Going to Be Disconnected and What Can I Do?
- Security White Paper
- Performance White Paper
-
API Reference
- Before You Start
- API Overview
- Calling APIs
- Getting Started
-
APIs V3.0 (Recommended)
- Querying the API Version
- Querying Database Version Information
- Querying Database Specifications
- Querying the Database Disk Type
-
DB Instance Management
- Creating a DB Instance
- Restarting a DB Instance
- Deleting a DB Instance
- Querying Instances and Details
- Scaling Up Storage Space
- Adding Nodes for a Cluster Instance
- Modifying DB Instance Specifications
- Performing a Primary/Secondary Switchover in a Replica Set Instance
- Enabling or Disabling SSL
- Modifying a DB Instance Name
- Changing an Instance Description
- Changing a Database Port
- Changing a Security Group
- Binding an EIP
- Unbinding an EIP
- Changing a Private IP Address
- Creating Shard or Config IP Addresses of a Cluster Instance
- Configuring Cross-CIDR Access for a Replica Set
- Querying AZs to Which an Instance Can Be Migrated
- Migrating a DB Instance to Another AZ
- Setting the Recycle Bin Policy
- Adding Nodes to a Replica Set Instance
- Adding a Read Replica to an Instance
- Upgrading the Database Patch
- Enabling or Disabling Monitoring by Seconds
- Querying Second-Level Monitoring Configurations
- Configuring the Maintenance Window
- Querying the Recycling Policy of a DB Instance
- Querying DB Instances in the Recycle Bin
- Checking for Weak Passwords
- Querying the Estimated Database Patch Upgrade Duration
- Querying Instance Disk Information
- Obtaining the SSL Certificate Download Address
- Querying the Name of the Replica Set in the Connection Address
- Changing the Name of the Replica Set in the Connection Address
- Deleting Instance Nodes
- Deleting a Read Replica of an Instance
- Querying Access Across CIDR Blocks for a Replica Set Instance
- Querying LTS Log Configurations
- Associating an Instance with an LTS Log Stream
- Disassociating an Instance from an LTS Log Stream
- Configuring an Autoscaling Policy for Storage Space
- Querying the Autoscaling Policy of Storage Space
- Upgrading the Minor Versions of DB Instances in Batches
- Connection Management
-
Backup and Restoration
- Creating a Manual Backup
- Deleting a Manual Backup
- Querying the Backup List
- Querying an Automated Backup Policy
- Setting an Automated Backup Policy
- Restoring Data to a New DB Instance
- Obtaining the Link for Downloading a Backup File
- Querying the Restoration Time Ranges
- Obtaining the List of Databases That Can Be Restored
- Obtaining the List of Database Collections That Can Be Restored
- Restoring Data to the Original DB Instance
- Restoring Databases and Tables to a Point in Time
- Stopping a Backup
- Deleting Manual Backups in Batches
-
Parameter Configuration
- Obtaining Parameter Templates
- Creating a Parameter Template
- Deleting a Parameter Template
- Obtaining Details About a Parameter Template
- Modifying a Parameter Template
- Applying a Parameter Template
- Obtaining Parameters of a Specified DB Instance
- Modifying Parameters of a Specified DB Instance
- Querying Available DB Instances
- Viewing Application Records of a Parameter Template
- Viewing Parameter Change History
- Comparing Parameter Templates
- Replicating a Parameter Template
- Resetting a Parameter Template
- Checking Whether a Parameter Template Name Is Unique
- Viewing Parameter Change History of an Instance
-
Log Information Queries
- Querying Database Slow Logs (New)
- Obtaining Links for Downloading Slow Query Logs
- Showing Original Slow Logs
- Querying Database Error Logs (New)
- Obtaining Links for Downloading Error Logs
- Configuring SQL Audit
- Querying SQL Audit Policy
- Obtaining the Audit Log List
- Obtaining Links for Downloading Audit Logs
- Querying the Switch of Show Original Log
- Deleting Audit Logs
- Tag Management
-
Managing Databases and Users
- Creating a Database User
- Creating a Database Role
- Querying Details About Database Users
- Querying the Database Role List
- Changing the Password of a Database User
- Checking the Password for Logging In to a Database
- Querying Cluster Balancing Settings
- Enabling or Disabling Cluster Balancing
- Setting the Activity Time Window for Cluster Balancing
- Deleting a Database User
- Deleting a Database Role
- Querying Databases
- Quota Management
- Database O&M
- Task Management
- API V3 (Unavailable Soon)
- Examples
- Permissions Policies and Supported Actions
- Appendix
- SDK Reference
-
FAQs
-
Product Consulting
- What Is the Relationship Between DDS and MongoDB Community Edition?
- Q&A About Switching Storage Engine to RocksDB for DDS 4.2 and Later Versions
- What Are the Differences Between DDS and GeminiDB Mongo?
- What Precautions Should Be Taken When Using DDS?
- What Is the Availability of DDS DB Instances?
- Will My DDS DB Instances Be Affected by Other Users' DDS DB Instances?
- Does DDS Support Multi-AZ Deployment?
- Can I Change the VPC for a Created Instance?
- Can I Change the Region for a Created Instance?
- What Is Hidden Node?
- Database Versions
- Resource Freezing, Release, Deletion, and Unsubscription
-
Resource and Disk Management
- Which Items Occupy the Storage Space of DDS Instances?
- Which Types of Logs and Files Occupy DDS DB Instance Storage Space?
- Why Is the Storage Space Usage Displayed on the GUI Smaller Than the Actual Usage?
- Why Does Available Disk Space Not Increase After Data Is Deleted?
- Why Is the Resident Memory of a 4 vCPUs/8 GB Memory Replica Set Instance Only 4 GB?
- Capacity Expansion and Specification Changes
-
Database Performance
- When Will a Primary/Standby Switchover Be Triggered for a Cluster or Replica Set?
- High Storage Usage
- What Is the Time Delay for Primary/Secondary Synchronization in a Replica Set?
- How Is Data Transferred Between the Primary and Secondary Nodes of a Replica Set?
- How Do I Clear an Alarm Saying the Shard Memory Usage Exceeds 90%?
- What Can I Do If a Query Error Is Reported After Data Is Written Into the DDS Cluster?
- Database Permissions
-
Creation and Deletion
- How Do I Select Instance Specifications and Nodes?
- Why Is an Instance Not Displayed on the Console After It Is Created?
- Can I Use a Template to Create DDS DB Instances?
- Why Is Data Missing from My Database?
- Will My Backups Be Deleted If I Delete My Cloud Account?
- What Are the Differences Between Instance Deletion and Unsubscription?
-
Database Connection
- What Should I Do If I Fail to Connect to a DDS Instance?
- What Can I Do If the Number of Connections of an Instance Reaches Its Maximum?
- How Do I Query and Limit the Number of Connections?
- What Should I Do If the ECS and DDS Are Deployed in Different VPCs and They Cannot Communicate with Each Other?
- Do Applications Need to Support Automatic Reconnecting to the DDS Database?
- How Do I Create and Log In to an ECS?
- Installing a Client
- Database Usage
- Database Migration
- Database Storage
- Database Parameters
- Backup and Restoration
- Network Security
- Monitoring and Alarm
-
Product Consulting
-
Troubleshooting
- Overview
- DDS Instance Node Fault Handling Mechanism
- Connection Failure Message: network error while attempting to run command 'isMaster'
- Connection Failure Messages: No route to host and connection attempt failed
- Connection Failure Message: Authentication failed
- Connection Failure Message: couldn't connect to server
- Connection Failure Message: cannot list multiple servers in URL without 'replicaSet' option
- Connection Failure Message: Timeout while receiving message
- Connection Failure Message: exception: login failed and U_STRINGPREP_PROHIBITED_ERROR
- Change History
- Videos
- Glossary
-
More Documents
-
User Guide (ME-Abu Dhabi Region)
- Introduction
- Logging In to the DDS Console
- Getting Started with Clusters
- Getting Started with Replica Sets
- Connection Management
- Migrating Data
- Account Management
-
Instance Management
- Changing a DB Instance Name
- Adding Cluster Instance Nodes
- Reverting Cluster Instance Nodes
- Scaling Up Storage Space
- Changing the CPU or Memory of a Cluster DB Instance
- Changing the CPU or Memory of a Replica Set DB Instance
- Manually Switching the Primary and Secondary Nodes of a Replica Set
- Exporting DB Instance Information
- Restarting a DB Instance or a Node
- Deleting a DB Instance
- Recycling a DB Instance
- Backup and Restore
- Parameter Group Settings
- Task Center
- Monitoring and Alarm Reporting
- Auditing
- Log Management
- Tag
-
FAQs
- Product Consulting
- Database Performance
- Creation and Deletion
-
Database Connection
- Can an External Server Access the DDS DB Instance?
- What Is the Number of DDS Database Connections?
- What Should I Do If an ECS Cannot Connect to a DDS DB Instance?
- What Should I Do If a Database Client Problem Causes a Connection Failure?
- What Should I Do If a DDS Server Problem Causes a Connection Failure?
- How Can My Applications Access a DDS DB Instance in a VPC?
- Do Applications Need to Support Automatic Reconnecting to the DDS Database?
- How Do I Create and Log In to an ECS?
- How Can I Install a MongoDB Client?
- How Do I Install Robo 3T?
- Database Usage
- Database Storage
- Database Parameter Modification
- Backup and Restoration
- Network Security
- Resource Monitoring
- Log Management
- Which Commands are Supported or Restricted by DDS?
- Change History
-
API Reference (ME-Abu Dhabi Region)
- Before You Start
- API Overview
- Calling APIs
- Getting Started
-
API Description
- Querying the API Version
- Querying Database Version Information
- Querying All DB Instance Specifications
-
DB Instance Management
- Creating a DB Instance
- Restarting a DB Instance
- Deleting a DB Instance
- Querying DB Instances
- Scaling Up Storage Space
- Adding Nodes for a Cluster Instance
- Modifying DB Instance Specifications
- Performing a Primary/Secondary Switchover in a Replica Set Instance
- Enabling or Disabling SSL
- Modifying a DB Instance Name
- Changing a Database Port
- Changing a Security Group
- Binding an EIP
- Unbinding an EIP
- Changing a Private IP Address
- Backup and Restoration
- Tag Management
- Permissions Policies and Supported Actions
- Appendix
- Change History
-
User Guide (Paris Region)
- Introduction
- Logging In to the DDS Console
- Getting Started with Clusters
- Getting Started with Replica Sets
- Connection Management
- Migrating Data
- Account Management
-
Instance Management
- Changing a DB Instance Name
- Adding Cluster Instance Nodes
- Reverting Cluster Instance Nodes
- Scaling Up Storage Space
- Changing the CPU or Memory of a Cluster DB Instance
- Changing the CPU or Memory of a Replica Set DB Instance
- Manually Switching the Primary and Secondary Nodes of a Replica Set
- Exporting DB Instance Information
- Restarting a DB Instance or a Node
- Deleting a DB Instance
- Backup and Restore
- Parameter Group Settings
- Task Center
- Monitoring and Alarm Reporting
- Auditing
- Log Management
- Tag
-
FAQs
- Product Consulting
- Database Performance
- Creation and Deletion
-
Database Connection
- Can an External Server Access the DDS DB Instance?
- What Is the Number of DDS Database Connections?
- What Should I Do If an ECS Cannot Connect to a DDS DB Instance?
- What Should I Do If a Database Client Problem Causes a Connection Failure?
- What Should I Do If a DDS Server Problem Causes a Connection Failure?
- How Can My Applications Access a DDS DB Instance in a VPC?
- Do Applications Need to Support Automatic Reconnecting to the DDS Database?
- How Do I Create and Log In to an ECS?
- How Can I Install a MongoDB Client?
- How Do I Install Robo 3T?
- Database Usage
- Database Storage
- Database Parameter Modification
- Backup and Restoration
- Network Security
- Log Management
- Which Commands are Supported or Restricted by DDS?
- Change History
-
API Reference (Paris Region)
- Before You Start
- API Overview
- Calling APIs
- Getting Started
-
API Description
- Querying the API Version
- Querying Database Version Information
- Querying All DB Instance Specifications
-
DB Instance Management
- Creating a DB Instance
- Restarting a DB Instance
- Deleting a DB Instance
- Querying DB Instances
- Scaling Up Storage Space
- Adding Nodes for a Cluster Instance
- Modifying DB Instance Specifications
- Performing a Primary/Secondary Switchover in a Replica Set Instance
- Enabling or Disabling SSL
- Modifying a DB Instance Name
- Changing a Database Port
- Changing a Security Group
- Binding an EIP
- Unbinding an EIP
- Changing a Private IP Address
- Backup and Restoration
- Appendix
- Change History
-
User Guide (Kuala Lumpur Region)
- Introduction
- Logging In to the DDS Console
- Getting Started with Clusters
- Getting Started with Replica Sets
- Connection Management
- Migrating Data
- Account Management
-
Instance Management
- Changing a DB Instance Name
- Adding Cluster Instance Nodes
- Reverting Cluster Instance Nodes
- Scaling Up Storage Space
- Changing the CPU or Memory of a Cluster DB Instance
- Changing the CPU or Memory of a Replica Set DB Instance
- Manually Switching the Primary and Secondary Nodes of a Replica Set
- Exporting DB Instance Information
- Restarting a DB Instance or a Node
- Deleting a DB Instance
- Recycling a DB Instance
- Backup and Restore
- Parameter Group Settings
- Task Center
- Monitoring and Alarm Reporting
- Auditing
- Log Management
- Tag
-
FAQs
- Product Consulting
- Database Performance
- Creation and Deletion
-
Database Connection
- Can an External Server Access the DDS DB Instance?
- What Is the Number of DDS Database Connections?
- What Should I Do If an ECS Cannot Connect to a DDS DB Instance?
- What Should I Do If a Database Client Problem Causes a Connection Failure?
- What Should I Do If a DDS Server Problem Causes a Connection Failure?
- How Can My Applications Access a DDS DB Instance in a VPC?
- Do Applications Need to Support Automatic Reconnecting to the DDS Database?
- How Do I Create and Log In to an ECS?
- How Can I Install a MongoDB Client?
- How Do I Install Robo 3T?
- Database Usage
- Database Storage
- Database Parameter Modification
- Backup and Restoration
- Network Security
- Resource Monitoring
- Log Management
- Which Commands are Supported or Restricted by DDS?
- Change History
-
API Reference (Kuala Lumpur Region)
- Before You Start
- API Overview
- Calling APIs
- Getting Started
-
API Description
- Querying the API Version
- Querying Database Version Information
- Querying All DB Instance Specifications
-
DB Instance Management
- Creating a DB Instance
- Restarting a DB Instance
- Deleting a DB Instance
- Querying DB Instances
- Scaling Up Storage Space
- Adding Nodes for a Cluster Instance
- Modifying DB Instance Specifications
- Performing a Primary/Secondary Switchover in a Replica Set Instance
- Enabling or Disabling SSL
- Changing the Administrator Password
- Modifying a DB Instance Name
- Changing a Database Port
- Changing a Security Group
- Binding an EIP
- Unbinding an EIP
- Changing a Private IP Address
- Backup and Restoration
- Tag Management
- Permissions Policies and Supported Actions
- Appendix
- Change History
-
User Guide (ME-Abu Dhabi Region)
- General Reference
Copied.
How Do I Solve the High CPU Usage Issue?
If the CPU usage is high or close to 100% when you use DDS, data read and write will slow down, affecting your services.
The following describes how to analyze current slow queries. After the analysis and optimization, queries will be processed better and indexes will be used more efficiently.
Analyzing Current Queries
- Connect to an instance using Mongo Shell.
To access an instance from the Internet
For details, seeTo access an instance that is not publicly accessible
- Run the following command to view the operations being performed on the database:
Command output:
{ "raw" : { "shard0001" : { "inprog" : [ { "desc" : "StatisticsCollector", "threadId" : "140323686905600", "active" : true, "opid" : 9037713, "op" : "none", "ns" : "", "query" : { }, "numYields" : 0, "locks" : { }, "waitingForLock" : false, "lockStats" : { } }, { "desc" : "conn2607", "threadId" : "140323415066368", "connectionId" : 2607, "client" : "172.16.36.87:37804", "appName" : "MongoDB Shell", "active" : true, "opid" : 9039588, "secs_running" : 0, "microsecs_running" : NumberLong(63), "op" : "command", "ns" : "admin.", "query" : { "currentOp" : 1 }, "numYields" : 0, "locks" : { }, "waitingForLock" : false, "lockStats" : { } } ], "ok" : 1 }, ... }
NOTE:
- client: IP address of the client that sends the request
- opid: unique operation ID
- secs_running: elapsed time for execution, in seconds. If the returned value of this field is too large, check whether the request is reasonable.
- microsecs_running: elapsed time for execution, in microseconds. If the returned value of this field is too large, check whether there is something wrong with the request.
- op: operation type. The operations can be query, insert, update, delete, or command.
- ns: target collection
- For details, see the db.currentOp() command in official document.
- Based on the command output, check whether there are requests that take a long time to process.
If the CPU usage is low while services are being processed but then becomes high during just certain operations, analyze the requests that take a long time to execute.
If an abnormal query is found, find the opid corresponding to the operation and run db.killOp(opid) to kill it.
Analyzing Slow Queries
Slow query profiling is enabled for DDS by default. The system automatically records any queries whose execution takes longer than 100 ms to the system.profile collection in the corresponding database. You can:
- Connect to an instance using Mongo Shell.
To access an instance from the Internet
For details, seeTo access an instance that is not publicly accessible
- Select a specific database (using the test database as an example):
use test
- Check whether slow SQL queries have been collected in system.profile.
show collections;
- If the command output includes system.profile, slow SQL queries have been generated. Go to the next step.
mongos> show collections system.profile test
- If the command output does not contain system.profile, no slow SQL queries have been generated, and slow query analysis is not required.
mongos> show collections test
- If the command output includes system.profile, slow SQL queries have been generated. Go to the next step.
- Check the slow query logs in the database.
- Analyze slow query logs to find the cause of the high CPU usage.
The following is an example of a slow query log. The log shows a request that scanned the entire table, including 1,561,632 documents and without using a search index.
{ "op" : "query", "ns" : "taiyiDatabase.taiyiTables$10002e", "query" : { "find" : "taiyiTables", "filter" : { "filed19" : NumberLong("852605039766") }, "shardVersion" : [ Timestamp(1, 1048673), ObjectId("5da43185267ad9c374a72fd5") ], "chunkId" : "10002e" }, "keysExamined" : 0, "docsExamined" : 1561632, "cursorExhausted" : true, "numYield" : 12335, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(24672) } }, "Database" : { "acquireCount" : { "r" : NumberLong(12336) } }, "Collection" : { "acquireCount" : { "r" : NumberLong(12336) } } }, "nreturned" : 0, "responseLength" : 157, "protocol" : "op_command", "millis" : 44480, "planSummary" : "COLLSCAN", "execStats" : { "stage" : "SHARDING_FILTER", [3/1955] "nReturned" : 0, "executionTimeMillisEstimate" : 43701, "works" : 1561634, "advanced" : 0, "needTime" : 1561633, "needYield" : 0, "saveState" : 12335, "restoreState" : 12335, "isEOF" : 1, "invalidates" : 0, "chunkSkips" : 0, "inputStage" : { "stage" : "COLLSCAN", "filter" : { "filed19" : { "$eq" : NumberLong("852605039766") } }, "nReturned" : 0, "executionTimeMillisEstimate" : 43590, "works" : 1561634, "advanced" : 0, "needTime" : 1561633, "needYield" : 0, "saveState" : 12335, "restoreState" : 12335, "isEOF" : 1, "invalidates" : 0, "direction" : "forward", "docsExamined" : 1561632 } }, "ts" : ISODate("2019-10-14T10:49:52.780Z"), "client" : "172.16.36.87", "appName" : "MongoDB Shell", "allUsers" : [ { "user" : "__system", "db" : "local" } ], "user" : "__system@local" }
The following stages can be causes for a slow query:
- COLLSCAN involves a full collection (full table) scan.
When a request (such as query, update, and delete) requires a full table scan, a large amount of CPU resources are occupied. If you find COLLSCAN in the slow query log, CPU resources may be occupied.
If such requests are frequent, create indexes for the fields to be queried.
- docsExamined involves a full collection (full table) scan.
You can view the value of docsExamined to check the number of documents scanned. A larger value indicates a higher CPU usage.
- IXSCAN and keysExamined scan indexes.
NOTE:
An excessive number of indexes can affect the write and update performance.
If your application has more write operations, creating indexes may increase write latency.
You can view the value of keyExamined to see how many indexes are scanned in a query. A larger value indicates a higher CPU usage.
If the index is not appropriate or there are many matching results, the CPU usage may spike and the execution can slow down.
Example: For the data of a collection, the number of values of the a field is small (only 1 and 2), but the b field has more values.
{ a: 1, b: 1 } { a: 1, b: 2 } { a: 1, b: 3 } ...... { a: 1, b: 100000} { a: 2, b: 1 } { a: 2, b: 2 } { a: 2, b: 3 } ...... { a: 1, y: 100000}
The following shows how to implement the {a: 1, b: 2} query.
db.createIndex({a: 1}): The query is not effective because the a field has too many same values.
db.createIndex({a: 1, b: 1}): The query is not effective because the a field has too many same values.
db.createIndex({b: 1}): The query is effective because the b field has a few same values.
db.createIndex({b: 1, a: 1}): The query is effective because the b field has a few same values.
For the differences between {a: 1} and {b: 1, a: 1}, see the official documents.
- SORT and hasSortStage may involve sorting a large amount of data.
If the value of hasSortStage in the system.profile collection is true, the query request involves sorting. If the sorting cannot be implemented through indexes, the query results are sorted, and sorting is a CPU intensive operation. In this scenario, you need to create indexes for fields that are frequently sorted.
If the system.profile collection contains SORT, you can use indexing to improve sorting speed.
Other operations, such as index creation and aggregation (combinations of traversal, query, update, and sorting), also apply to the preceding scenarios because they are also CPU intensive operations. For more information about profiling, see official documents.
- COLLSCAN involves a full collection (full table) scan.
Analysis Capability
- View monitoring information to analyze instance resource usage. For details, see Viewing Monitoring Metrics.
- Change the DDS instance class or add shard nodes.
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