2025-11-21 12:00:10
好的沟通方式有很多种,我主要介绍最常用的三种:尊重、倾听和情绪控制。
尊重对方在高效沟通中非常重要,也是一个很关键的前提。这里你需要记住以下两个原则。
我可以不同意你,但是会捍卫你说话的权利。即便在你不认同对方观点的情况下,也要尊重对方的表达,认真聆听,这个时候有可能你会发现不一样的东西,从而改变自己最初不准确的认知。
赢得对方的尊重需要先尊重对方。在你对他人表现出足够的尊重之后,同时你也能够赢得对方的尊重,他会更乐于跟你交谈,而且交流的内容也会更为细致和深入,从而实现良好的沟通效果。此外,在这样的背景下,当你和对方出现观点不一致的情况时,对方也会更乐于聆听你,并顺着你的思路去思考。
所以可以说,尊重对方并赢得对方尊重的沟通方式,通常会进行得比较深入,沟通效果也会很不错。
注意,尊重并不代表要低三下四、随声附和,做一个墙头草可以让别人很容易和你相处,但要赢得对方的尊重,这还远远不够,你一定要和对方有观点上的交互,甚至是碰撞。沟通的目的不是为了附和对方,而是产生一种更完整更全面的认知。只有当双方都愿意接受不同的观点时,此时的沟通才会迸发出更多的火花,而这一切都需要发生在相互尊重的基础之上。
《沟通的艺术》一书中将“倾听”定位为至少与“说”同等重要的沟通形式,足以见其重要性。作者认为,倾听与听或者听到有很大不同,它是解读别人所说信息的过程,包含听到、专注、理解、回应和记忆五大元素。
上面的说法有点高大上,我们还是实在一点。我们之所以要倾听,就是因为倾听可以让我们获得更多信息,对对方有更多的了解。倾听能让对方感觉到自己被尊重,所以才会跟你分享更多的信息。这其实是沟通中的高级技巧,因为当你掌握了对方很多信息时,你就可以了解这个人,也就对你越有利。所以,面试的时候,一般来说会面试的面试官基本上都不多说话,都是在听你讲,你讲的越多,他就了解你越多。那些电视里访谈类节目中的主持人都是很厉害的倾听高手,因为他们要挖到被采访人更多的信息。
你一定要学会倾听,掌握到更多的信息,因为掌握不了足够的信息就会信息不对称,信息不对称就会做出错误的假设。尤其是在谈判的时候,你觉得他的利益点是这个,而实际上他的利益点可能是另外一个。所以,倾听其实不仅仅只是听,还要思考,要思考更深层的原因,不要被表象所迷惑,才会有更高效率的沟通,这才有助于你做出正确的决定。
能否控制好自己的情绪对于沟通效果来说至关重要。如果动不动就生气或者心怀戒心,通常会令沟通很难进行,更不用说实现高效沟通。如果能控制好自己的情绪,时刻保持理性思考,这不仅会使所沟通问题得到顺利解决,而且能给对方留下好的印象,进而形成良好的人际关系。我们都会说某个人的 EQ 比较高,并不是说这个人很会说话,很会说话、有随机应变能力的人通常都是 IQ 高,EQ 高的人一般都是可以控制自己情绪的人。
具体该怎样做呢?我建议遵循以下两个原则。
不要过早或者过度打岔和反驳。倾听对方,即便有不同意见,也要耐心地听对方说完,不要打岔或反驳。断章取义是件非常可怕的事儿,因为当你听对方完整讲述完之后,很多时候会改变自己在聆听过程中的某些想法或者看法。此外,打断别人说话,是很不礼貌的事儿,次数多了,会给对方留下坏印象。
求同存异,冷静客观。每个人的知识储备不同,生长环境不同,经历和性格等也不同,所以看待和理解问题时,自然会有很大差异。所以,要懂得尊重这些差异,客观公正地思考问题,并给出相应的建议和看法。
切莫在冲动之下,说出很多一些过分或过激的话,因为言语的力量是巨大的,杀伤力有时难以预估。举一个有些极端的例子。假如你和铁哥们儿吵架了,对方一气之下,打了你两拳,你很有可能过两天就忘记了。但是如果对方说了几句伤你心的话,这种伤心则有可能会持续很久很久,甚至你们可能会因此而绝交。
人是有情感的动物,并不是所有的人都能够控制得住自己的情绪的,尤其是血气方刚的年轻人。有时候,我会自己告诫自己,情绪是自己的,不是别人的,不应该被别人 hack 了。所以,无论发生什么事,自己才是自己心情的主人,而不是别人。话虽这样说,但是要做到并不容易。有时候,我也不能很好控制我的情绪,到今天都还不行,这也是我要用一生去成长的事……
掌握了上面的沟通方式,下面来看几个我经常用的沟通技巧。
第一是引起对方的兴趣。如果对方没有兴趣的话,那么他是不愿意跟你沟通的。但你要怎样引起对方的兴趣呢?我现在也在创业。我出去跟客户谈,我技术好,是没有用的。只有利益,才能引起对方的兴趣。
举一个真实的例子,为了找一家银行谈合作,我找了一堆关系,给我介绍了某个银行的副行长。见面的时候我的着装有些随意,而周围的人都穿着衬衫和西裤,很正式。估计要不是别人介绍的,他一眼都不想看我,几句话就能把我打发了。
他一开始就问我:你是谁?你们公司叫什么名字?没听说过。注册资本多少?哎呀几十万呀……我被这几个问题搞得非常地狼狈和不堪,完全不知道该怎么往下继续。在这样的情况下,如果你是我你会怎么办呢?该怎样吸引他的兴趣呢?
真实情况是我只用了 20 分钟时间就搞定了这件事。我分享一下,我是怎么做到的。
首先,我见他之前做了一些功课,收集了一些信息。银行和金融业,今年下半年整个形势都是很糟糕的,银行贷款都办不了。国家货币在紧缩,还有 P2P 这些乱七八糟的事儿。于是,我就跟他说,我这边有一个客户,这个客户的现金流比较大,一天的流水大概是 3-5 个亿……
还没等我讲完,他就打断了我,立马说:哦?!请坐,那个谁,过来倒点儿水……当一个人对你有兴趣了以后,后面的事就比较好谈了。当然,我并不是在忽悠他,我做的技术项目本来就是为大规模并发的场景而生的,所以,能用得上这些技术的用户基本上来说都是有一定的业务量的,也是有相应的现金流的……
第二是直达主题,强化观点。要做到这点,你需要做的是过滤信息,简明扼要地表达。信息不要空泛笼统,而要可以准确执行。亚马逊要求员工都有一个技能叫做 deal with ambiguity。ambiguity 就是歧义的、模糊的,不知道怎么执行的。工程师的情结通常是我写出来的代码 1 就是 1,0 就是 0。
但很多时候产品需求都是很模糊的。而且很多时候,整个世界都是模糊的、有歧义的。有的人这么说,有的人那么说。你都不知道自己该信谁。所以亚马逊要求员工有一个能力就是,你一定要有把模糊的理解变成准确理解的能力,因为如果不这样,你是写不出代码来的。
这种过滤掉无用或者非关键信息的能力很重要。确定自己的目标,学会抓重点,知道自己要什么和不要什么,这样你要的才会更鲜明。当一些事情变得简明和鲜明起来时,你才会表现出有力量的观点和话语。而这些被强化过的观点和话语,只需要一句,就会在对方脑子里形成一个小爆点,要么击中了对方的软处(扎心),要么会让对方产生深度思考。只有这样,你的信息才算是真正地传达过去,并在对方的脑子里生根发芽,这就是所谓的影响力!
要有这样的能力,你需要通过反复练习来获得。在表达之前,要想明白自己表达的目的是什么,先组织一下自己要表达的内容,然后结合自己的表达目的反思这些信息中,哪些是有用信息,哪些是无用信息。留下有用信息之后,思考是否有更加简单明了的表达方式,是不是可以一句话就行。当你开始把大量的信息提炼浓缩成“金句”的时候,你就真正开始成为沟通的高手了。
这里有个小技巧是换位思考,假设你自己获取到这样的信息会怎样理解和执行,甚至可以尝试多维度来理解,自己跟自己“互搏”,逐渐修正,直到令自己满意。这个过程需要花不少心思,也需要长时间的坚持和锻炼。你要对自己有信心。
第三是用数据和事实说话。你跟别人沟通,要尽量少说“可能、也许、我觉得就这样”等字眼,你最好通过数据和证据,通过权威的引用和证词,通过相关的实例和亲身的事例来让你的观点有不可被辩驳不可被质疑的特性。当你的信息出现了这样的特性时,接收信息的人,基本上来说,就会无条件地相信。别人会无条件地相信你说的话,你想想这是一种多么牛的沟能方式!
我记得我在亚马逊的时候,产品经理整天在数据仓库里做各种的统计和分析,然后拿着数据来说服老板和开发人员开一个新的项目。当那些数据和事实放在你面前时,你真的是只有认命的份儿了。
所以,在很多时候,我们要在沟通之前注意收集相关的数据和事实,多做一些沟通相关的功课,你的沟通会更有效率。基本上来说,数据、事实、证据和权威是沟通中的大规模杀伤性武器!
总结一下今天的内容。简单来说,在沟通过程中,你要牢记三大沟通方式:尊重对方、倾听对方和情绪控制,从今天开始,你就可以在和别人沟通的时候刻意练习这几大沟通方式了。然后我还和你分享了几个对我帮助很大的沟通技巧。
一是沟通之前,你要想方设法引起对方的兴趣,这里面你要思考对方最关注什么,你可以帮到他什么。
二是直达主题,强化观点,要做到这一点,你需要过滤信息,简明扼要地表达。也就是说你要明确自己的沟通目的,然后围绕目的不断迭代自己的表达内容。同时,你可以用换位思考法来进一步确保自己的表达能够准确无误传递给对方。
三是用数据和实例说话。沟通的时候,你应该尽量少用“可能”、“也许”之类不确定的话术,转而使用数据和实例等确定性的语言来夯实你的观点,当然,这中间你要学会如何积累“实例”。 这三样东西不仅可以帮你解决绝大多数问题,而且可以把你的沟通变得简单粗暴、直接有效。
采用这样的方式和技巧,我想你基本上可以解决 80%-90% 以上的沟通问题了。还是那句话,我能做到的,你一定也可以。加油!
来源:《左耳听风专栏:高效沟通》
2025-11-12 11:45:42
我们通常用参数数量来衡量模型的规模。参数是模型在训练过程中学习的变量,这些变量用于根据输入数据做出预测或生成输出。参数数量通常以B(Billion,十亿)为单位。"B"代表"Billion"(十亿),比如常见的大语言模型级别规模:
7B = 70亿参数
32B = 320亿参数
70B = 700亿参数
910B = 9100亿参数
可以把它想象成模型大脑中的 “神经元” 或 “突触连接”。是模型通过训练学到的内部知识表示。每个参数都是一个数值,共同构成了模型的"大脑"。
在训练过程中,模型通过海量的文本(或图像)数据学习。
在这个过程中,它会逐步调整和优化其内部数以十亿甚至万亿计的、微小的 “权重” 和 “偏置” ,这些就是参数。
每一个参数都负责捕捉数据中某种细微的模式、关联或知识,比如“苹果”和“红色”经常一起出现,或者一个复杂的语法规则。
参数量,直接反映了模型内部结构的复杂程度。模型的大小(参数量)通常与其能力相关:参数量越大,模型通常能够捕捉更复杂的模式,但同时也需要更多的计算资源和内存,并且推理速度可能更慢。
以下是主流大语言模型的级别划分及其核心特征概览:

