注册
达梦优化-从基础到掌握-精选100题
专栏/技术分享/ 文章详情 /

达梦优化-从基础到掌握-精选100题

极大の鱼 2026/04/24 35 1 0
摘要

达梦数据库性能优化题库(100题)

第一阶段:基础篇(第1-20题)

第1题(概念类) :什么是执行计划?为什么查看执行计划是SQL调优的第一步?

第2题(操作类) :在达梦数据库中,有哪几种方式可以查看SQL语句的执行计划?

第3题(操作类) :如何使用EXPLAIN命令查看一条SELECT语句的执行计划?请写出SQL示例。

第4题(操作类) :什么是dm.ini文件?它对于达梦数据库性能优化有何重要意义?

第5题(参数类) :达梦数据库中的参数按生效方式可以分为哪几类?静态参数和动态参数有什么区别?

第6题(参数类) :达梦数据库中的数据缓冲区(BUFFER)的作用是什么?如果数据缓冲区设置过小会有什么影响?

第7题(参数类) :在达梦数据库中,如何查看当前实例的dm.ini配置文件参数值?

第8题(概念类) :达梦数据库的内存结构主要包含哪几个部分?请简要说明各部分的作用。

第9题(参数类) :达梦数据库中BUFFER_POOL参数建议如何设置?一般建议设置为物理内存的多少比例?

第10题(概念类) :什么是全表扫描(CSCN)?执行计划中出现CSCN操作符通常意味着什么?

第11题(概念类) :什么是索引扫描(SSEK/CSEK)?与全表扫描相比有何优势?

第12题(操作类) :如何在达梦数据库中创建一个普通索引?请写出基本的CREATE INDEX语法。

第13题(概念类) :什么是复合索引?复合索引的列顺序应遵循什么原则?

第14题(概念类) :什么是覆盖索引?使用覆盖索引可以带来什么性能收益?

第15题(参数类) :达梦数据库中的MAX_SESSIONS参数有什么作用?设置过小会导致什么问题?

第16题(参数类) :达梦数据库中的RLOG_BUF_SIZE参数是什么含义?建议设置为多大?

第17题(操作类) :在达梦数据库中,如何查看当前数据库实例的运行状态和版本信息?

第18题(概念类) :什么是缓冲池命中率?如何通过V$SYSSTAT视图查看Buffer Hit Ratio?

第19题(概念类) :达梦数据库中的临时表空间(TEMP表空间)主要用于什么场景?

第20题(操作类) :如何在达梦数据库中查看当前正在执行的SQL语句以及对应的会话信息?

第二阶段:进阶篇(第21-50题)

第21题(执行计划类) :请解读如下达梦执行计划中的关键信息:#CSCN2: [1, 856, 285]; INDEX33555578(EMPLOYEE)。方括号中的三个数字各代表什么含义?

第22题(执行计划类) :达梦执行计划的解读遵循什么顺序原则?缩进越深和相同缩进的情况下,执行的先后顺序是怎样的?

第23题(执行计划类) :如何通过执行计划判断一条查询是否使用了索引?如果执行计划中出现CSCN但预期应该使用索引,可能的原因是什么?

第24题(索引类) :在达梦数据库中,哪些情况下会导致索引失效?请列举至少5种常见场景。

第25题(索引类) :请解释达梦组合索引中的“最左前缀原则”。如果组合索引是(a, b, c),查询条件为WHERE b = ? AND c = ?能否使用该索引?

第26题(SQL类) :为什么在WHERE条件中对字段使用函数会导致索引失效?如何改写可以避免?请举例说明。

第27题(SQL类) :达梦SQL中的OR子句对性能有何影响?应如何改写为更高效的形式?

第28题(SQL类) :达梦数据库中LIKE查询如何使用索引?哪些LIKE模式可以利用索引,哪些不能?

第29题(SQL类) :数据类型不一致(隐式类型转换)会对执行计划产生什么影响?执行计划中出现exp_cast意味着什么?

第30题(SQL类) :达梦数据库中IN和EXISTS子查询的性能有何区别?什么场景下应该使用IN,什么场景下应该使用EXISTS?

第31题(统计信息类) :什么是统计信息?统计信息对于优化器选择执行计划有什么作用?

