产品名称
OceanBase V4.2.5-社区版本
问题描述
obd部署集群:
三台机器1-1-1,16c64G,memory_limit=32G
导入csv文件,1亿条数据,按时间字段分区100个,未设置主键
我使用这种方法导入数据:
load data/ +parallel(9)load_batch_size(18) /
结果非常耗时
如何处理才能快速导入一亿条数据?
系统内置租户设置:
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’;
自定义租户设置:
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;
修改root@sys下的以下参数,然后重试“加载数据”过程。
alter system set net_thread_count = 32; --Libeasy网络线程数增加到32个,希望提高Libeasy的网络吞吐量。
更改系统设置 enable_sql_audit=false;
alter system set merge_thread_count = 32; --增加合并线程的数量。
alter system set minor_merge_concurrency = 32; --增加dump线程数,提高dump速度。
alter system set memory_limit_percentage = 90; --OB占系统总内存的比例,增加OB可用的内存量。
alter system set memstore_limit_percentage = 70; -- memstore 占租户内存的比例,尝试增加 memstore 空间(数据导入完成后改回 50 或者 60)。
alter system set free_trigger_percentage = 50; -- 在合适的时间启动major/minor冻结,这样可以尽早开始dump(minor冻结),尽早释放memstore内存。
alter system set minor_freeze_times = 100; --轻微冻结的次数,尽量不要在测试期间触发严重冻结。
alter system set minor_warm_up_duration_time = 0; -- 加速轻微冻结
alter system set sys_bkgd_io_high_percentage=100; --将默认值从90调整为100,以提高dump IO使用的上限。
alter system set sys_bkgd_io_low_percentage=100; -- 将转储的 IO 使用限制从默认值 0 增加到 100