达梦数据库insert性能太低,请问怎么优化
【DM版本】:dm8_20230418_x86_rh6_64
【操作系统】:centos8
【CPU】:intel 8c16g
【问题描述】*:测试insert语句性能,8个线程同时工作,每一个插入10000条,最终结果是达梦服务器每s只能处理100条左右的插入,远低于当前要求,insert的SQL语句如下:
insert into tbl_cdr(strCdrID,strSessionID,strRecordIDFirst,strRecordIDSecond,strCallerNum,strCalleeNum,strCallerFunNum,strCalleeFunNum,nCallLevel,strDpsHome,nComplete,nCallType,nCdrType,nCallBeginTime,nCallAlertingTime,nCallConnectTime,nCallEndTime,nReleaseCause,nRecorderFlag,strConfId)values('%s','%s','%s','%s','%s','%s','%s','%s',%u,'%s',%u,%u,%u,%u,%u,%u,%u,%u,%u,'%s');
有索引的话先去掉,试试
insert 慢是因为 insert 要处理 redio,undo,有归档还要处理归档,要寻找表空间插入位置,等,若是多节点环境,还要处理多节点。 除了多线程,还要进行批量提交,不要插入一条提交一条,也不要等所有的都插入完再提交。这样也会占用 大量的undo空间。 最好几百条提交一次。
再就是被插入的表有没有触发器等。 再就是 插入数据的大小。一般的服务器磁盘io速度是可达300M/s。理论值不可能突破这个数。
我最近也在用 dpi 接口,也感觉到使用 dip 效率很低,不过我是新手,dpi 我没有找到提交的函数,发现是每一sql 都自动提交了,可能是这个原因导致效率很低,你们 dpi 接口可以 sql 全部执行完再提交吗?
我刚才看了 pdf,dpi 默认是自动提交的,每一个 sql 都会自动提交,需要配置成手动提交,然后全部执行完再提交,这样应该效率可以提高很多,楼主修正之后麻烦贴上新的代码。感谢
如果数据库页大小不是32K,建议使用页大小为32K的库
#instancename
INSTANCE_NAME=GRP1_RT_01
#memorypoolandbuffer
MAX_OS_MEMORY=60
MEMORY_POOL=600
MEMORY_N_POOLS=1
MEMORY_TARGET=1000
MEMORY_EXTENT_SIZE=32
MEMORY_LEAK_CHECK=0
MEMORY_MAGIC_CHECK=1
HUGEPAGE_THRESHOLD=16
MEMORY_BAK_POOL=4
HUGE_MEMORY_PERCENTAGE=50
HUGE_BUFFER=80
HUGE_BUFFER_POOLS=4
BUFFER=4000
BUFFER_POOLS=13
FAST_POOL_PAGES=3000
FAST_ROLL_PAGES=1000
KEEP=8
RECYCLE=400
RECYCLE_POOLS=5
ROLLSEG=1
ROLLSEG_POOLS=19
MULTI_PAGE_GET_NUM=1
PRELOAD_SCAN_NUM=0
PRELOAD_EXTENT_NUM=0
SORT_BUF_SIZE=10
SORT_BLK_SIZE=1
SORT_BUF_GLOBAL_SIZE=500
SORT_FLAG=0
HAGR_HASH_SIZE=100000
HJ_BUF_GLOBAL_SIZE=625
HJ_BUF_SIZE=63
HJ_BLK_SIZE=2
HAGR_BUF_GLOBAL_SIZE=625
HAGR_BUF_SIZE=63
HAGR_BLK_SIZE=2
MTAB_MEM_SIZE=8
FTAB_MEM_SIZE=0
MMT_GLOBAL_SIZE=4000
MMT_SIZE=0
MMT_FLAG=1
DICT_BUF_SIZE=50
HFS_CACHE_SIZE=160
VM_STACK_SIZE=256
VM_POOL_SIZE=64
VM_POOL_TARGET=16384
SESS_POOL_SIZE=64
SESS_POOL_TARGET=16384
RT_HEAP_TARGET=8192
VM_MEM_HEAP=0
RFIL_RECV_BUF_SIZE=16
COLDATA_POOL_SIZE=0
HAGR_DISTINCT_HASH_TABLE_SIZE=10000
CNNTB_HASH_TABLE_SIZE=100
GLOBAL_RTREE_BUF_SIZE=100
SINGLE_RTREE_BUF_SIZE=10
SORT_OPT_SIZE=0
TSORT_OPT=1
DFS_BUF_FLUSH_OPT=0
BIND_PLN_PERCENT=30
FBACK_HASH_SIZE=10000
XBOX_MEM_TARGET=1024
LIKE_PATTERN_NUM=300
#thread
WORKER_THREADS=8
TASK_THREADS=4
FAST_RW_LOCK=1
SPIN_TIME=4000
WORK_THRD_STACK_SIZE=8192
WORK_THRD_RESERVE_SIZE=256
WORKER_CPU_PERCENT=0
NESTED_C_STYLE_COMMENT=0
ETHD_FLAG=0
ETHD_GRP_NUM=8
EHTD_THREAD_NUM=8
#query
USE_PLN_POOL=1
DYN_SQL_CAN_CACHE=1
VPD_CAN_CACHE=0
RS_CAN_CACHE=0
RS_CACHE_TABLES=
RS_CACHE_MIN_TIME=0
RS_BDTA_FLAG=0
RS_BDTA_BUF_SIZE=32
RS_TUPLE_NUM_LIMIT=2000
RESULT_SET_LIMIT=10000
RESULT_SET_FOR_QUERY=0
SESSION_RESULT_SET_LIMIT=10000
BUILD_FORWARD_RS=0
MAX_OPT_N_TABLES=6
MAX_N_GRP_PUSH_DOWN=5
CNNTB_MAX_LEVEL=20000
CTE_MAXRECURSION=100
CTE_OPT_FLAG=1
BATCH_PARAM_OPT=0
CLT_CONST_TO_PARAM=0
LIKE_OPT_FLAG=127
FILTER_PUSH_DOWN=0
USE_MCLCT=2
PHF_NTTS_OPT=1
MPP_MOTION_SYNC=200
UPD_DEL_OPT=2
ENABLE_INJECT_HINT=1
FETCH_PACKAGE_SIZE=512
UPD_QRY_LOCK_MODE=0
ENABLE_DIST_IN_SUBQUERY_OPT=0
MAX_OPT_N_OR_BEXPS=7
USE_HAGR_FLAG=0
DTABLE_PULLUP_FLAG=1
VIEW_PULLUP_FLAG=1
GROUP_OPT_FLAG=52
FROM_OPT_FLAG=0
HAGR_PARALLEL_OPT_FLAG=0
HAGR_DISTINCT_OPT_FLAG=2
REFED_EXISTS_OPT_FLAG=1
REFED_OPS_SUBQUERY_OPT_FLAG=0
HASH_PLL_OPT_FLAG=0
PARTIAL_JOIN_EVALUATION_FLAG=1
USE_FK_REMOVE_TABLES_FLAG=1
USE_FJ_REMOVE_TABLE_FLAG=0
SLCT_ERR_PROCESS_FLAG=0
MPP_HASH_LR_RATE=10
LPQ_HASH_LR_RATE=30
USE_HTAB=1
SEL_ITEM_HTAB_FLAG=0
OR_CVT_HTAB_FLAG=1
ENHANCED_SUBQ_MERGING=0
CASE_WHEN_CVT_IFUN=9
OR_NBEXP_CVT_CASE_WHEN_FLAG=0
NONCONST_OR_CVT_IN_LST_FLAG=0
OUTER_CVT_INNER_PULL_UP_COND_FLAG=11
OPT_OR_FOR_HUGE_TABLE_FLAG=0
ORDER_BY_NULLS_FLAG=0
SUBQ_CVT_SPL_FLAG=1
ENABLE_RQ_TO_SPL=1
MULTI_IN_CVT_EXISTS=0
PRJT_REPLACE_NPAR=1
ENABLE_RQ_TO_INV=0
SUBQ_EXP_CVT_FLAG=0
USE_REFER_TAB_ONLY=0
REFED_SUBQ_CROSS_FLAG=1
IN_LIST_AS_JOIN_KEY=0
OUTER_JOIN_FLATING_FLAG=0
TOP_ORDER_OPT_FLAG=0
TOP_ORDER_ESTIMATE_CARD=300
PLACE_GROUP_BY_FLAG=0
TOP_DIS_HASH_FLAG=1
ENABLE_RQ_TO_NONREF_SPL=0
ENABLE_CHOOSE_BY_ESTIMATE_FLAG=0
OPTIMIZER_MODE=1
NEW_MOTION=0
LDIS_NEW_FOLD_FUN=0
DYNAMIC_CALC_NODES=0
OPTIMIZER_MAX_PERM=7200
ENABLE_INDEX_FILTER=0
OPTIMIZER_DYNAMIC_SAMPLING=0
TABLE_STAT_FLAG=0
AUTO_STAT_OBJ=0
MONITOR_MODIFICATIONS=0
MON_CHECK_INTERVAL=3600
NONREFED_SUBQUERY_AS_CONST=1
HASH_CMP_OPT_FLAG=0
OUTER_OPT_NLO_FLAG=0
DISTINCT_USE_INDEX_SKIP=2
USE_INDEX_SKIP_SCAN=0
INDEX_SKIP_SCAN_RATE=0.0025
SPEED_SEMI_JOIN_PLAN=9
COMPLEX_VIEW_MERGING=0
HLSM_FLAG=1
DEL_HP_OPT_FLAG=0
OPTIMIZER_OR_NBEXP=0
NPLN_OR_MAX_NODE=20
CNNTB_OPT_FLAG=0
ADAPTIVE_NPLN_FLAG=0
MULTI_UPD_OPT_FLAG=0
MULTI_UPD_MAX_COL_NUM=128
ENHANCE_BIND_PEEKING=0
NBEXP_OPT_FLAG=7
HAGR_HASH_ALGORITHM_FLAG=0
DIST_HASH_ALGORITHM_FLAG=0
UNPIVOT_OPT_FLAG=0
VIEW_FILTER_MERGING=138
ENABLE_PARTITION_WISE_OPT=0
OPT_MEM_CHECK=0
ENABLE_JOIN_FACTORIZATION=0
EXPLAIN_SHOW_FACTOR=1
ERROR_COMPATIBLE_FLAG=0
ENABLE_NEST_LOOP_JOIN_CACHE=0
ENABLE_TABLE_EXP_REF_FLAG=1
VIEW_OPT_FLAG=1
SORT_ADAPTIVE_FLAG=0
DPC_OPT_FLAG=16383
DPC_SYNC_STEP=16
DPC_SYNC_TOTAL=0
XBOX_DUMP_THRESHOLD=0
STMT_XBOX_REUSE=1
XBOX_SHORT_MSG_SIZE=1024
MAX_HEAP_SIZE=0
PLAN_OP_FLAG=0
DUAL_ENABLE_SELECT=1
LOAD_BINDED_PLN=0
FORALL_OPT=1
HASH_OPT_FLAG=1
#checkpoint
CKPT_RLOG_SIZE=128
CKPT_DIRTY_PAGES=0
CKPT_INTERVAL=180
CKPT_FLUSH_RATE=5.00
CKPT_FLUSH_PAGES=1000
CKPT_WAIT_PAGES=1024
FORCE_FLUSH_PAGES=8
#IO
DIRECT_IO=0
IO_THR_GROUPS=4
HIO_THR_GROUPS=2
FIL_CHECK_INTERVAL=0
FAST_EXTEND_WITH_DS=1
FIL_CHECK_MODE=0