Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Computação
Elastic Cloud Server
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Redes
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Gerenciamento e governança
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
Cloud Operations Center
Resource Governance Center
Migração
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Análises
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
IoT
IoT Device Access
Outros
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Segurança e conformidade
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Anti-DDoS Service
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Situation Awareness
Managed Threat Detection
Blockchain
Blockchain Service
Serviços de mídia
Media Processing Center
Video On Demand
Live
SparkRTC
Armazenamento
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Cloud Server Backup Service
Storage Disaster Recovery Service
Scalable File Service
Volume Backup Service
Data Express Service
Dedicated Distributed Storage Service
Containers
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Bancos de dados
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Aplicações de negócios
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Data Lake Factory
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Distribuição de conteúdo e computação de borda
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Soluções
SAP Cloud
High Performance Computing
Serviços para desenvolvedore
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
Cloud Application Engine
MacroVerse aPaaS
KooPhone
KooDrive
Central de ajuda/ GaussDB(DWS)/ Perguntas frequentes/ Desempenho do banco de dados/ O que é derramamento de operador no GaussDB(DWS)?

O que é derramamento de operador no GaussDB(DWS)?

Atualizado em 2024-05-09 GMT+08:00

Durante a execução da consulta, se a memória do cluster for insuficiente, o banco de dados optará por armazenar os resultados temporários no disco. Quando o armazenamento em disco usado pelos resultados temporários exceder um determinado valor, os usuários receberão um alarme: "data spilling exceeds the threshold". O que significa derramamento?

Derramamento de operador para discos

Qualquer computação consome espaço de memória. Se muita memória for consumida, a memória para executar outros trabalhos será insuficiente, causando a execução instável do trabalho. Portanto, você precisa limitar o uso de memória de instruções de consulta para garantir a estabilidade da execução do trabalho.

Se uma tarefa em execução exigir 500 MB de memória, mas apenas 300 MB de memória forem alocados a ela, os dados que não forem usados temporariamente precisarão ser gravados em discos e apenas os dados que estiverem sendo usados serão retidos na memória. Isso é chamado de derramamento de dados. Também é chamado de derramamento de operador. O grande tamanho dos dados derramados para o disco pode causar 100% de uso do disco. Se isso acontecer, o banco de dados se transformará em somente leitura e o desempenho da consulta será muito afetado. Portanto, o GaussDB(DWS) impõe um limite ao derramamento do operador. Se o derramamento do operador exceder o limite, um erro é relatado e a consulta é encerrada.

Quais operadores podem derramar?

Os operadores que podem derramar para o disco incluem Hash(VecHashJoin), Agg(VecAgg), Sort(VecSort), Material(VecMaterial), SetOp(VecSetOp) e WindowAgg(VecWindowAgg). Eles podem ser vetorizados ou não vetorizados.

Quais parâmetros podem ser usados para controlar o derramamento do operador?

  • work_mem: define limite de derramamento. O uso do disco que exceda esse parâmetro causará o derramamento do operador. Este parâmetro tem efeito somente quando a memória não é autoadaptativa. (enable_dynamic_workload=off). Ele garante a taxa de transferência simultânea e o desempenho de uma única tarefa de consulta. Portanto, você precisa otimizar o parâmetro com base na saída de Explain Performance.
  • temp_file_limit: limita o tamanho dos arquivos derramados em discos. É aconselhável definir esse parâmetro com base nos requisitos do site para evitar que os arquivos derramados usem o espaço em disco. Arquivos derramados que excedam o valor deste parâmetro causarão um erro.

Como saber se uma instrução é derramada para discos?

  • Verifique os arquivos de derramamento. Os arquivos de derramamento são armazenados no diretório base/pgsql_tmp do diretório da instância. Os arquivos de derramamento são nomeados pgsql_tmp$queryid_$pid. Você pode determinar qual instrução SQL é derramada para o disco com base na queryid.
  • Verifique a exibição de espera (pgxc_thread_wait_status). Se write file for exibido no modo de exibição de espera, há resultados temporários derramados em discos.
  • Verifique o plano de execução (EXPLAIN PERFORMANCE). Palavras-chave como spill, written disk e temp file num indicam que há um derramamento de operador.
  • Verifique se a coluna spill_info em TopSQL em tempo real ou TopSQL histórica contém informações de derramamento. Se essa coluna não estiver vazia, os dados foram derramados para discos em DNs. (Pré-requisito: a função topsql foi habilitada.)

Como evitar o derramamento?

Quando os operadores são derramados em discos, os dados de cálculo do operador são gravados em discos. Em comparação com o acesso à memória, as operações de disco são lentas, causando deterioração do desempenho e deterioração do tempo de resposta da consulta. Portanto, tente evitar o derramamento do operador durante a execução da consulta. É recomendável usar os seguintes métodos:

  • Reduzir o conjunto de resultados intermediários: se o conjunto de resultados intermediários for muito grande, você poderá adicionar critérios de filtro para reduzir o tamanho do conjunto de resultados intermediários.
  • Evitar distorção de dados: se houver uma distorção grave de dados, o derramamento ocorrerá em um DN que tenha uma grande quantidade de dados.
  • Realizar a ANALYZE em tempo hábil: quando as estatísticas são imprecisas, o número de linhas pode ser estimado como menor. Como resultado, o plano não é ideal e os dados são derramados para os discos.
  • Realizar otimização de ponto único: realize otimização em instruções SQL únicas.
  • Se a memória não for autoadaptativa e o conjunto de resultados intermediários não puder ser reduzido, aumente o valor de work_mem como apropriado.
  • Se a memória for autoadaptativa, aumente a memória disponível do banco de dados o máximo possível para reduzir a probabilidade de derramamento de dados.

Usamos cookies para aprimorar nosso site e sua experiência. Ao continuar a navegar em nosso site, você aceita nossa política de cookies. Saiba mais

Feedback

Feedback

Feedback

0/500

Conteúdo selecionado

Envie o conteúdo selecionado com o feedback