• [技术干货] 排查RDS for MySQL CPU使用率高的原因和解决方法
    使用云数据库MySQL时,如果您的CPU使用率很高或接近100%,会导致数据读写处理缓慢、无法获取连接、出现报错等,从而影响业务正常运行。解决方法一分析慢SQL日志(如果有)以及CPU使用率指标来定位效率低的查询,再优化查询效率低的语句。查看慢SQL日志来确定是否存在运行缓慢的SQL查询以及各个查询的性能特征(如果有),从而定位查询运行缓慢的原因。查询MySQL日志,请参见慢查询日志。查看华为云关系型数据库实例的CPU使用率指标,协助定位问题。请参见通过Cloud Eye监控。创建只读实例专门负责查询。减轻主实例负载,分担数据库压力。多表关联查询时,关联字段要加上索引。尽量避免用select*语句进行全表扫描,可以指定字段或者添加where条件。解决方法二分析当前数据库运行线程来定位效率低的查询,再通过华为云数据管理服务(Data Admin Service,简称DAS)提供的建议优化这些SQL语句来降低实例的CPU使用率以提升系统效率。连接MySQL实例。具体操作请参见《关系型数据库快速入门》,通过内网和公网连接实例的内容。执行以下命令,查看当前执行操作,定位效率低的查询。show full processlist*************************** 1. row ***************************                   Id: 16193                 User: rdsAdmin                 Host: localhost                   db: NULL              Command: Query                 Time: 0                State: starting                 Info: show full processlist          Memory_used: 16424 Memory_used_by_query: 8208             CPU_time: 294611    Trx_Executed_Time: 0    logical_page_read: 0       disk_page_read: 0     iops_limit_count: 0 *************************** 2. row ***************************                   Id: 16246                 User: root                 Host: ********                   db: test04_1              Command: Query                 Time: 36                State: creating table                 Info: create table test04_1.table_test_7(a int, b varchar(21632))          Memory_used: 151378 Memory_used_by_query: 8208             CPU_time: 128329    Trx_Executed_Time: 0    logical_page_read: 57       disk_page_read: 0     iops_limit_count: 0 *************************** 3. row ***************************                   Id: 16247                 User: root                 Host: ********                   db: test01_1              Command: Query                 Time: 36                State: creating table                 Info: create table test01_1.table_test_7(a int, b varchar(21632))          Memory_used: 151378 Memory_used_by_query: 8208             CPU_time: 127529    Trx_Executed_Time: 0    logical_page_read: 0       disk_page_read: 0     iops_limit_count: 0 *************************** 4. row ***************************                   Id: 16261                 User: root                 Host: ********                   db: test05_1              Command: Query                 Time: 16                State: creating table                 Info: create table test05_1.table_test_6(a int, b varchar(21632))          Memory_used: 151378 Memory_used_by_query: 8208             CPU_time: 150650    Trx_Executed_Time: 0    logical_page_read: 0       disk_page_read: 0     iops_limit_count: 0 *************************** 5. row ***************************                   Id: 16262                 User: root                 Host: ********                   db: test_1              Command: Query                 Time: 14                State: creating table                 Info: create table test_1.table_test_5838(a int, b varchar(21632))          Memory_used: 151376 Memory_used_by_query: 8208             CPU_time: 179596    Trx_Executed_Time: 0    logical_page_read: 0       disk_page_read: 0     iops_limit_count: 0 *************************** 6. row ***************************                   Id: 16266                 User: root                 Host: ********                   db: test02_1              Command: Query                 Time: 8                State: creating table                 Info: create table test02_1.table_test_9(a int, b varchar(21632))          Memory_used: 151378 Memory_used_by_query: 8208             CPU_time: 154582    Trx_Executed_Time: 0    logical_page_read: 0       disk_page_read: 0     iops_limit_count: 0 *************************** 7. row ***************************                   Id: 16269                 User: root                 Host: ********                   db: test03_1              Command: Query                 Time: 6                State: creating table                 Info: create table test03_1.table_test_11(a int, b varchar(21632))          Memory_used: 151378 Memory_used_by_query: 8208             CPU_time: 153918    Trx_Executed_Time: 0    logical_page_read: 0       disk_page_read: 0     iops_limit_count: 0 7 rows in set (0.00 sec)得到需要优化的查询后,您可以使用华为云数据管理服务(Data Admin Service,简称DAS),通过SQL诊断查询,您可获知资源消耗大、执行耗时长、执行次数频繁的SQL语句。可根据诊断建议进行优化,保持数据库性能的稳定性。SQL诊断功能会获取相关表结构和数据分布信息(非原始数据),该信息仅用于诊断逻辑,不会存储到DAS服务器。获取表结构和数据分布信息的过程中,可能会对实例带来额外负载,但对性能影响甚微。SQL诊断历史是唯一存储在DAS服务器上的数据,如果执行删除操作后,也将彻底从服务器上删除。登录到数据管理服务控制台。在顶部菜单栏选择“SQL窗口”>“SQL诊断”,进入SQL诊断页面。图1 SQL诊断-1在SQL诊断页面,单击“新增SQL性能诊断”,新增SQL诊断任务。在新增SQL性能诊断弹出框中,您根据实际需要选择输入SQL语句或者上传SQL文件,然后单击“确定”,完成创建SQL诊断任务。图2 SQL诊断-2图3 SQL诊断-3在SQL诊断列表页面,您可选择“数据库”、“日期范围”单击“搜索”,进行筛选诊断报告。在诊断列表中,您可在“操作”栏查看诊断详情。图4 SQL诊断任务查询在SQL诊断详情页面,您可了解本次诊断任务的基本信息、诊断状态预览、诊断列表,并查看SQL列表中SQL诊断详情内容,获取语句优化建议等信息。图5 SQL诊断详情图6 诊断详情说明:SQL诊断功能会获取相关表结构和数据分布信息(非原始数据),该信息仅用于诊断逻辑,不会存储到DAS服务器。获取表结构和数据分布信息的过程中,可能会对实例带来额外负载,但对性能影响甚微。SQL诊断历史是唯一存储在DAS服务器上的数据,如果执行删除操作后,也将彻底从服务器上删除。
  • [技术干货] 【转载】华为云GaussDB全场景支持全业务,助力政企智能升级
    新基建大潮下,政企智能升级加速进行,数据成为政企智能升级的重要生产要素。相应地,数据服务作为新基建的核心之一,也处在升级进化的加速周期之中。8月12日,华为云TechWave数据库专题日活动中,华为云数据库业务总裁苏光牛、华东师范大学副校长周傲英教授及多位数据库专家畅谈华为云数据库创新升级、融合开放,为政企助力的经验和案例。此次,华为云GaussDB以统一的架构,支持关系型与非关系型的数据库引擎。华为云GaussDB 全新出发云、AI、5G等技术驱动,数据库行业迎来新的需求。依托华为云与华为云Stack,通过全栈软硬件优化,华为云GaussDB以统一的架构,支持关系型与非关系型的数据库引擎,为客户提供了高效稳定的使用体验,并衍生出了包括关系型和非关系型数据库、数据库工具类服务等众多数据库产品。在关系型的数据库领域,华为云GaussDB(openGauss)基于openGauss生态持续发展。而GaussDB(for MySQL)则100%兼容MySQL等开放生态,便于应用迁移和开发,保护客户投资。针对非关系型数据库领域,华为云推出GaussDB NoSQL多模融合技术,支持MongoDB、Cassandra、Redis、InfluxDB等主流NoSQL协议接口,具备多模数据管理能力。华为云数据库业务总裁苏光牛华为云数据库业务总裁苏光牛表示:“客户可以通过华为云数据库在线迁移数据,任意选择业务的切换时间点,让上云、多云更加容易。华为将通过持续的技术创新和生态开放的理念,让华为云GaussDB成为企业智能升级的数据库首选。”服务500+政企客户,助力千行百业目前,华为云数据库产品已经服务了超过500家大型政企客户,遍布金融、政府、电信、能源、交通、物流、电商等行业。针对政企客户大规模、高并发的应用场景,华为云GaussDB(for MySQL)产品定义围绕高可用、高可靠、高性能、高扩展和便于运维五大方向展开。华为云数据库产品总监张昆以华为消费者云业务为例:“GaussDB(for MySQL)支撑华为手机全国超过上亿客户同时访问的业务,凭借超强的技术沉淀和对业务的特别对应功能,保障世界级迁移云任务的安全与可靠。”由此可见,GaussDB(forMySQL)足以满足各种严酷的企业级场景。非关系型数据库GaussDB NoSQL基于GaussDB的计算存储分离的架构创新,对于性能、成本、HA、扩容性、备份恢复等多种指标都有质的飞越。在制造业上云的过程中,需要满足大规模高频词的数据录入和调取。以汽车制造商江淮为例,面对每秒百万级别的高并发真实车联网业务场景,在成本不变的基础上,GaussDB NoSQL可以实现三倍以上的性能提升,助推制造业云化转型。而在互联网行业中,日常巨量访问成为刚需。国家测绘地理信息局建设的地理信息综合服务网站“天地图”为多种主流地图App和政企地图提供实时地图信息,使用了华为云基于新架构的GaussDB NoSQL产品成功上云后,备份性能20+倍提升,数据恢复7+倍提升,为每天查询地图、导航保驾护航。同样,对于游戏、互联网服务、电商、运营商等数据库服务典型行业,华为云GaussDB也能够根据具体场景,给出符合实际需求的产品组合,提供安全的云上业务转型体验。数据库管理服务定制优化针对政府和企业在数据库产品应用中的需求,华为云数据库管理服务DAS有针对性地开发了标准版、云DBA、企业版三款产品。华为云数据库管理服务DAS首席架构师郭寿敏介绍,标准版是面向开发人员设计的数据库管理服务产品,具有操作界面可视化、功能特性丰富的特点,能满足每一个开发者的数据库使用需求。而云DBA工具是专属的数据库运维平台,能够快速发现问题,并自动给出诊断及优化建议,帮助用户快速根除隐患。企业版数据库DevOps平台专注企业的数据信息安全保护,提升与DBA的协作效率,节约大规模数据库的管理成本,适合企业级用户使用。总的来说,标准版具有快速、高效、简单、易上手的特点。而企业版在此基础上拥有更强大的安全性和稳定性,有很强的抗风险能力。正如郭寿敏所说,华为云数据管理服务DAS的升级和推出,开启了云上便捷数据库管理新篇章。此外,华为在会上还介绍了GaussDB数据库的认证体系。华为认证架构师陈睿提到,发展鲲鹏计算产业,当前存在着缺少赋能和职业成长体系,开发人才稀缺的困境。GaussDB推出的面向数据库工程师的HCIA-GaussDB认证,以及面向关系型数据库的OLTP方向和OLAP方向认证,旨在帮助孵化生态开发者。华为云GaussDB数据库的全新升级是数据库行业自身快速发展的又一个里程碑。在整个科技领域快速向前的加速周期中,华为云GaussDB再次指引了数据库行业的发展方向。在新基建大潮中,华为云乘风破浪,以全新的GaussDB数据库赋能千行百业智能升级。
  • [行业资讯] SQL数据库介绍
    SQL数据库        SQL (Structured Query Language) 是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。SQL语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,SQL可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。 SQL Server数据库包括Microsoft SQL Server以及Sybase SQL Server两个子数据库,该数据库能否正常运行直接关系着整个计算机系统的运行安全。简介        在大数据时代中,数据库系统的数据类型与规模在不断扩增,这给数据库管理带来了一定的挑战。在社会生产生活中,对于数据库的应用范围逐步增大,提升数据库开发及应用的效率,是保障我国社会生产生活高效运转的关键。        SQL作为一种操作命令集, 以其丰富的功能受到业内人士的广泛欢迎, 成为提升数据库操作效率的保障。SQL Server数据库的应用,能够有效提升数据请求与返回的速度,有效应对复杂任务的处理,是提升工作效率的关键。        由于SQL Servers数据库管理系统具有较高的数据管理性能,因其优越的性能,应用范围非常广,大量应用于服务器和客户体系结构中。SQL Servers数据库的性质主要由以下几个方面体现:系统的吞吐量、响应时间以及并行处理能力, 发出请求服务器回应的速度、还有不同屏幕之间切换的速度等等。优点1)非过程化语言2)统一的语言3)是所有关系型数据库的公共语言体系SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(base table);存储模式(内模式)称为“存储文件”(stored file);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。组成1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。3.一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。5.用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。为什么要使用数据库        因为使用io流文件存储数据有很多弊端:1、文件存储数据存储效率低;2、不管存还取操作比较麻烦3、一般只能保存小量字符串数据等。为了解决这些弊端,才有数据库的出现,使用数据库存储数据就可以很好的解决这些弊端。数据库的分类关系型数据库: 经过数学理论验证 可以保存现实生活中的各种关系数据, 数据库中存储数据以表为单位;非关系型数据库:通常用来解决某些特定的需求如:数据缓存,高并发访问。 存储数据的形式有多种,举例:Redis数据库:通过键值对的形式存储数据;主流关系型数据库简介MySQL: 08年被sun公司收购09年sun被oracle收购,开源免费,到oracle发布了5.0版本(使用了oracle核心技术 性能提高30%),因为Oracle数据库地位受到威胁,计划把mysql闭源,原mysql作者们不干了,原程序员出去单干,发布了MariaDB数据库、名字是因为作者女儿叫Maria ,市场排名第一;Oracle:闭源、最贵、性能最高,市场排名第二;SQLServer:微软公司的产品,市场排名第三,主要应用在.net(C#)开发的网站中;DB2:IBM公司有做网站的完整解决方案(操作系统,we服务器(如tomcat),数据库等)主要应用在银行等国有大型企业中;sqlite:轻量级数据库,只有几十k,一般应用在嵌入式和移动设备中;
  • 华为云GaussDB进阶全场景支持全业务,助力政企智能升级
    华为云GaussDB引领数据库新方向       新基建大潮下,政企智能升级加速进行,数据成为政企智能升级的重要生产要素。相应地,数据服务作为新基建的核心之一,也处在升级进化的加速周期之中。       8月12日,华为云TechWave数据库专题日活动中,华为云数据库业务总裁苏光牛、华东师范大学副校长周傲英教授及多位数据库专家畅谈华为云数据库创新升级、融合开放,为政企助力的经验和案例。此次,华为云GaussDB以统一的架构,支持关系型与非关系型的数据库引擎。 华为云GaussDB 全新出发       云、AI、5G等技术驱动,数据库行业迎来新的需求。依托华为云与华为云Stack,通过全栈软硬件优化,华为云GaussDB以统一的架构,支持关系型与非关系型的数据库引擎,为客户提供了高效稳定的使用体验,并衍生出了包括关系型和非关系型数据库、数据库工具类服务等众多数据库产品。       在关系型的数据库领域,华为云GaussDB基于openGauss生态持续发展。而GaussDB(for MySQL)则100%兼容MySQL等开放生态,便于应用迁移和开发,保护客户投资。针对非关系型数据库领域,华为云推出GaussDB NoSQL多模融合技术,支持MongoDB、Cassandra、Redis、InfluxDB等主流NoSQL协议接口,具备多模数据管理能力。华为云数据库业务总裁苏光牛       华为云数据库业务总裁苏光牛表示:“客户可以通过华为云数据库在线迁移数据,任意选择业务的切换时间点,让上云、多云更加容易。华为将通过持续的技术创新和生态开放的理念,让华为云GaussDB成为企业智能升级的数据库首选。” 服务500+政企客户,助力千行百业       目前,华为云数据库产品已经服务了超过500家大型政企客户,遍布金融、政府、电信、能源、交通、物流、电商等行业。       针对政企客户大规模、高并发的应用场景,华为云GaussDB(for MySQL)产品定义围绕高可用、高可靠、高性能、高扩展和便于运维五大方向展开。华为云数据库产品总监张昆以华为消费者云业务为例:“GaussDB(for MySQL)支撑华为手机全国超过上亿客户同时访问的业务,凭借超强的技术沉淀和对业务的特别对应功能,保障世界级迁移云任务的安全与可靠。”由此可见,GaussDB(forMySQL)足以满足各种严酷的企业级场景。        非关系型数据库GaussDB NoSQL基于GaussDB的计算存储分离的架构创新,对于性能、成本、HA、扩容性、备份恢复等多种指标都有质的飞越。        在制造业上云的过程中,需要满足大规模高频词的数据录入和调取。以汽车制造商江淮为例,面对每秒百万级别的高并发真实车联网业务场景,在成本不变的基础上,GaussDB NoSQL可以实现三倍以上的性能提升,助推制造业云化转型。        而在互联网行业中,日常巨量访问成为刚需。国家测绘地理信息局建设的地理信息综合服务网站“天地图”为多种主流地图App和政企地图提供实时地图信息,使用了华为云基于新架构的GaussDB NoSQL产品成功上云后,备份性能20+倍提升,数据恢复7+倍提升,为每天查询地图、导航保驾护航。        同样,对于游戏、互联网服务、电商、运营商等数据库服务典型行业,华为云GaussDB也能够根据具体场景,给出符合实际需求的产品组合,提供安全的云上业务转型体验。 数据库管理服务定制优化        针对政府和企业在数据库产品应用中的需求,华为云数据库管理服务DAS有针对性地开发了标准版、云DBA、企业版三款产品。       华为云数据库管理服务DAS首席架构师郭寿敏介绍,标准版是面向开发人员设计的数据库管理服务产品,具有操作界面可视化、功能特性丰富的特点,能满足每一个开发者的数据库使用需求。而云DBA工具是专属的数据库运维平台,能够快速发现问题,并自动给出诊断及优化建议,帮助用户快速根除隐患。企业版数据库DevOps平台专注企业的数据信息安全保护,提升与DBA的协作效率,节约大规模数据库的管理成本,适合企业级用户使用。        总的来说,标准版具有快速、高效、简单、易上手的特点。而企业版在此基础上拥有更强大的安全性和稳定性,有很强的抗风险能力。正如郭寿敏所说,华为云数据管理服务DAS的升级和推出,开启了云上便捷数据库管理新篇章。        此外,华为在会上还介绍了GaussDB数据库的认证体系。华为认证架构师陈睿提到,发展鲲鹏计算产业,当前存在着缺少赋能和职业成长体系,开发人才稀缺的困境。GaussDB推出的面向数据库工程师的HCIA-GaussDB认证,以及面向关系型数据库的OLTP方向和OLAP方向认证,旨在帮助孵化生态开发者。        华为云GaussDB数据库的全新升级是数据库行业自身快速发展的又一个里程碑。在整个科技领域快速向前的加速周期中,华为云GaussDB再次指引了数据库行业的发展方向。在新基建大潮中,华为云乘风破浪,以全新的GaussDB数据库赋能千行百业智能升级。图/文转载自华为云公众号
  • [其他] 【异常sql】找到占用CPU过高的sql语句
    问题描述gaussdb进程持续占CPU过高,需找到占用CPU过高的sql语句问题处理找一个gaussdb进程,确认进程号和对应dn的端口号(进程号32089)执行ps H -eo pid,tid,pcpu | sort -n -k 3 | grep 32089,可以查到进程内各个线程占用CPU的情况最后几条结果如下:32089    48369    81.932089    41335    82.332089    10596    85.6连续执行多次,发现占用CPU高的线程没有变过连接到此dn(注意端口号搞对)select query_id from pg_thread_wait_status where lwtid = 10596;查到query_id 为95174458select * from pg_stat_activity where query_id = 95174458;即可查到对应语句和客户业务侧确认,该语句是临时新增业务,不是跑批业务,杀掉该语句进行规避,业务侧进行语句优化或者业务流程调整
  • [技术干货] 数据库学习路线
    第1部分:入门    1)了解数据库的基本概念  ->通俗的将就是明白数据库的用途,在开发中充当什么角色    2)如何安装数据库?          -> 工欲善其事必先利其器 安装数据库   根据不同的项目环境使用不同的数据库来管理数据会起到事半工倍的效果(在我主页查看数据库的安装)    3)表的创建、删除和更新       4)数据的插入、删除和更新数据第2部分:简单查询    1)基本的查询语句  库的操作  再到表的操作    2) 如何指定查询条件?    3)注释和 SQL 语句注意事项    4)学会运算符指定复杂的查询条件    5)字符串模糊查询    从零学会SQL:简单查询  (当然大佬就当消遣)第3部分:汇总分析    1)如何进行汇总分析?    2)如何对数据分组?    3)如何对分组结果指定条件?    4)用 SQL 解决业务问题的套路是什么?    5)如何对查询结果排序?    6)如何看懂 SQL 报错信息?第4部分:复杂查询    1)视图(什么是视图,如何使用,有什么用,注意事项)    2)子查询、标量子查询、关联子查询    3)各种常用函数第5部分:多表查询在有多张表的情况下,表和表之间的运算和联系就变得很重要,这部分学习多个表如何查询:    1)表的加法    2)联结,包括交叉联结、内联结、左联结、右联结、全联结    3)一张图记住各种联结    4)联结应用案例    5)case表达式第6部分:求职面试题  这里在另一篇帖子(点我主页查看)第7部分:检验SQL的学习效果在SQL练习平台sqlzoo中将习题做一遍,不仅是检验前面的学习效果,更是通过实践加强熟悉前面的知识。这里不能偷懒,一定要将每一道提做一遍,只有理解和代码量上的去,才能
  • [其他] 【故障】【ccn】作业执行时,如果出现执行不动的情况,查看wait_status,发现大量在wait ccn
    GaussDB是一个内存自适应的数据库,会自动根据全局内存的负载情况,来对每个语句进行仲裁,当当前资源合理的情况下,才会让语句下发并执行,如果在资源不足的情况下,就不让他继续执行,等到资源充足才进行执行,避免会出现比如内存占用过大,导致进程OOM之后异常退出之类的情况。有时候会出现一种情况,就是大量作业都提交了没有结果,表现出的现象就是业务完全不执行,所有作业都卡住,此时可以这样检查一下:1)show enable_dynamic_workload;    如果结果为on,就继续按照下面步骤处理,如果为off,需要参照其他处理办法。2) 查看当前作业的状态,判断是在排队,还是阻塞:select coorname,pid,sysdate - query_start as dur,enqueue from pgxc_stat_activity where state = 'active' order by 3,4;结果示例:可以看到很多的作业都在排队,状态是 waiting in queue,或者还有版本不同时,enqueue字段会显示为 wait in  ccn queue此时就可以判断,是否是有语句占用了资源,并且不释放,导致发生了阻塞,比如上图中,红框中的几个语句,都已经在执行状态,没有排队,并且已经执行了10h+没有结束,根据pid我们可以看到语句的详细情况,是否复杂,是否已经卡住,这些语句就是导致所有作业都执行不动的罪魁祸首。处理方法:1)将对应已经hang住的语句清理掉,可以使用如下方式,连接到数据库对应语句下发的节点,上图为cn_5001,执行pg_terminate_backend(pid)2)再次观察作业排队状态:还是上面的语句,查看是否还是在waiting in queue的状态。3)如果排队已经迅速减少,就说明资源已经释放,其余作业已经可以正常运行。PS:如果想保留定位信息,可以在清理语句之前,连接到ccn节点,查询视图:select * from pg_stat_get_workload_struct_info();将其打印到一个文件中,这里可以看到具体的内存使用情况,包括总体内存 freesize_limit,以及当前在运行的语句Central Running Number中对应的memsize[xxxxx],可以判断所有Running状态的memsize加起来是否已经接近freesize_limit。
  • [其他] 【总结】【性能】DWS中sql性能差的问题定位方法
    A. 背景:客户在使用DWS时,经常会出现执行一个sql很久不返回结果,导致业务性能低下,从而报障。现象:一个业务sql执行很久不出结果定位方法:DWS在经常变化的表需要定期做统计优化查询,具体场景如下:1 经常变化的表,如果经常insert语句到表中,需要做analyze 表,具体语句为Analyze tablename;2 经常变化的表,如果经常删除delete数据,需要做valcumm full 表,具体语句为Valcumm full tablename 注:执行valcumm full 语句时注意不能有其他任务在跑。 注:定位技巧:查询表大小select * from pg_size_pretty(pg_table_size('tablename'));详情请点击博文链接:https://bbs.huaweicloud.com/blogs/171920
  • [技术干货] SQL Server内存管理小知识
    今天和大家聊一聊SQL server的内存管理,说之前我们需要先提出一个问题,SQL Server到底是如何使用内存的?弄清楚如何使用之后,才能谈如何管理。简单说,SQL Server 数据库的内存使用原则是有多少内存就会占用多少内存,不会自动释放内存。原因是它的存储引擎本身是一个Windows下的进程,所以在使用内存时和其它Windows进程是一样的,都要向Windows申请内存,申请到内存之后,SQL Server的内存使用可以粗略地分为两个部分:一是缓冲池内存,被数据页和空闲页占用;二是非缓冲内存,被线程、DLL、链接服务器等占用。其中缓冲池内存占大头。这样会有什么问题呢?打个比方,如在执行一条结果集很大的 sql 时,数据查询取出后,会一直占用内存,直到机器内存被占满(并不会撑爆,因为可以通过图去限制最大内存,一般占满后仍然比服务器机器内存稍小),在重启数据库服务前,SQL Server不会主动释放该内存,也没有任何办法可人为释放,一直占用到 max server memory 的设定值,因此查看 SQL Server的内存基本使用率相对较高(80%以上)。 那怎么解决呢?最直接的办法是:人为修改最大可占用物理内存进行限制。方法一:缓冲池所占内存是通过下图1最大服务器内存和最小服务器内存来设置的,因此sqlservr.exe所占的内存(如图2)有可能会大于图1中所设置的最大内存。管理员用户登录数据库客户端(Microsoft SQL Server Management Studio),在实例名(树形菜单根节点,显示登录名那栏)上右键,选择属性-->内存,设置“最大服务器内存”即可根据实际情况调整内存(单位为MB),如调整到当前总的服务器内存的 70%左右使用率。图1 SQL Server可控制内存选项图2 SQL Server 进程内存使用情况方法二:如果使用的是华为云RDS SQL Server ,那解决方法就更加简单了,只需要到控制台实例管理中修改最大内存(max server memory)参数值即可,且修改完该参数不需要重启数据库,不得不说云数据库使用起来更加便捷清晰,更多华为云RDS SQL Server的使用可参考官方文档:https://support.huaweicloud.com/rds/index.html 
  • [问题求助] sql
    如何避免sql注入?
  • [其他] 【总结】【优化】利用存储过程(函数)屏蔽查询时的报错处理,来简化业务的设计
    原始的问题:通过pg_table_size这个查询接口,对于不存在的表会返回NULL或者报错(不同版本行为)在执行pg_table_size查询表大小时,可能出现报错:could not open relation with OID xxxx解决方法:通过Function的exception方式屏蔽该报错,将大小统一到一个值,对于不存在的表,可以用大小为-1来表示,函数如下CREATE OR REPLACE FUNCTION public.pg_t_size(tab_oid OID,OUT retrun_code text) RETURNS text LANGUAGE plpgsql AS $$ DECLARE   v_sql text;  ts text;   BEGIN   V_SQL:='select pg_size_pretty(pg_table_size('||tab_oid||'))';   EXECUTE IMMEDIATE V_SQL into ts;   IF ts IS NULL    THEN RETRUN_CODE:=-1;   ELSE     return ts;   END IF;  EXCEPTION   WHEN OTHERS THEN   RETRUN_CODE:=-1;  END$$;结果:
  • [技术干货] 华为云RDS for MySQL入门
                华为云RDS for MySQL入门1.用户注册登录www.huaweicloud.com或点我跳转2.实例创建   3.操作步骤登录管理控制台。 ----》 云数据库单击管理控制台左上角的定位图标,选择区域和项目。选择“数据库 > 云数据库 RDS”。进入云数据库 RDS信息页面。在“实例管理”页面,单击“购买数据库实例”。在“服务选型”页面,选择计费模式,填写并选择实例相关信息后,单击“立即购买”。4.实例管理5.备份恢复  支持物理备份和逻辑备份两种方式,每天定时执行一次全量物理备份,同时每5分钟进行一次逻辑增量备份,备份存留时间可自定义。可以通过这些备份恢复到数据库的任意时间点。并能够根据备份文件快速创建备实例或只读实例。6.性能监控15个资源监控项,34个数据库监控项,自定义告警规则,能够监控整个实例集群的一举一动。7.DASDAS-标准版:SQL可视化8.数据迁移1.在线迁移支持通过多种网络链路,实现跨云平台数据库迁移、云下数据库迁移上云或云上跨Region的数据库迁移等多种业务场景特点:通过增量迁移技术,能够最大限度允许迁移过程中业务继续对外提供使用,有效的将业务系统中断时间和业务影响最小化,实现数据库平滑迁移.上云。2.数据同步数据同步在决然不同的系统之间实现关键业务数据的实时流动,不同于迁移,迁移数据库以整体搬迁为目的,同步是维持不同业务系统之间数据的持续流动,常见的场景是:实时分析、报表系统、数仓环境。特点:聚焦在表和数据,并满足多种同步灵活性的需要,如多对一,一对多,不同表名之间同步数据等3.多活灾备通过异地近实时的数据同步可以实现跨区,跨云,本地和云、混合云之间数据库形成灾备关系,提供一键主备切换、 数据比对、时延监控、数据补齐等容灾特性支持容灾演练、真实容灾等场景,支持主从灾备、主主灾备多种灾备架构。特点:异地远距离传输优化,围绕灾备提供特性,不同于业界基于简单的数据同步形成方案4.数据订阅获取数据库中的关键业务的数据变化信息常常是下游业务所需要的,数据订阅将这类信息缓存并提供统一的SDK接口,方便下游业务订阅、获取、并消费,从而实现数据库和下游系统解耦,业务流程解耦。常见的场景: kafka 订阅MySQL增量数据The end:更多相关资料欢迎查询华为云官方帮助文档:帮助文档
  • [技术干货] SQL工程师被疯抢,华为云做了什么?
    数据库好比人的大脑的记忆系统,没有了数据库就没有了记忆系统。计算机也就不会如此迅速的发展。数据库的应用已经深入到生活和工作的方方面面。So,华为云特别推出了【MySQL实战营】构建数据管理能力前500位可免费入营~一起pick下众所周知,MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),因为其速度、可靠性和适应性而备受关注。课程适合人群本次课程适合想要了解数据库管理的开发者2报名时间、费用报名截止时间:7月14日截止报名费用:前500位报名可获得华为代金券,可抵消全部学费~ 还在等什么?快快扫描二维码报名课程▼▼▼下方报名:华为云MySQL为何强大完全托管即开即用,完全托管软硬件部署、补丁升级、自动备份、监控告警、弹性扩容、故障转移等功能。不需要额外的安装和维护工作。 超高性能在业务高并发场景下,内核线程优化特性确保业务性能稳定,解决社区版因高并发资源消耗过大导致性能下降问题。 数据可靠在业务高负载情况下,社区版主备延时较大;业界领先的内核隐式增加主键功能,并行高速复制下主备延时≈0,保证数据不丢失。 高速扩展业务流量突发情况下,几分钟可完成存储1TB的只读实例扩展,轻松应对流量高峰。 备份恢复用户自定义备份策略,备份和恢复时间最长可达732天。 超大存储实例创建最大支持6TB,在线扩容最大存储可达10TB。
  • [技术干货] 浅谈Hive on Spark 与 Spark SQL的区别
    转载至华为云社区【摘要】 Hive On Spark大体与Spark SQL结构类似,只是SQL引擎不同,但是计算引擎都是Spark。将Spark作为计算引擎,性能会比传统的MapReduce快很多。华为云DLI服务全面兼容Spark能力,DLI SQL在封装Spark SQL的同时,集成了carbon和carbondata的全部功能,同时兼容传统的DataSource和hive语法建表,支持跨源访问多个服务的数据,增强了    Hive on Spark是由Cloudera发起,将Hive的查询作为Spark的任务提交到Spark集群上进行计算。通过该项目,可以提高Hive查询的性能,同时为已经部署了Hive或者Spark的用户提供了更加灵活的选择,从而进一步提高Hive和Spark的普及率。Hive on Spark是一个Hive的发展计划,该计划将Spark作为Hive的底层引擎之一,也就是说,Hive将不再受限于一个引擎,可以采用Map-Reduce、Tez、Spark等引擎。而Spark SQL的前身是Shark,是给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,其对Hive有太多依赖(如采用Hive的语法解析器、查询优化器等),2014年Spark团队停止对Shark的开发,将所有资源放Spark SQL项目上。Spark SQL作为Spark生态的一员继续发展,而不再受限于Hive,只是兼容Hive。 在分析区别之前,先看一下SQL语句通用解析执行过程:    语法解析: 对读入的SQL语句进行解析(Parse),分辨出SQL语句中哪些词是关键词(如SELECT、FROM、WHERE),哪些是表达式、哪些是Projection、哪些是Data Source等,从而判断SQL语句是否规范,形成一个语法树;    操作绑定: 将SQL语句和数据库的数据字典(列、表、视图等等)进行绑定(Bind),如果相关的Projection、Data Source等都是存在的话,就表示这个SQL语句是可以执行的;    策略优化:语法树中的每个节点是执行的rule,整棵树称之为执行策略。形成上述的执行策略树的执行策略可以进行优化(包括逻辑优化、生成物理计划和物理优化),所谓的优化就是对树中节点进行合并或是进行顺序上的调整,进而选择一个最优计划(Optimize),最终生成一棵任务树(Task Tree);    计划执行:依次执行(Execute)任务树中的各个Task,并将结果返回给用户。每个Task按照不同的实现,会把任务提交到不同的计算引擎上执行。    Hive on Spark总体的设计思路是,尽可能重用Hive逻辑层面的功能,从生成物理计划开始,提供一整套针对Spark的实现,比如Spark Compiler、Spark Task等,这样Hive的查询就可以作为Spark的任务来执行了。其设计的动机和主要原则有:1、  Hive on Spark尽可能少改动Hive的代码,从而不影响Hive目前对MapReduce和Tez的支持,以及在功能和性能方面的影响;2、  对于选择Spark的用户,应使其能够自动的获取Hive现有的和未来新增的功能,如数据类型、UDF、逻辑优化等;3、  尽可能降低维护成本,保持对Spark依赖的松耦合,不做专门针对spark引擎,而对其它引擎有影响的改动。    Spark SQL是spark套件中一个模板,它将数据的计算任务通过SQL的形式转换成了RDD的计算,类似于Hive通过SQL的形式将数据的计算任务转换成了MapReduce。Spark SQL的特点有:    1、和Spark Core的无缝集成,可以在写整个RDD应用的时候,配置Spark SQL来完成逻辑实现;    2、统一的数据访问方式,Spark SQL提供标准化的SQL查询;    3、Hive的继承,Spark SQL通过内嵌的hive或者连接外部已经部署好的hive案例,实现了对hive语法的继承和操作;    4、标准化的连接方式,Spark SQL可以通过启动thrift Server来支持JDBC、ODBC的访问,将自己作为一个BI Server使用。  总结:Hive On Spark大体与Spark SQL结构类似,只是SQL引擎不同,但是计算引擎都是Spark。将Spark作为计算引擎,性能会比传统的MapReduce快很多。华为云DLI服务全面兼容Spark能力,DLI SQL在封装Spark SQL的同时,集成了carbon和carbondata的全部功能,同时兼容传统的DataSource和hive语法建表,支持跨源访问多个服务的数据,增强了易用性,降低了使用门槛,同时避免了数据搬迁,从而实现高效的数据处理和检索。参考链接:Spark SQL: https://spark.apache.org/sql/Hive on Spark : https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started#HiveonSpark:GettingStarted-DesigndocumentsApache Spark源码走读之11 -- sql的解析与执行: https://www.cnblogs.com/hseagle/p/3752917.html
  • [技术干货] 【转载】用GaussDB合理管控数据资源的几点心得
    一、摘要项目交付中可能会遇到同时包含核心交易(OLTP)和报表分析(OLAP)的混合业务场景,其中报表分析类业务复杂度高,消耗大量系统资源,但实时性要求较低,而核心交易类业务并发较大,多为简单事务处理,对实时性要求高。当系统处于业务高峰时,报表分析类业务并发操作会加剧系统负载,且长时间占用资源无法释放,最终可能导致整体性能裂化,实时性要求较高的核心交易类业务因资源争抢而无法得到响应,从而影响客户整体体验。资源管控的目的是基于业务场景和可用资源,进行合理的资源与并发度管控,以保障数据库可以在高负载场景下正常运行,不会因为资源争抢和耗尽出现系统卡死,提升系统整体吞吐量。二、场景分析如上图所示,业务场景主要分为核心交易(OLTP)和报表分析(OLAP)两大类,其中报表服务的优先级相对较低,在合理的情况下优先保障业务系统的正常运行。业务系统中运行的SQL分为简单SQL和复杂SQL,大量复杂SQL的并发执行会导致数据库服务器资源争抢,简单SQL的大量并发对服务器不构成持续压力,短时间内可执行完成,不会造成业务堆积。其中报表服务中运行的SQL以复杂SQL居多,整体业务逻辑相对复杂,在数据库层面需要分别对核心交易和报表服务进行合理的资源管控,以保障业务系统正常运行。三、方案规划(一) 静态资源池规划静态资源池可以控制数据库能使用服务器资源的上限,由于服务器操作系统运行也需要消耗一定的资源,因此预留一定的服务器资源来保障操作系统的正常运行。推荐静态资源池配置:数据库分配93% CPU资源和70% 内存资源。这样可以保证服务器能够正常响应系统请求。静态资源池分配93% CPU资源和70% 内存资源。(二) 交易用户和报表用户分离报表分析类业务的优先级和实时性相对较低,但是复杂度更高,为有效进行资源管控,将报表分析和核心交易业务进行数据库用户分离,例如核心交易业务使用数据库用户budget_config_user,报表分析业务使用数据库用户report_user。针对交易用户和报表用户分别进行CPU资源和并发数控制以保障数据库稳定运行。结合报表分析业务的负载调研、日常监控和测试验证,20并发以内的复杂报表SQL不会引起服务器资源争抢,不会引起业务系统卡慢,因此配置报表用户最多使用20%的CPU资源。结合核心交易业务的的负载调研、日常监控和测试验证,50并发以内的复杂SQL不会对系统造成持续压力,整体CPU负载小于60%。交易用户分配60%的CPU配额和50并发。报表用户分配20%的CPU限额和20并发。其中CPU配额是指占用CPU时间片的百分比。若分配给某个用户的CPU配额资源未使用,系统会自动将这些资源共享给其他用户。CPU限额是指用户可以使用的CPU核数的百分比。系统会将百分比换算成具体的核数供用户使用,且用户可使用的CPU限额资源不超过通过百分比换算的核数范围。(三) 并发管控阈值设置资源管控的并发控制是基于SQL的cost值(SQL执行代价)来评估,结合客户场景、硬件配置和SQL测试分析,当SQL的cost值小于1000时,SQL并发对服务器不构成持续压力,短时间内可执行完成,不会造成业务堆积。当SQL的cost值大于1000时,大量并发会导致服务器资源争抢,引起系统卡慢。因此将受控SQL的cost的临界值设置为1000。当SQL的cost值大于1000时受资源管控的并发度控制,当SQL的cost值小于1000时不受资源管控的并发度控制。区分SQL复杂和简单的cost值设置为1000四、实施方案(一) 配置静态资源池登录运维管理页面,配置静态服务池,设置cpu为93%,内存为70%(二)  数据库用户分离创建交易用户(budget_config_user)和报表用户(report_user)。(三)  配置cgroup使用omm用户登录数据服务器,执行如下命令设置CPU配额:source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile gs_ssh -c "gs_cgroup -c -S class1 -s   60" gs_ssh -c "gs_cgroup -c -S class1 -G wg1 -g   99" gs_ssh -c "gs_cgroup -c -S class2 -s 20   " gs_ssh -c "gs_cgroup -u -S class2 -s 20   --fixed" gs_ssh -c "gs_cgroup -c -S class2 -G wg2 -g   99 "(四) 创建资源池并绑定cgroup使用omm用户登录数据库服务器,执行如下命令设置并发管控:source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile gSQL -d postgres -p 25308 -c "create   resource pool rp1 with   (mem_percent=0,active_statements=50,control_group='class1:wg1');” gSQL -d postgres -p 25308 -c "create   resource pool rp2 with (mem_percent=0,active_statements=20,control_group='class2:wg2');"(五) 用户绑定资源池使用omm用户登录数据库服务器,执行如下命令将用户绑定资源池:source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile gSQL -d postgres -p 25308 -c "alter user budget_config_user   resource pool 'rp1';" gSQL -d postgres -p 25308 -c "alter user report_user resource   pool 'rp2';"(六) 修改数据库参数并重启生效使用omm用户登录数据库服务器,执行如下命令修改数据库参数:source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile gs_guc reload -Z coordinator -Z datanode -N all   -I all -c "parctl_min_cost=1000" gs_guc set -Z coordinator -Z datanode -N all -I   all -c "enable_dynamic_workload=off" cm_ctl stop cm_ctl start五、资源管控测试验证(一) 测试SQL样例select count(1) from p#fasp_t_glctrl122299 a,p#fasp_t_glctrl122299   b;打印执行计划如下,cost值大于1000,已按方案设置资源管控的并发控制阈值cost为1000:(二) 交易用户并发验证使用交易用户budget_config_user使用测试SQL样例(cost值大于1000)启动100并发测试使用budget_config_user进行100并发样例SQL验证,当并发数达到50时管控,超过50并发后剩余SQL在管道内排队等待执行。(三)  报表用户并发验证使用报表用户report_user使用测试SQL样例(cost值大于1000)启动100并发测试使用report_user进行100并发样例SQL验证,当并发数达到20时管控,超过20并发后剩余SQL在管道内排队,等待执行。(四)  报表用户和交易用户同时并发验证分别使用交易用户budget_config_user和报表用户report_user使用测试SQL样例(cost值大于1000)分别启动100并发测试使用budget_config_user和report_user分别进行100并发样例SQL验证,交易用户并发50受控,报表用户并发20受控。(五) 报表用户限额CPU验证使用报表用户report_user使用测试SQL样例(cost值大于1000)启动100并发测试CPU限额设置20%,使用report_user进行100并发样例SQL验证,CPU使用达到20%时进行资源管控。CPU限额设置30%,使用report_user进行100并发样例SQL验证,CPU使用达到30%时进行资源管控。(六) 交易用户配额CPU验证使用交易用户budget_config_user使用测试SQL样例(cost值大于1000)启动100并发测试在配额60%CPU的情况下,CPU使用可以超过60%,不进行CPU强制限制(这点与限额不同),业务高峰时可以根据业务情况弹性扩展。转载自:华为云开发者论坛
总条数:865 到第 页
上滑加载中