第32题(统计信息类) :达梦数据库的统计信息分为哪几种类型?分别是什么?

第33题(操作类) :如何在达梦数据库中收集表和索引的统计信息?请写出收集某个表统计信息的SQL语句。

第34题(参数类) :达梦数据库中OLAP_FLAG参数有什么作用?联机交易系统和联机分析系统应分别设置为多少?

第35题(参数类) :达梦数据库中WORKER_THREADS参数建议如何设置?与CPU核数有何关系?

第36题(监控类) :如何通过VLONG_EXEC_SQLS和VSYSTEM_LONG_EXEC_SQLS视图定位高负载的SQL语句?

第37题(操作类) :达梦数据库中的查询优化向导工具如何使用?该工具可以自动推荐什么优化方案?

第38题(参数类) :达梦数据库中SORT_BUF_SIZE参数的作用是什么?在什么场景下应该调大该参数?

第39题(连接类) :达梦数据库支持哪几种表连接方式(JOIN算法)?分别适用于什么场景?

第40题(连接类) :HASH连接和嵌套循环连接(Nest Loop Join)各自的使用场景是什么?如何根据表数据量大小判断应使用哪种连接方式?

第41题(分组类) :达梦数据库中HAGR和SAGR分别代表什么操作符?它们之间有什么区别?

第42题(监控类) :如何开启达梦数据库的AWR功能?如何手动生成一份AWR性能分析报告?

第43题(参数类) :达梦数据库中ENABLE_MONITOR参数的作用是什么?性能优化时应设置为什么值?

第44题(分区表类) :什么是分区表?达梦数据库支持哪几种分区类型?

第45题(分区表类) :什么是分区裁剪(Partition Pruning)?分区裁剪对于查询性能有什么帮助?

第46题(分区表类) :在查询分区表时,如何确保SQL能够进行分区裁剪?需要满足什么条件?

第47题(临时表类) :达梦数据库中的全局临时表分为哪两种类型?事务级临时表和会话级临时表有什么区别?

第48题(临时表类) :使用临时表相比普通永久表在性能方面有什么优势?临时表会产生REDO日志吗?

第49题(批量操作类) :在达梦数据库中,如何进行高效的批量数据插入?批量插入相比单条插入有什么性能优势?

第50题(工具类) :达梦数据库提供的dmfldr工具是什么?该工具的主要用途是什么?

第三阶段:高级篇(第51-80题)

第51题(执行计划类) :执行计划中的BLKUP操作符是什么含义?当执行计划中出现大量BLKUP操作时说明什么问题?如何优化?

第52题(执行计划类) :达梦执行计划中CSCN2和SSCN(或SSEK/CSEK)操作符有什么区别?如何根据这些操作符判断优化器选择的扫描策略?

第53题(执行计划类) :执行计划中的PRJT操作符和SLCT操作符分别表示什么?SLCT_PUSHDOWN(TRUE)意味着什么?

第54题(执行计划类) :如何区分达梦的预估执行计划和实际执行计划?两者的区别是什么?

第55题(执行计划类) :如何通过V$SQL_PLAN动态视图查询已执行SQL的历史执行计划?适合什么场景使用?

第56题(索引类) :在达梦数据库中,如何判断一个索引是否被使用?如何找出长期未被使用的无效索引并予以删除?

第57题(索引类) :索引碎片是如何产生的?如何通过ALTER INDEX … REBUILD命令重建索引来消除碎片?

第58题(索引类) :索引的过滤因子(Filter Factor)是什么?为什么组合索引设计时应包含最低过滤因子的谓词列?

第59题(SQL改写类) :请分析如下子查询的性能问题,并给出优化改写方案:SELECT * FROM orders WHERE order_id IN (SELECT order_id FROM order_items WHERE item_price > 1000)。何时应改为JOIN,何时应保持IN?

第60题(SQL改写类) :以下SQL语句存在什么性能问题?请改写优化:SELECT * FROM employees WHERE TO_CHAR(hiredate,‘YYYY−MM−DD’)=‘2024−01−01’。

第61题(SQL改写类) :达梦数据库中NOT IN子查询容易出现什么性能问题?应如何改写为更高效的形式?

