Nome do produto
OceanBase V4.2.5 - Versão da comunidade
Descrição do problema
cluster de implantação obd:
três máquinas 1-1-1, 16c64G, limite de memória=32G
Importar arquivo csv, 100 milhões de dados, 100 partições por campo de tempo, nenhuma chave primária definida
Eu uso este método para importar dados:
load data/ + parallel(9) load_batch_size(18) /
O resultado é muito demorado
Como lidar com isso para importar rapidamente 100 milhões de dados?
Configurações de locatário integradas ao sistema:
alter system set system_memory=‘15g’;
alter resource unit sys_unit_config max_memory=‘15g’,min_memory=‘15g’;
#Tuning Parameters
alter system set enable_merge_by_turn= False;
alter system set trace_log_slow_query_watermark=‘100s’;
alter system set max_kept_major_version_number=1;
alter system set enable_sql_operator_dump=True;
alter system set _hash_area_size=‘3g’;
alter system set memstore_limit_percentage=50;
alter system set enable_rebalance=False;
alter system set memory_chunk_cache_size=‘1g’;
alter system set minor_freeze_times=5;
alter system set merge_thread_count=20;
alter system set cache_wash_threshold=‘30g’;
alter system set _ob_enable_prepared_statement=true;
##Adjust the log level and number of saved logs
alter system set syslog_level=‘PERF’;
alter system set max_syslog_file_count=100;
alter system set enable_syslog_recycle=‘True’;
Personalize as configurações do locatário:
CREATE RESOURCE UNIT unit1 max_cpu = 9,max_memory = 3006477108,min_memory = 3006477108, max_iops = 10000,min_iops = 1280,max_session_num = 3000,max_disk_size = 214748364800 – 200 GB;
set global NLS_DATE_FORMAT=‘YYYY-MM-DD HH24:MI:SS’;
set global NLS_TIMESTAMP_FORMAT=‘YYYY-MM-DD HH24:MI:SS.FF’;
set global NLS_TIMESTAMP_TZ_FORMAT=‘YYYY-MM-DD HH24:MI:SS.FF TZR TZD’;
set global ob_sql_work_area_percentage=80;
set global optimizer_use_sql_plan_baselines = true;
set global optimizer_capture_sql_plan_baselines = true;
alter system set ob_enable_batched_multi_statement=‘true’;
##Set under the tenant to prevent transaction timeout
show variables like ‘%timeout%’;
set global ob_query_timeout=72000000000;
set global ob_trx_timeout=72000000000;
set global max_allowed_packet=67108864;
#Execute load data permission
set global secure_file_priv=’’;
grant file on *.* to sqluser01;
Modifique os seguintes parâmetros em root@sys e tente novamente o processo de "carregar dados".
alter system set net_thread_count = 32; -- O número de threads de rede do Libeasy foi aumentado para 32 na esperança de aumentar a taxa de transferência da rede do Libeasy.
ALTERAR SISTEMA SET enable_sql_audit=false;
alter system set merge_thread_count = 32; -- Aumenta o número de threads de mesclagem.
alter system set minor_merge_concurrency = 32; -- Aumenta o número de threads de despejo para aumentar a velocidade do despejo.
alterar sistema definir memory_limit_percentage = 90; -- A proporção de OB para a memória total do sistema aumenta a quantidade de memória disponível para OB.
alter system set memstore_limit_percentage = 70; -- A proporção de memória do memstore para a memória do locatário. Tente aumentar o espaço do memstore (retorne para 50 ou 60 após a importação dos dados).
alter system set freeze_trigger_percentage = 50; -- Inicie o congelamento principal/secundário no momento certo, para que o despejo (congelamento secundário) possa ser iniciado o mais cedo possível e a memória memstore possa ser liberada o mais cedo possível.
alter system set minor_freeze_times = 100; -- O número de congelamentos menores, tente não acionar congelamentos maiores durante os testes.
alterar sistema definir minor_warm_up_duration_time = 0; -- Acelerar congelamento menor
alter system set sys_bkgd_io_high_percentage=100; -- Ajuste o valor padrão de 90 para 100 para aumentar o limite superior do uso de IO de despejo.
alterar sistema definido sys_bkgd_io_low_percentage=100; -- Aumenta o limite de uso de E/S do dump do valor padrão de 0 para 100