代表模型: Qwen2.5-1.5B/7B, Llama-3-8B, ChatGLM-6B, Gemma-7B
特点:
体积小,速度快:可以在CPU或单张消费级GPU(如RTX 4090)上流畅运行,响应延迟极低。
成本极低:非常适合个人开发者、学术研究或大规模部署在边缘设备。
能力聚焦:在通用知识、推理和编程上能力有限,但经过高质量训练或精调后,能在特定任务上表现出色。
典型使用场景:
边缘计算与端侧部署:部署在手机、平板、嵌入式设备上,提供本地化的AI助手功能。
高速响应场景:作为智能客服的“第一响应”模块,处理简单、高频的问答。
特定任务工具:通过精调,专门用于文本分类、实体识别、内容过滤、代码补全(小型)等。
研究与教育:学生和研究人员低成本学习模型原理、进行微调实验的理想选择。
代表模型: Qwen2.5-32B, Llama-3-70B(注:虽名为70B,但常被归于此性能级别), Yi-34B
特点:
性能与效率的甜蜜点:在保持相对可控的部署成本下,提供了非常强大的通用能力(推理、知识、编程)。
综合能力强:通常在各种公开评测中表现优异,是许多开源应用的“中坚力量”。
需要专业级GPU:通常需要1-2张数据中心级GPU(如A100, H100, H20)进行高效推理。
典型使用场景:
企业级私有部署:作为企业内部的通用AI助手,处理文档分析、报告撰写、代码开发等任务。
高质量的聊天机器人:提供流畅、聪明、知识丰富的对话体验。
复杂内容创作:撰写文章、策划方案、编写脚本等。
高级检索增强生成(RAG):能够更好地理解和整合外部知识,给出精准的回答。
代表模型: Llama-2/3-70B, Qwen1.5-72B, DeepSeek-67B
特点:
逼近顶尖性能:在绝大多数任务上表现出色,非常接近顶级闭源模型(如GPT-3.5)的能力。
资源消耗大:需要多张(通常≥4张)高端GPU进行推理,部署和运维成本高。
强大的推理与思维链:在解决复杂数学问题、逻辑推理和深层代码逻辑时优势明显。
典型使用场景:
复杂推理与问题解决:用于高级数学推理、逻辑谜题解答、战略分析。
高质量的代码生成与审查:生成复杂、完整的项目代码,进行深入的代码调试和分析。
作为闭源模型的替代:当企业需要完全的数据控制权,同时又追求顶级模型性能时,会选择此级别模型进行私有化部署。
代表模型: 混元-910B, GPT-4, Claude-3 Opus
特点:
追求极致能力:代表了当前大模型技术的最高水平,在需要深度知识和复杂思维链的任务上具有突破性能力。
通才:几乎在所有NLP任务上都有顶级表现,尤其擅长处理模糊、开放性的指令。
极高的成本:训练和推理成本天文数字,通常仅通过API提供服务,或由超大型企业用于内部核心业务。
典型使用场景:
前沿科学研究:辅助科学家进行科学发现、文献综述和假设生成。
超高难度内容创作:创作长篇小说、影视剧本、复杂的商业分析报告等。
颠覆性产品应用:作为下一代AI产品的核心大脑,处理前所未有的复杂任务。
为了方便选择,这里提供一个直接的指南:
| 你的身份/需求 | 推荐级别 | 理由 |
|---|---|---|
| 个人开发者/学生 | 轻量级 (7B及以下) | 硬件门槛低,学习成本低,足以完成大多数个人项目和学习。 |
| 中小企业(追求性价比) | 主力性能级 (13B-34B) | 能力强大,足以应对大多数企业应用,部署成本相对可控。 |
| 大型企业(核心业务) | 高性能级 (~70B) | 性能卓越,满足核心业务对质量和可靠性的高要求,可私有化部署保障数据安全。 |
| 所有企业(通用功能) | 尖端模型API | 无需管理基础设施,直接获得最强大的能力,按使用量付费,灵活高效。 |
| 需要快速响应的场景 | 轻量级 (7B及以下) | 延迟最低,吞吐量高。 |
| 处理复杂、开放性问题 | 尖端模型API | 模型具备最强的理解和推理能力。 |
| 模型级别 | 最小GPU配置 | 内存需求 | 推理速度 | 部署成本 |
|---|---|---|---|---|
| 7B | RTX 4090 (24GB) | 16GB | ⚡⚡⚡⚡ | 💰 |
| 32B | 2×A100 (80GB) | 80GB | ⚡⚡⚡ | 💰💰 |
| 70B | 4×H100 (80GB) | 160GB | ⚡⚡ | 💰💰💰 |
| 910B | GPU集群(32+) | 1.8TB+ | ⚡ | 💰💰💰💰💰 |
| 模型级别 | 最小GPU配置 | 内存需求 | 推理速度 | 部署成本 |
|---|---|---|---|---|
| 7B | RTX 4090 (24GB) | 16GB | ⚡⚡⚡⚡ | 💰 |
| 32B | 2×A100 (80GB) | 80GB | ⚡⚡⚡ | 💰💰 |
| 70B | 4×H100 (80GB) | 160GB | ⚡⚡ | 💰💰💰 |
| 910B | GPU集群(32+) | 1.8TB+ | ⚡ | 💰💰💰💰💰 |
虽然参数量很重要,但并不是参数越多,模型就一定越好。模型的最终能力还取决于:
训练数据的质量与规模:干净、高质量、大规模的数据是训练出优秀模型的基础。
训练方法和架构:例如,MoE(混合专家)架构可以让模型在拥有庞大参数量的同时,实际计算成本更低(如Mixtral 8x7B模型)。
对齐优化:通过RLHF(人类反馈强化学习)等技术让模型更符合人类的价值观和使用习惯。
核心思想:没有“最好”的模型,只有“最适合”的模型。。择合适的模型级别需要在任务需求、预算限制、技术能力之间找到最佳平衡点。建议从具体场景出发,先试用不同级别的模型,再做出决策。
2025-11-08 21:57:49
将MySQL数据库迁移至达梦数据库是国产化替代过程中的常见信创改造需求。达梦数据库提供了多种迁移工具和方法,使得迁移过程可以高度自动化。根据数据量和业务复杂度的不同,迁移工作可以在几十分钟到数小时完成。
| 迁移方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| SQLark百灵连接 | 30GB以下数据量,追求效率的场景 | 图形化操作,几分钟完成,一次成功率90%以上 | 需下载独立工具 |
| DM数据迁移工具(DTS) | 大多数迁移场景,尤其是中小型数据库 | 官方图形化工具,功能全面,向导式操作 | 对大表迁移需特殊处理 |
| 命令行工具(dmfldr) | 超大型数据库,批量数据处理 | 高性能,适合脚本化自动化迁移 | 操作复杂,需手动转换格式 |

