如何在达梦数据库中追踪慢SQL

上周有客户问我如何找到大盟数据库中的慢SQL。
我引导他经历了这一切。
过程相当复杂。
下面我就详细的给大家讲讲我的操作以及我遇到的坑。

首先需要更改dm.ini文件,这是核心。
您需要转到此目录 /home/dmdba/dmdbms/data/DAMENG/ 并使用 vim 或您喜欢的编辑器打开 dm.ini。
关键是改变两个参数:
SVR_LOG_NAME="SLOG_ALL":这个指定sqllog.ini中的哪个配置块生效,不要出错
SVR_LOG=1 :打开SQL日志功能,0关闭它。
非常直观。

改完这两个之后,还需要改sqllog.ini。
该文件需要更多关注细节: 1 . 必须调整缓冲区参数。
我通常把它们:
BUF_TOTAL_SIZE=1 02 4 0:总缓冲区1 0 MB,根据服务器情况调整
BUF_SIZE=1 02 4 :每个缓冲区 1 MB
BUF_KEEP_CNT=6 :保留6 个缓冲区,保证写入连续性
2 .最重要的是[SLOG_ALL]配置,需要添加这些: .ini [SLOG_ALL] 文件路径=../日志 零件尺寸=0 开关模式=2 SWITCH_LIMIT=1 2 8 ASYNC_FLUSH=1 文件编号=5 SQL_TRACE_MASK=1 MIN_EXEC_TIME=2
MIN_EXEC_TIME=2 :这是关键!超过 2 秒的 SQL 将被记录。
您可以根据您的需要更改它。

ASYNC_FLUSH=1 :必须开启异步刷新否则会影响性能
FILE_PATH:保存日志的位置,自己输入路径
更改这些参数后,必须重新启动数据库服务才能生效。
命令为 cd /home/dmdba/dmdbms/bin; ./DmServiceDMSERVER 重新启动。
上次忘记重启了,花了好长时间。

日志分析是最麻烦的一步。
日志文件将在您指定的目录中生成,文件名中带有时间戳。
我通常使用grep来过滤关键信息: 巴什 grep "MIN_EXEC_TIME=2 " ../log/dm_slog_.log | grep "MIN_EXEC_TIME=2 " ../log/dm_slog_.log | grep "SQL_TEXT"
只要看看慢SQL的具体语句就可以对症下药了。
但不要只阅读日志。
DMManager是一个使用更方便、可视化分析更容易的监控工具。

优化建议我通常会给客户这样的建议: 1 、对于频繁出现的慢SQL,首先检查索引状态 2 、检查SQL语句是否嵌套太深,是否可以重写。
3 、如果表设计不合理,也会导致运行缓慢。
比如字段太多,没有分区,有几点需要注意:
性能影响是真实的。
日志会消耗CPU和I/O。
建议在经济衰退时激活它们。

生产环境参数必须调整正确。
我曾经见过一个日志文件爆炸。

不记录敏感信息,需要配置SQL_TRACE_MASK
总之,这个过程相当繁琐,但实际上是需要找到慢SQL的。
如果你实际做过的话,你会发现有很多细节,比如缓冲区大小必须根据服务器内存调整、日志文件数量不能设置太多等等。

达梦导出表数据sql文件命令

有多种方法可以将表数据导出到 SQL 文件。

首选DM_EXPORT工具。
环境变量必须配对。
DM_HOME 和 PATH 正确。

在命令行上使用 dm_export。
格式是固定的。
U 是用户名。
P是密码。

使用 -S 作为服务器 IP 和端口。
使用 -D 作为数据库名称。
使用 -T 作为表名。
输出文件-o.
检查结果至关重要。
打开SQL文件并检查它是否正确。

还可以导入SQL语句。
只需创建表ASSSELECT即可。
首先,登录数据库。

INTOOUTFILE 是导入文本。
指定分隔符。
输出TXT文件。

CSV 使用 COPY 命令。
以 CSV 格式输出。
带列名。

达梦怎么导入sql文件

大盟有两种导入SQL文件的方法。

图形工具:打开大盟图形控件,点击文件-打开,选择.sql文件,选择模式,点击执行。
自 2 008 年起提供的功能。

DISQL 命令行:将文件放在服务器上并使用 @ 执行。
如@/home/user/data.sql。
2 01 0版本支持。

字符集必须一致。