第62题(统计信息类) :统计信息收集的频率应该如何控制?收集频率太低和太高分别会带来什么问题?

第63题(统计信息类) :达梦数据库中的直方图(Histogram)是什么?什么情况下需要使用直方图来改善执行计划?

第64题(参数类) :达梦数据库中OPTIMIZER_MODE参数的作用是什么?2016年以后的版本建议如何设置?

第65题(参数类) :达梦数据库中HJ_BUF_GLOBAL_SIZE和HJ_BUF_SIZE参数的作用是什么?在高并发哈希连接场景下应如何调整?

第66题(内存类) :达梦数据库中的共享内存池参数MEMORY_POOL如何设置?物理内存较大时(如大于64G)的建议值是多少?

第67题(内存类) :达梦数据库中RECYCLE缓冲区的作用是什么?在OLAP场景和高并发场景下应如何设置?

第68题(内存类) :达梦数据库中CACHE_POOL_SIZE参数的作用是什么?一般建议配置为多大?

第69题(并发控制类) :如何通过VTRXWAIT和VLOCK视图定位数据库中的锁等待和阻塞问题?如何解决长时间阻塞?

第70题(并发控制类) :达梦数据库中死锁是如何产生的?达梦数据库会自动检测和处理死锁吗?

第71题(并发控制类) :什么是长事务?长事务对数据库性能有什么负面影响?如何优化事务设计?

第72题(并发控制类) :达梦数据库中的MVCC(多版本并发控制)功能有什么作用?如何启用?

第73题(并行查询类) :达梦数据库如何启用并行查询功能?并行查询需要设置哪几个关键参数?

第74题(并行查询类) :如何在SQL语句中通过HINT指定并行度?写出使用PARALLEL HINT的SQL示例。

第75题(并行查询类) :并行查询的并行度是否越大越好?设置过高的并行度会带来什么问题?

第76题(参数类) :达梦数据库中ALTER_TABLE_OPT参数的作用是什么?在什么场景下需要调整该参数?

第77题(日志类) :达梦数据库中的LOG_FILE_SIZE参数建议设置多大?日志文件设置过小会有什么影响?

第78题(监控类) :如何通过视图定位数据库性能瓶颈?该视图可以查看哪些等待事件?

第79题(批量操作类) :在达梦数据库的批量数据导入场景中,如何调整参数以提升装载速度?BDTA_SIZE参数的作用是什么?

第80题(工具类) :达梦数据库中EXPLAIN FOR命令的作用是什么?相比普通EXPLAIN有什么优势?

第四阶段:专家篇(第81-100题)

第81题(执行计划深度分析) :请分析达梦执行计划中“控制流从上向下传递,数据流从下向上传递”这句话的含义。结合操作符树结构解释数据在操作符之间的流动过程。

第82题(优化器原理) :达梦数据库采用的是CBO(基于代价的优化器)还是RBO(基于规则的优化器)?CBO选择执行计划的依据是什么?

第83题(优化器原理) :达梦优化器中“左深树”和“卡特兰树”两种计划探测模式有什么区别?OPTIMIZER_MODE参数如何控制这两种模式?

第84题(高级SQL改写) :请分析如下复杂SQL的性能问题并进行优化改写(涉及嵌套子查询和聚合函数):SELECT department_id, (SELECT MAX(salary) FROM employees e2 WHERE e2.department_id = e1.department_id) max_salary FROM employees e1 GROUP BY department_id。如何利用分析函数(窗口函数)改写以提升性能?

第85题(高级索引设计) :在达梦数据库中,组合索引中同时包含等值谓词和范围谓词时,列的顺序应如何设计?为什么等值谓词列应放在范围谓词列之前?

第86题(高级统计信息) :在大表场景下,统计信息收集的开销很大。达梦数据库支持采样收集统计信息吗?如何使用采样收集来平衡准确性和开销?

第87题(高级内存管理) :达梦数据库中的MEMORY_N_POOLS参数有什么作用?将公共内存池分片可以解决什么问题?在什么场景下需要调整该参数?

第88题(高级分区优化) :在达梦分区表中,如果查询条件包含分区键的范围查询,执行计划中可能出现先全表扫描再分区裁剪的情况。这种计划是否合理?如何判断分区裁剪是否真正生效?执行计划中的PARALLEL scan_type(GELE)和PARALLEL scan_type(FULL)分别代表什么?