MYSQL移植DM8大致有以下步骤:
1.分析待移植系统,确定移植对象。
2.通过数据迁移工具DTS完成常规数据库对象及数据的迁移。
3.对少数数据库对象进行兼容性改写。
4.移植完成后对移植的结果进行校验,确保移植的完整性和正确性。
5.应用系统进行移植、测试和优化。
详见官方迁移文档:
确认版本信息:记录MySQL数据库版本及实例配置,并安装兼容的达梦数据库(推荐DM8)
检查网络与存储:确保迁移机器能同时访问MySQL和达梦数据库,并有足够存储空间
数据备份:务必对源数据库进行完整备份,防止迁移过程中数据丢失
兼容MySQL配置:
|
|
参数名 | 参数值 | 说明 |
|---|---|---|---|
达梦数据库dm8配置 |
case_sensitive |
N |
忽略大小写(需在创建实例时指定) SELECT CASE_SENSITIVE(); -- 结果为1表示大小写敏感,0表示大小写不敏感 |
COMPATIBLE_MODE |
4 |
兼容mysql模式(需在创建实例时指定) |
|
ORDER_BY_NULLS_FLAG |
2 |
兼容mysql模式(需在创建实例时指定) |
|
权限 |
RESOURCE,PUBLIC,SOI,VTI |
授予角色 |
SQLark:从官网(www.sqlark.com)下载
达梦DTS:达梦数据库安装后自带,可在开始菜单中找到
命令行工具:dmfldr(达梦高速数据加载器)
初始化数据库时,不勾选"字符串比较大小写",勾选"VARCHAR类型以字符为单位"
创建相应用户和模式并授权(达梦中一个用户对应一个模式,相当于MySQL的数据库)
对于追求效率的用户,SQLark是最佳选择,能在几分钟内完成30GB左右数据的迁移。
创建迁移任务:在SQLark中点击"数据迁移",选择"仅数据迁移"
连接数据库:从客户端导入或新建MySQL(源库)和达梦(目标库)连接
选择迁移范围:支持全量迁移或指定范围迁移,对大表可单独设置只迁结构不迁数据
环境检查:工具自动检查目标库磁盘空间和参数,按提示解决不通过项
自动化迁移:工具全自动执行迁移,可实时查看进度
迁移校验:完成后查看对象数量和表行数是否一致
达梦自带的DTS工具更适合大多数常规迁移场景。
打开迁移工具
通过"开始"菜单 → "达梦数据库" → "DM数据迁移工具"
创建迁移工程
右键"迁移管理" → "新建工程",输入工程名称
在工程下右键"新建迁移",自定义迁移名称
配置数据源
MySQL源库:选择"MySQL ==> DM"迁移类型
主机名、端口(默认3306)、用户名、密码
指定MySQL驱动包(除DM自带包外需手动提供)
选择要迁移的具体数据库
达梦目标库:
选择迁移对象
审阅并执行迁移
常见的如字段长度不足错误,可在达梦中修改字段长度后,选择"重新迁移出错的对象"。
记录计数比对:在MySQL和达梦中执行SELECT COUNT(*) FROM table_name
抽样数据比对:对关键表抽样查询,对比两边结果是否一致
这是迁移成功的关键环节,需要处理以下差异:
# 原MySQL配置 spring.datasource.url=jdbc:mysql://localhost:3306/db spring.datasource.driver-class-name=com.mysql.jdbc.Driver # 达梦配置 spring.datasource.url=jdbc:dm://localhost:5236/DB?compatible_mode=mysql&clobAsString=true:cite[2] spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver:cite[9]
在达梦数据库中执行以下SQL,并重启数据库:
sp_set_para_value(1,'ENABLE_BLOB_CMP_FLAG',1); sp_set_para_value(2,'COMPATIBLE_MODE',4);:cite[2]
COMPATIBLE_MODE=4 表示部分兼容MySQL模式,可解决很多语法兼容性问题。
Springboot Pagehelper需指定方言:
pagehelper: helperDialect: oracle:cite[2] reasonable: true supportMethodsArguments: true params: count=countSql
自增列赋值报错
GroupBy语法不兼容
中文乱码问题
日期函数不支持
大表迁移超时
解决:分批迁移数据,使用dmfldr工具直接导入,对大表先禁用索引和约束
索引已存在报错
解决:达梦schema内不允许索引名重复,如果之前的建表语句中,同一个表对相同的列建了多个索引,则会出现索引已存在报错,删除其中一个索引即可
字符超出长度报错
解决:达梦默认以字节为长度,实际长度定义并无问题,修改建表语句长度为原先3倍左右即可
关键词冲突
解决:加双引号
参考:https://eco.dameng.com/community/question/ca8b66b801647c1368485b4a1a1062fd
不支持的函数/关键词:
序号 |
mysql |
dm |
1 |
group_concat |
wm_concat |
2 |
date_sub |
INTERVAL必须加单引号 |
3 |
substring_index |
substr |
| 4 |
ignore |
不支持 |
5 |
is not true |
不支持 |
6 |
use index |
不支持 |
7 |
zerofill |
不支持 |
| 8 | after |
不支持 |
参考:
通过以上系统化的迁移方案,可以顺利完成MySQL到达梦数据库的迁移工作。根据数据量和业务需求选择合适的迁移工具,并特别注意应用程序的适配修改,这样才能确保迁移后系统的稳定运行。
MySQL迁移达梦数据库方案示例
xxxx测试环境,需要将已部署产品数据库从mysql迁移至达梦(dm8)数据库,适配信创改造。
产品集 |
产品中文名 |
产品码 |
xxxx目前版本 |
内部适配达梦版本 |
数据库Schema |
迁移进展 |
备注 |
底座 |
xx容器云平台 |
CHEGVA |
2.4.2 |
无需数据库 |
|||
CNDNS |
CNDNS |
1.19 |
1.20 |
chegva |
|||
mysql数据库地址及schema
数据库地址 |
数据库Schema |
实例规格 |
产品说明 |
10.96.110.112 |
chegva |
8C16G |
云平台 |
cndns | |||
序号 |
产品类型 |
产品型号 |
1 |
应用后台操作系统 |
Red Hat Linux |
2 |
数据库后台操作系统 |
Red Hat Linux |
3 |
后台数据库 |
MySQL5.7 |
4 |
应用开发平台 |
JAVA |
5 |
应用开发接口 |
JDBC |
6 |
需要移植的数据库对象 |
表(数据量)、分区表视图 自定义类型触发器、存储过程、函数和其他 |
确认版本信息:记录MySQL数据库版本配置,并使用兼容的达梦数据库(推荐DM8)
检查网络与存储:确保迁移机器能同时访问MySQL和达梦数据库,并有足够存储空间
备份待迁移mysql数据库、备份产品相关配置(如需要)
# 备份chegva数据库 mysqldump -h xxx -u root -p'***' --skip-triggers --skip-lock-tables --complete-insert --skip-extended-insert chegva > ./chegva-2025xxxx.sql
准备迁移工具:
数据迁移工具 DTS:提供了异构数据源之间的评估,迁移和对比功能。DM 数据迁移工具采用向导方式引导用户通过简单的图形化进行兼容性评估操作。
SQLark 百灵连接:支持对 ORACLE、MySQL、PostgreSQL 等主流数据库迁移到达梦数据库进行在线采集评估和自动转化,一键生成源数据库画像,获取源库对象、不兼容对象、大表、大字段表等迁移重难点情况,评估本次迁移需要投入的工作量。SQLark 会根据源库画像,生成合理的迁移策略,为开发者后续进行的自动/手动迁移提供迁移方案参考。
SQLark提供15天免费试用,如未购买,请勿提前安装,以免试用过期
迁移工具使用:
修改产品数据库配置信息,重新部署产品:
修改发布平台应用数据库连接参数为达梦连接配置,关联schema更改为达梦数据库
修改应用k8s集群中deploy、sts、cm、secret中mysql数据库连接配置为达梦数据库
修改应用程序配置文件、连接字符串为达梦数据库配置
白屏:应用控制台页面各组件标签显示正常
黑屏:应用error.log没有持续打印报错
产品发布自动化测试通过
测试平台平台各个组件测试用例能执行成功
应用链路验证成功
切换应用达梦数据库连接配置为mysql连接配置,重新发布应用并验证产品功能
产品集迁移顺序:PASS平台(底座) → 中间件 → 应用核心组件 → 应用扩展组件 → 监控系统
2025-10-27 09:09:04
达梦数据库作为国产数据库的领军产品,其安全机制和权限管理体系达到了B1级安全标准,采用"三权分立"或"四权分立"的安全模型,通过精细化的权限划分和严格的访问控制,将系统权限分散,避免权力过度集中,确保数据库系统的安全性和合规性。
达梦数据库采用了一种重要的安全设计——“三权分立”(安全版本还有“四权分立”),将数据库管理权限划分为系统管理员、安全管理员和审计管理员三个相互独立又相互制约的角色。这种设计符合国家信息安全等级保护要求,特别适用于政府、金融等对数据安全要求严格的场景。
在安全版DM8中,可扩展为四权分立,新增数据库对象操作员(SYSDBO)角色,进一步分离对象管理权限 。四权分立下各角色权限变化:
SYSDBA 权限缩减:仅保留数据库创建、备份、还原等核心管理权限,去除数据操作权限。
SYSSSO 新增:负责数据库对象(表、视图等)的创建与管理,但无数据库维护权限。
SYSSSO与SYSAUDITOR :权限范围与三权分立保持一致。