第89题(高级分区策略) :假设有一个按时间范围分区的日志表,业务查询通常需要查询最近7天的数据。请设计一个分区方案,使得查询能够高效地进行分区裁剪,并说明分区维护策略(如历史分区的清理和归档)。

第90题(高级锁分析) :在达梦数据库中,如何系统性地排查和解决高并发环境下的锁竞争问题?请列举从发现锁问题到解决锁问题的完整分析流程,包括使用哪些动态视图和命令。

第91题(高级参数调优) :给定一台配置为64核CPU、256GB物理内存的OLTP数据库服务器,请针对高并发密集交易场景给出dm.ini关键参数的优化建议值,包括MEMORY_POOL、BUFFER、BUFFER_POOLS、MAX_BUFFER、WORKER_THREADS等,并说明每个参数调优的理由。

第92题(高级参数调优) :给定一台配置为32核CPU、128GB物理内存的OLAP数据仓库服务器,请针对大表全表扫描、复杂分组聚合和哈希连接等场景给出dm.ini关键参数的优化建议,重点说明RECYCLE、
HJ_BUF_GLOBAL_SIZE、HAGR_BUF_GLOBAL_SIZE等参数的设置依据。

第93题(HTAP混合负载优化) :现代数据库系统常常面临HTAP(混合事务分析处理)场景,OLTP和OLAP负载运行在同一数据库实例上会产生资源竞争。请阐述在达梦数据库中如何通过参数配置来隔离和优化混合负载,包括内存分配策略、并发控制机制和执行计划倾向性设置。

第94题(高并发优化综合题) :某金融核心系统在业务高峰期出现响应延迟增加、CPU使用率飙升的现象。通过V$LONG_EXEC_SQLS发现大量SQL在执行计划中使用了CSCN(全表扫描),而这些表上明明有合适的索引。请分析可能的原因,并给出完整的诊断和优化方案。

第95题(慢SQL深度诊断) :一条多表关联的SQL语句在生产环境执行时间从5秒突然上升到5分钟。请设计一个完整的排查方案,包括:如何确认问题SQL、如何捕获执行计划、如何对比优化前后的差异、如何定位优化器选择错误执行计划的原因,以及最终的优化措施。

第96题(批量性能优化综合题) :某数据中台系统需要每天凌晨批量导入约5000万条业务数据,目前使用单条INSERT方式需要8小时才能完成。请设计一个完整的批量导入优化方案,包括:参数调优建议(MEMORY_POOL、BUFFER、日志缓冲区等)、批量操作策略、dmfldr工具的使用方法,以及如何通过分区表和并行加载进一步提升导入性能。

第97题(执行计划操作符体系) :达梦数据库执行计划中有多种扫描操作符和连接操作符,请系统性地解释CSCN、SSEK、CSEK、BLKUP、NEST LOOP、HASH JOIN、MERGE JOIN等关键操作符的工作原理、性能特征和适用场景,并说明如何根据执行计划中的操作符组合来判断SQL的性能瓶颈。

第98题(查询重写优化器机制) :达梦数据库的优化器能够自动进行查询重写。请列举优化器能够自动执行的几种查询重写转换(如子查询展开、视图合并、谓词下推等),并说明这些转换如何提升SQL性能。在什么情况下优化器可能无法进行这些转换?

第99题(分布式架构性能优化) :在达梦分布式集群DPC(Distributed Processing Cluster)场景下,性能优化的重点有哪些?如何利用分区裁剪优化减少跨节点数据传输?如何设计表的分发方式和分区策略来提升分布式查询性能?

第100题(综合性能优化方法论) :请结合达梦数据库的架构特点,总结一套从“问题发现”到“问题解决”的完整性能优化方法论。包括:1)如何建立性能监控体系(AWR报告、动态视图等);2)如何定位性能瓶颈(自上而下还是自下而上);3)如何从实例层面、SQL层面、数据库设计层面三个维度进行系统性优化;4)如何验证优化效果并进行持续跟踪。请结合前99题的知识,展现你对达梦性能优化的系统性理解。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服