角色(Role)是将具有相同权限的用户组织在一起的权限集合。达梦通过角色实现权限的批量管理和分配,主要优势包括:
SYSDBA 权限聚合:将多个权限打包为一个角色。
用户分组:相同职能的用户分配相同角色。
动态生效:角色可临时启用/禁用。
这很像给用户分配不同的“职务”和“工作证”。下面这个表格汇总了核心的内置角色,可以快速了解其权限分工。
详见达梦数据库预设角色权限列表:
达梦数据库采用 权限 - 角色 - 用户 三级授权模型,权限验证流程如下:
权限检查顺序:
直接授予用户的权限
用户所属角色的权限(需角色处于启用状态)
PUBLIC角色的公共权限
权限冲突解决:
显式拒绝优先于允许
更细粒度的权限设置优先
了解角色后,关键在于如何将它们赋予用户。这主要通过 GRANT 和 REVOKE 语句实现。
将角色授予用户
GRANT RESOURCE TO user_developer;
如果需要该用户能将此角色转授他人,可以加上 WITH ADMIN OPTION。
GRANT RESOURCE TO user_developer WITH ADMIN OPTION;
直接授予系统权限
如果角色权限不完全匹配需求,可以直接授予精确的系统权限。
GRANT CREATE TABLE, CREATE VIEW TO user_developer;
授予对象权限
对于某个特定表(例如 dmhr.employee)的增删改查权限,需要单独授予。
GRANT SELECT, INSERT, UPDATE, DELETE ON dmhr.employee TO user_developer;
同样,可以使用 WITH GRANT OPTION 允许该用户转授此对象权限。
当需要撤销权限时,使用 REVOKE 语句。
回收角色
REVOKE RESOURCE FROM user_developer;
回收系统权限
REVOKE CREATE VIEW FROM user_developer;
回收对象权限
回收对象权限时,如果当初授权时使用了 WITH GRANT OPTION,回收时通常需要加上 CASCADE 关键字进行级联回收。
REVOKE SELECT ON dmhr.employee FROM user_developer CASCADE;
1、角色创建与授权
-- 创建语法: CREATE ROLE role_name [WITH IDENTIFIED BY password]; -- 授权示例: -- 创建角色 CREATE ROLE finance_role; -- 为角色授权 GRANT SELECT ON finance.accounts TO finance_role; GRANT INSERT, UPDATE ON finance.transactions TO finance_role; GRANT CREATE VIEW TO finance_role; -- 将角色授予用户 GRANT finance_role TO fin_user1, fin_user2;
2、角色启动与禁用
达梦支持动态启用/禁用角色,实现权限的临时调整:
-- 禁用角色(即时生效)
SP_SET_ROLE('finance_role', 0);
-- 启用角色
SP_SET_ROLE('finance_role', 1);
-- 验证角色状态
SELECT * FROM SESSION_ROLES;
3、角色与权限冲突解决
当用户权限来源多样时,达梦按以下规则处理冲突:
显式拒绝优先:明确的REVOKE优先于GRANT
直接权限优先:直接授予用户的权限优先于角色权限
角色启用状态:仅启用状态的角色权限有效
冲突解决示例:
-- 场景设置 GRANT SELECT ON sales.orders TO user1; GRANT sales_role TO user1; -- 该角色有REVOKE SELECT ON sales.orders -- 权限检查结果:user1无SELECT权限(角色中的REVOKE优先)
4、查看角色和权限
-- 查看角色 -- -- 查看角色权限 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE'; -- 查看用户拥有的角色 SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='TEST_USER'; -- 查看权限 -- -- 查看用户拥有的系统权限 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'USER_NAME'; -- 查看用户拥有的角色 SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'USER_NAME'; -- 查看用户拥有的对象权限 SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'USER_NAME'; -- 查看当前用户拥有的权限信息 SELECT * FROM SESSION_PRIVS;
企业级应用建议采用三层权限模型:
基础权限层:通过预定义角色分配基本权限
业务权限层:按业务功能创建自定义角色
特殊权限层:直接为用户分配特定权限

最小权限原则:只授予用户完成其任务所必需的最小权限。
使用角色:尽量将权限打包成角色,然后赋予用户,而非直接授予用户权限。
定期审计:定期检查角色和用户的权限分配情况,及时清理不必要的权限。
流程指挥:敏感操作,关键权限需流程审批。
权限规划先行:设计阶段明确权限分层模型。
持续审计监控:建立权限变更审计机制。
安全增强配置:结合国密算法等安全特性。
定期合规检查:确保符合等保要求。
参考:
2025-10-20 05:21:39
使用SQL客户端连接达梦数据库,主要有命令行工具 DISQL 和图形化工具 DM管理工具 两种方式。具体选择可参考下表:
| 工具类型 | 工具名称 | 主要特点/适用场景 |
|---|---|---|
| 命令行工具 | DISQL | 达梦自带,类似Oracle的SQLPlus,存放于安装路径的/bin/或/tool/目录,适合习惯命令行操作、需执行特定命令(如DESC查看表结构)或自动化脚本的场景。 |
| 图形化工具 | DM管理工具 | 功能强大、操作简单的图形化客户端,适合日常管理、查询数据、视觉化操作。 |
DISQL工具位于达梦数据库安装路径下的bin或tool目录。
基本连接语法:
./disql 用户名/密码@主机地址:端口号
./disql SYSDBA/SYSDBA@localhost:5236
注意:在/bin目录下使用disql时,建议直接在命令中写全连接信息。如果只输入./disql后回车,后续将无法输入端口号(除非使用默认端口5236)。
CONN SYSDBA/SYSDBA@localhost:5236
或 LOGIN 随后根据提示输入服务器地址、用户名、密码及端口号。
自定义服务名=(IP地址:端口号) 例如:DMDB=(192.168.1.100:5236)
./disql SYSDBA/SYSDBA@DMDB
达梦数据库也提供了图形化的DM管理工具(DM Management Studio)。
连接问题排查:
START /path/to/your_script.sql 或 ` /path/to/your_script.sql
在达梦数据库中,创建一个用户时会自动生成一个同名的模式(Schema)作为该用户的默认模式。用户操作自己模式下的对象(如表)时可以不写模式名。查询当前所在模式可以使用:
SELECT SYS_CONTEXT ('userenv', 'current_schema') FROM DUAL;
相关文章:
达梦数据库的SQL命令体系清晰,涵盖了从数据库连接、对象操作到性能分析的各个方面。下面这个表格汇总了最常用的命令,方便快速查阅。
模式(Schema)与用户(User)的关系
在达梦数据库中,一个用户可以拥有多个模式,但一个模式只属于一个用户。当创建一个用户时,系统会默认创建一个与用户名同名的模式作为其默认模式。执行SQL时,如果操作的不是当前用户的模式对象,通常需要在表名前加上模式名,格式为 模式名.表名 。
设置默认(当前)模式的方法
除了在DISQL中手动使用 SET SCHEMA,还可以在应用程序的JDBC连接字符串中直接指定,这可以避免在代码中频繁书写模式名前缀:jdbc:dm://192.168.15.35:5236?schema=TEST2
标识符和字符串的引用
MySQL:表名和字段名可以用反引号(`)引用,字符串可用单引号(')或双引号(")。
达梦:表名和字段名只能使用双引号(") 进行引用(如果包含特殊字符或关键字时)。而字符串必须使用单引号(') 表示。
自增列的定义
MySQL:使用 AUTO_INCREMENT。
达梦:使用 IDENTITY(1,1),例如 id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY 。注意,达梦不支持 AUTO_INCREMENT 关键字,通常使用 GENERATED ALWAYS AS IDENTITY 关键字。
表格列出了常用命令,下面再补充一些关键细节和使用技巧,能让你更好地使用它们。
连接数据库与DISQL工具
DISQL是达梦数据库的命令行交互式客户端工具。连接时,如果密码含有特殊字符,建议用'""'包裹密码,例如:./disql SYSDBA/'"#Sjkdzgm0"'@192.168.23.3:5236 。
成功连接后,可以通过 START 或反引号 ` 来执行外部的SQL脚本文件。使用 SPOOL 命令可以将接下来屏幕上显示的所有内容输出到指定文件,这在生成报告或记录操作日志时非常有用。记得操作结束后用 SPOOL OFF 关闭输出。
掌握对象管理与数据操作
建表时需要注意语法细节,例如,达梦数据库中标识符(如表名、列名)若包含特殊字符或与保留字冲突,需要使用双引号包围。
在执行数据操作时,务必注意事务的提交。可以通过 SET AUTO[COMMIT] 设置是否自动提交。在自动提交为OFF时,执行了INSERT、UPDATE、DELETE等修改数据的操作后,需要显式执行 COMMIT; 提交事务,或者执行 ROLLBACK; 回滚事务,才能使数据修改真正生效或撤销。
分析SQL性能
使用 EXPLAIN 命令是分析SQL语句执行计划、进行性能调优的重要步骤。执行计划采用缩进树形结构展示,读法一般是从内到外,从下到上。需要关注:
-- 查看实例名
select instance_name from v$instance;
-- 查看达梦版本
select * from v$version;
-- 查看达梦有无开启兼容mysql语法
select para_name,para_value,file_value from v$dm_ini where para_name='COMPATIBLE_MODE';
-- 查看用户所有库
SELECT t.name schname, t.id, t.pid, b.name username FROM sysobjects t, sysobjects b WHERE t.pid = b.id AND t.type$='SCH' ;
-- 查看用户所有角色
select grantee,granted_role from dba_role_privs where grantee='chegva';
-- 查看数据库会话
select *from v$sessions;
-- 查看所有索引(当前模式)
SELECT INDEX_NAME, TABLE_NAME, UNIQUENESS FROM USER_INDEXES;
-- 查看其他模式的索引
SELECT * FROM DBA_INDEXES WHERE OWNER = 'schema_name' AND TABLE_NAME = 'table_name';
-- 查看索引的详细定义
SELECT DBMS_METADATA.GET_DDL('INDEX', 'index_name', 'schema_name') FROM DUAL;
-- 查看表的索引
SELECT * FROM USER_INDEXES WHERE TABLE_NAME = 'table_name';
或
SP_TABLEDEF('schema_name', 'table_name');
相关文章: