• [数据安全] 常见web漏洞——SQL注入漏洞
    SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。通常情况下,SQL注入的位置包括:(1)表单提交,主要是POST请求,也包括GET请求;(2)URL参数提交,主要为GET请求参数;(3)Cookie参数提交;(4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等;(5)一些边缘的输入点,比如.mp3文件的一些文件信息等。常见的防范方法(1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。(2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。(3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。(4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。(5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。(6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。(7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。(8)在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。
  • [技术干货] DB2 9(Viper)快速入门
    为了帮助您快速掌握 DB2 自身的 XML 特性,请完成几个普通的任务,比如:创建用于管理 XML 数据的数据库对象,包括一个测试数据库、一些示例表和视图。使用 INSERT 和 IMPORT 语句将 XML 数据填充到数据库中。验证您的 XML 数据。使用 DB2 开发和注册您的 XML 模式,并在导入数据时使用 XMLVALIDATE 选项。后续文章将包括其他主题,比如使用 SQL 查询、更新和删除 DB2 XML 数据,使用 XQuery 查询 DB2 XML 数据,开发存取 DB2 XML 数据的 Java 应用程序和 Web 组件。创建数据库对象让我们先来创建一个单独的 DB2 Unicode 数据库。在 DB2 Viper 中,只有 Unicode 数据库才能同时存储 XML 文档和 SQL 数据的更多传统格式,比如整数、日期/时间、变长字符串,等等。随后,您将在这个数据库中创建对象来管理 XML 和其他类型的数据。创建测试数据库为了创建一个新的 DB2 Unicode “测试” 数据库,打开 DB2 命令窗口,发出语句来指定 Unicode 编码集合和支持的区域,如 清单 1:清单 1. 创建用于存储 XML 数据的数据库create database test using codeset UTF-8 territory us一旦创建了 Unicode 数据库,您就不需要发出任何专门的命令或采取任何进一步措施来使 DB2 能够以它自身分层的格式存储 XML 数据,因为您的 DB2 系统已经准备好了。创建示例表为了存储 XML 数据,请创建包含一个或多个 XML 列的表。这些表充当文档集合的逻辑容器;在幕后,DB2 实际上使用了不同的存储方案来存储 XML 和非 XML 数据。然而,使用表作为管理各种受支持的数据格式的逻辑对象,简化了管理和应用程序开发问题,特别是当需要在一个单独的查询中集成不同的数据格式时。您可以对 DB2 表进行定义,使其只包含 XML 列、只包含传统 SQL 类型的列或者同时包含两者。本文对后一种情况进行了建模。清单 2 中的例子连接到 “测试” 数据库,并创建了两个表。第一个是 “items” 表,追踪关于货物的销售情况和顾客对货物的评价信息。第二个表追踪的是关于 “客户” 的信息,包括关于联系信息的数据。注意 “comments” 和 “contactinfo” 是基于新的 DB2 XML 数据类型,而所有其他的列都是基于传统 SQL 数据类型的。清单 2. 创建用于 XML 数据的表connect to test;create table items (id int primary key not null,brandname varchar(30),itemname varchar(30),sku int,srp decimal(7,2),comments xml);create table clients(id int primary key not null,name varchar(50),status varchar(10),contactinfo xml);如果您仔细地查看这些表定义例子,您将注意到 “comments” 和 “contactinfo” 列都没有进行 XML 文档内部结构的定义。这是 DB2 的一个重要特性。用户不需要为了存储数据而预定义一个 XML 数据结构(或者,更准确地说是一个 XML 模式)。事实上,DB2 可以在一个单独的列中存储任何格式良好的 XML 文档,这意味着不同模式的 XML 文档 —— 或没有和任何注册的模式关联的文档 —— 都可以存储在相同的 DB2 列中。当我们讨论如何在 DB2 中存储数据时,本文将深入讨论这个特性。创建视图您可以随意地在包含 XML 数据的表上创建视图,就像您可以在只包含传统 SQL 数据类型的表上创建视图一样。清单 3 中的例子创建具有 “Gold” 状态的客户的一个视图:清单 3. 创建一个包含 XML 数据的视图create view goldview asselect id, name, contactinfofrom clients where status='Gold';关于索引的一点说明最后,没有必要在 XML 列上创建专门的索引来提高数据的查询速度。因为这是一篇介绍性文章,而且示例数据很少,所以本文不会涵盖到那个主题。然而,在生产环境中,定义一个适当的索引对实现最佳的性能来说很关键。查看本文结尾部分的 “参考资料”,以助于了解 DB2 的新索引技术。存储 XML 数据创建好表之后,现在您就可以用数据填充它们了。您可以通过直接发出 SQL INSERT 语句来完成这项工作,或者通过调用 DB2 IMPORT 工具在后台发出 INSERT 语句。使用 INSERT 语句使用 INSERT,您可以直接向 DB2 中填充原始的 XML 数据。如果您已经编写了一个应用程序并在变量中存储了 XML 数据,那么这可能是最容易的方法。但是如果您只是刚开始使用 DB2 Viper,并且不想编写应用程序,那么您可以交互地发出 INSERT 语句(我发现使用 DB2 Command Editor 是很方便的,虽然您也可以使用命令行处理器,如果您更喜欢那么做的话)。。
  • [技术干货] SQL Server 2012 多表连接查询功能实例代码
    直接给大家贴代码了,具体代码如下所示:-- 交叉连接产生笛卡尔值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一种写法 SELECT * FROM Student , ClassInfo -- 内连接 (Inner 可以省略) SELECT * FROM Student JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- Inner Join SELECT * FROM Student INNER JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- on 条件,通常是 主外键,但是不限于主外键 -- on 条件,允许有多个,而且可能是针对某个表的 SELECT * FROM Student INNER JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID AND dbo.Student.Class IN (1,2) -- 针对Student表增加查询条件 -- 不等于 (笛卡尔值减去 相等的值) SELECT * FROM Student INNER JOIN dbo.ClassInfo ON dbo.Student.Class <> dbo.ClassInfo.ID; --自连接 从Class表中查询到Class所在的系 SELECT T1.* ,T2.ClassName FROM dbo.ClassInfo AS T1 INNER JOIN dbo.ClassInfo AS T2 ON T1.PID=T2.ID -- Left Join SELECT * FROM Student Left JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- Right Join SELECT * FROM Student RIGHT JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- 全外连接 SELECT * FROM Student FULL OUTER JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- 外连接和内连接的区别是: -- 内连接,on条件不符合的话,会过滤掉数据 -- 外连接,以保留表为主,on条件成立显示数据,否则显示NULL --Union 纵向连接 SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM Student WHERE StuID<=2 UNION SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM dbo.Student WHERE StuID>2 --Union 去重复 SELECT StuSex FROM Student WHERE StuID<=2 UNION SELECT StuSex FROM dbo.Student WHERE StuID>2 --Union 显示全部 SELECT StuSex FROM Student WHERE StuID<=2 UNION ALL SELECT StuSex FROM dbo.Student WHERE StuID>2 --Except 差集,排除 SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM Student Except SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM dbo.Student WHERE StuID<=2 --Intersect 交集 SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM Student WHERE StuID>=2 Except SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM dbo.Student WHERE StuID<=3
  • [技术干货] SQL设置SQL Server最大连接数及查询语句
    关于Sql Server最大连接数(Max Pool Size)的问题,后来通过查找一些资料解决了,所以想着总结下一、设置最大连接数下面的T-SQL 语句可以配置SQL Server 允许的并发用户连接的最大数目。exec sp_configure 'show advanced options', 1 exec sp_configure 'user connections', 100第一句用以表示显示sp_configure 系统存储过程高级选项,使用user connections 时,要求show advanced options 值为1。第二句配置最大连接数为100,0 表示不限制,但不表示无限,后面将谈谈。也可以在企业管理器中配置,在企业管理器中,可以在实例上点右键->“属性”->“连接”里面更改。需要重新启动SQL Server,该值才会生效。@@max_connectionsselect @@max_connections它总是返回32767,它并不是指上面设置的user connections,实际上它表示user connections 最大可设置为多少。由于它的最大值是32767,那么user connections 为0 时,最大连接数也就是32767 了,并不是无限。默认情况下user connections 值是0,也就是说默认情况下SQL Server 的最大连接数是32767。二、获得当前设置的最大连接数:select value from master.dbo.sysconfigures where [config]=103 三、如何监测SQLServer的连接数/*查询连接数*/ select loginame,count(1) as Nums from sys.sysprocesses group by loginame order by 2 desc select spid,ecid,status,loginame,hostname,cmd,request_id from sys.sysprocesses where loginame='' and hostname=''方法二:SP_WHO 'loginName'loginName 是当然登陆Sql的用户名,一般程序里面都会使用一个username来登陆SQL这样通过这个用户名就能查看到此用户名登陆之后占用的连接了。如果不写loginName,那么返回的就是所有的连接。既然连接数是可预测、可监测的,那么它就是可度量的,那么我们就可以根据实际情况来评估或测试程序的并发放量了。
  • [POC&交付] GaussDB(DWS) POC主题博文汇总,欢迎在评论区交流探讨~
    序号主题分类博文题目博文链接1POC并发场景低效SQL检测方法https://bbs.huaweicloud.com/blogs/1746272POC【GaussDB(DWS)】资源管控方案技术分享https://bbs.huaweicloud.com/blogs/1746373POCMPP架构下数据倾斜率分析https://bbs.huaweicloud.com/blogs/1750084POC数据仓库日常巡检策略总结https://bbs.huaweicloud.com/blogs/1750095POCGaussDB(DWS)性能优化最佳实践https://bbs.huaweicloud.com/blogs/1952636POC【数据仓库】双集群系统方案探讨https://bbs.huaweicloud.com/blogs/175372 7POC【GaussDB(DWS)】数据仓库自动化清理功能实现https://bbs.huaweicloud.com/blogs/1754408POC华为云数仓GaussDB(DWS)】SQL语句上线验收操作指导https://bbs.huaweicloud.com/blogs/1881629POCDWS数据库用户权限设计与管理https://bbs.huaweicloud.com/blogs/17617810POCGaussDB(DWS)之数据库对象设计https://bbs.huaweicloud.com/blogs/19585611POCGaussDB(DWS)存储过程实现作业执行过程日志记录方法示例https://bbs.huaweicloud.com/blogs/19585312POC【GaussDB(DWS)】如何调整表的分布列https://bbs.huaweicloud.com/blogs/17634613POCGaussDB(DWS) 字符集浅谈https://bbs.huaweicloud.com/blogs/17635414POC华为商城(Vmall)背后的黑科技https://bbs.huaweicloud.com/blogs/17736215POCDWS权限管理概述https://bbs.huaweicloud.com/blogs/17518616POCDWS资源负载管理原理概述https://bbs.huaweicloud.com/blogs/17547117POCGaussDB(DWS)&TD分区表设计原理和使用对比https://bbs.huaweicloud.com/blogs/17722618POC8种ETL算法汇总大全!看完你就全明白了https://bbs.huaweicloud.com/blogs/17723519POCDWS与Greenplum一些语法差异总结https://bbs.huaweicloud.com/blogs/17739620POCGaussDB(DWS)中GTM组件对sequence管理https://bbs.huaweicloud.com/blogs/18083321POCGaussDB(DWS) gds线下迁移https://bbs.huaweicloud.com/blogs/18084822POCRoach备份恢复GaussDB(DWS)https://bbs.huaweicloud.com/blogs/17980423POCGaussDB(DWS) 一些常见参数调优分享https://bbs.huaweicloud.com/blogs/17900924POCGaussDB(DWS) 车辆检索与技战法浅析https://bbs.huaweicloud.com/blogs/19284025POC主流Web中间件与GaussDB(DWS) 对接介绍https://bbs.huaweicloud.com/blogs/18356826POC7*24国际运维节:运维人的那些事儿,你知道吗?https://bbs.huaweicloud.com/blogs/18912627POCGaussDB(DWS)表级锁功能实操与思考https://bbs.huaweicloud.com/blogs/19309528POCORACLE CONNECT_BY_ROOT,CONNECT_BY_ISLEAF等在GaussDB(DWS)上实现https://bbs.huaweicloud.com/blogs/19609429POC解密华为数据仓库产品GaussDB(DWS)https://bbs.huaweicloud.com/blogs/17900230POCORACLE 触发器在GaussDB(DWS)上的实现https://bbs.huaweicloud.com/blogs/19652731POCGaussDB(DWS)“表信息查询”与“分布列等信息修改”的一个方便脚本https://bbs.huaweicloud.com/blogs/196729 32POCGaussDB(DWS)对被视图引用的表进行DDL操作步骤https://bbs.huaweicloud.com/blogs/19699233POC【GaussDB (DWS)】业务表拆分显示策略分享https://bbs.huaweicloud.com/blogs/20045034POC如何把GIS(地理信息)迁移至DWS——抛转引玉https://bbs.huaweicloud.com/blogs/**7235POCGaussDB(DWS)通过GDS导出的文件竟然无法重新导入到源表?原来是分隔符与字符集不兼容搞的鬼https://bbs.huaweicloud.com/blogs/19887536POCGaussDB A 集群安装过程及部分问题解决方案https://bbs.huaweicloud.com/blogs/20864737POC【数仓搬迁】gsql结合python交互应用的实用技巧https://bbs.huaweicloud.com/blogs/21207838POC【数仓搬迁】数据一致性比对解决方案https://bbs.huaweicloud.com/blogs/21207539POCSQL下盘导致磁盘IO高问题分析https://bbs.huaweicloud.com/blogs/21273340POCDWS数据脏页统计及空间回收介绍https://bbs.huaweicloud.com/blogs/21367441POCGaussDB(DWS)工作负载管理实战https://bbs.huaweicloud.com/blogs/21319642POCDWS服务参数优化https://bbs.huaweicloud.com/blogs/21415643POCDWS历史sql资源消耗分析方法https://bbs.huaweicloud.com/blogs/21415744POC【Linux】 top 命令详解https://bbs.huaweicloud.com/blogs/21415845POCDWS服务sql不下推问题总结https://bbs.huaweicloud.com/blogs/21415946POC关于DWS 空间释放(vacuum full) 最佳实践https://bbs.huaweicloud.com/blogs/21416047POCDWS开发指导https://bbs.huaweicloud.com/blogs/21416348POCADB for mysql 【INSERT [IGNORE] INTO table_name】迁移 DWS 改写方法https://bbs.huaweicloud.com/blogs/22154249POCTD常用字典视图在GaussDB(DWS)上实现https://bbs.huaweicloud.com/blogs/22729250POC使用Python连接GaussDB(DWS)https://bbs.huaweicloud.com/blogs/22729051POC由两个问题引发的对GaussDB(DWS)负载均衡的思考https://bbs.huaweicloud.com/blogs/22749652POC使用DWS访问存算分离的MRS集群的数据https://bbs.huaweicloud.com/blogs/22804853POCGaussDB(DWS) Flink实时流入库简单介绍https://bbs.huaweicloud.com/blogs/23307354POCGaussDB(DWS)与OGG对接https://bbs.huaweicloud.com/blogs/23308455POCSQL执行流程https://bbs.huaweicloud.com/blogs/23482456POCInformatica10.2与GaussDB A8.0对接https://bbs.huaweicloud.com/blogs/23522957POCAIX服务器安装psql工具连接GaussDBhttps://bbs.huaweicloud.com/blogs/23525958POCCognos11.0.12 对接GaussDB Ahttps://bbs.huaweicloud.com/blogs/23558159POCGaussDB(DWS)与SAP_IDP&UPD对接配置https://bbs.huaweicloud.com/blogs/23734060POCGAUSSDB(DWS)对接OBIEE指导https://bbs.huaweicloud.com/blogs/23733261POCGaussDB(DWS)与Kettle对接指导https://bbs.huaweicloud.com/blogs/23875362POCGaussDB(DWS)与HVR对接测试https://bbs.huaweicloud.com/blogs/23874963POCDWS运维常用SQLhttps://bbs.huaweicloud.com/blogs/24229864POCGauss DB对接Tableauhttps://bbs.huaweicloud.com/blogs/24248965POC华为云DWS与阿里云ADB(MySQL)的差异总结https://bbs.huaweicloud.com/blogs/24269866POCGaussDB(DWS) 震惊!复杂语句的SQL优化竟然是?https://bbs.huaweicloud.com/blogs/24433167POCperl通过ODBC连接GaussDB(DWS)https://bbs.huaweicloud.com/blogs/24490668POCGaussDB(DWS)运维的那些事? ——关于释放磁盘异常占用空间的经验总结https://bbs.huaweicloud.com/blogs/24512569POCGauss DB A数据库安装使用的端口号https://bbs.huaweicloud.com/blogs/24534870POCGaussDB(DWS)对接系列-BI工具BIP对接https://bbs.huaweicloud.com/blogs/24585371POCGauss DB(DWS)对接系列-BI工具SAS对接https://bbs.huaweicloud.com/blogs/24588072POCGaussDB(DWS)对接系列-BI工具BIEE对接https://bbs.huaweicloud.com/blogs/24592873POCGaussDB(DWS)常见的三种公共模式https://bbs.huaweicloud.com/blogs/24590174POC配置SQL ON OBS桶策略,实现DWS访问分离https://bbs.huaweicloud.com/blogs/24615775POCDWS console 配置参数说明https://bbs.huaweicloud.com/blogs/24613276POC【GaussDB(DWS)实践系列】数据倾斜检查与修改方法https://bbs.huaweicloud.com/blogs/24619577POCGaussDB(DWS)中Oracle不兼容语法修改集https://bbs.huaweicloud.com/blogs/24751578POCGaussDB A(DWS)多租户资源管理配置实例https://bbs.huaweicloud.com/blogs/24784979POCGaussDB(DWS)对接系列-数据可视化工具Grafana 7.4.3版本对接https://bbs.huaweicloud.com/blogs/24968780POC【数仓迁移】TD迁移GaussDB(DWS)之DDL迁移对照https://bbs.huaweicloud.com/blogs/25052881POC【易运维】GaussDB(DWS)审计日志转储实践https://bbs.huaweicloud.com/blogs/25053282POCGaussDB(DWS)实践系列 DWS与OBS数据互导https://bbs.huaweicloud.com/blogs/25150783POC数据仓库服务(DWS)事件管理记录为空的问题解决方案https://bbs.huaweicloud.com/blogs/25590284POCGaussDB(DWS)记录数据表操纵日志--系统日志提取方案https://bbs.huaweicloud.com/blogs/25660485POCDWS Power BI对接指导https://bbs.huaweicloud.com/blogs/25754486POC逻辑集群中的用户权限https://bbs.huaweicloud.com/blogs/25845287POCGaussDB(DWS)实践系列-常用命令FAQhttps://bbs.huaweicloud.com/blogs/26147688POC谁阻塞了谁的前进--锁等待监控查询https://bbs.huaweicloud.com/blogs/26146089POC【TD迁移】【函数迁移之一】因字符集变化引起的函数适配https://bbs.huaweicloud.com/blogs/261503【推荐阅读】【最新活动汇总】DWS活动火热进行中,互动好礼送不停(持续更新中)  HOT  【博文汇总】GaussDB(DWS)博文汇总1,欢迎大家交流探讨~(持续更新中)【维护宝典汇总】GaussDB(DWS)维护宝典汇总贴1,欢迎大家交流探讨(持续更新中)【项目实践汇总】GaussDB(DWS)项目实践汇总贴,欢迎大家交流探讨(持续更新中)【DevRun直播汇总】GaussDB(DWS)黑科技直播汇总,欢迎大家交流学习(持续更新中)【培训视频汇总】GaussDB(DWS) 培训视频汇总,欢迎大家交流学习(持续更新中) 扫码关注我哦,我在这里↓↓↓ 
  • [SQL] GaussDB(DWS) SQL主题博文汇总,欢迎在评论区交流探讨~
    GaussDB(DWS)  SQL相关博文汇总,欢迎在评论区交流探讨~序号主题分类博文题目博文链接1SQLGaussDB(DWS)性能调优:列存表scan性能优化https://bbs.huaweicloud.com/blogs/1754582SQLGaussDB(DWS)性能调优基础篇一:万物之始analyze统计信息https://bbs.huaweicloud.com/blogs/1920293SQLGaussDB for DWS内存自适应控制技术介绍https://bbs.huaweicloud.com/blogs/1763264SQLGaussDB(DWS)的stream执行机制https://bbs.huaweicloud.com/blogs/1763475SQL分布式数据存储倾斜快速检测https://bbs.huaweicloud.com/blogs/1835856SQL华为云数仓GaussDB(DWS)内存知识梳理https://bbs.huaweicloud.com/blogs/1847257SQL华为云数仓GaussDB(DWS)之地理数据库: PostGIS介绍(一)https://bbs.huaweicloud.com/blogs/1904108SQL数据仓库中数据模型以及ETL算法https://bbs.huaweicloud.com/blogs/1850829SQLGaussDB(DWS)的explain performance详解https://bbs.huaweicloud.com/blogs/19343410SQL拿走磁盘也甭想读数据——透明加密保安全https://bbs.huaweicloud.com/blogs/19492411SQLGaussDB(DWS)TD与Oracle兼容模式差异https://bbs.huaweicloud.com/blogs/17636112SQLUnique SQL特性原理与应用https://bbs.huaweicloud.com/blogs/19729913SQLGaussDB(DWS)性能调优系列实战篇二:十八般武艺之坏味道SQL识别https://bbs.huaweicloud.com/blogs/197413 14SQLGaussDB(DWS)性能调优系列基础篇二:大道至简explain分布式计划https://bbs.huaweicloud.com/blogs/19794515SQLGaussDB(DWS)性能调优系列基础篇三:衍化至繁之分布式计划详解https://bbs.huaweicloud.com/blogs/20044916SQLGaussDB(DWS)性能调优系列实战篇一:十八般武艺之总体调优策略https://bbs.huaweicloud.com/blogs/20090617SQLGaussDB(DWS)性能调优系列实战篇三:十八般武艺之好味道表定义https://bbs.huaweicloud.com/blogs/20321918SQLGaussDB(DWS)数据库安全系列之通信安全https://bbs.huaweicloud.com/blogs/20321419SQLGaussDB(DWS)性能调优系列实战篇四:十八般武艺之SQL改写https://bbs.huaweicloud.com/blogs/203420 20SQLPB级数仓GaussDB(DWS)性能黑科技之并行计算技术解密https://bbs.huaweicloud.com/blogs/20342621SQL你应该知道的数仓安全——默认权限实现共享schemahttps://bbs.huaweicloud.com/blogs/20732622SQLGaussDB(DWS)性能调优系列实战篇五:十八般武艺之路径干预https://bbs.huaweicloud.com/blogs/21245923SQLGaussDB(DWS)性能调优系列实现篇六:十八般武艺Plan hint运用https://bbs.huaweicloud.com/blogs/21319524SQL“2020华为数智金融论坛”成功举办,金融界精英共话行业未来https://bbs.huaweicloud.com/blogs/21593425SQLGaussDB(DWS)表权限案例集锦https://bbs.huaweicloud.com/blogs/22399126SQL从COALESCE看数据库差异https://bbs.huaweicloud.com/blogs/22603727SQL初窥自定义C函数https://bbs.huaweicloud.com/blogs/22722028SQL通用唯一识别码的介绍和使用https://bbs.huaweicloud.com/blogs/22883829SQL如何通过SQL进行分布式死锁的检测与消除https://bbs.huaweicloud.com/blogs/22884030SQL GaussDB(DWS)运维 -- SQL操作 -- 查找所有包含主键&唯一索引的表信息https://bbs.huaweicloud.com/blogs/23013731SQLGaussDB(DB)查看后台活跃SQL和执行状态https://bbs.huaweicloud.com/blogs/23126132SQLGaussDB(DWS)集群后台UDF进程异常https://bbs.huaweicloud.com/blogs/23307533SQLGaussDB(DWS)审计日志介绍和使用示例https://bbs.huaweicloud.com/blogs/23310434SQLGaussDB(DWS) 快速查到一张表的列信息https://bbs.huaweicloud.com/blogs/23311535SQLGaussDB(DWS)之锁等待场景介绍https://bbs.huaweicloud.com/blogs/23311436SQL数据库覆盖式数据导入方法介绍https://bbs.huaweicloud.com/blogs/23772037SQLGaussDB(DWS)视图解耦与自动重建功能介绍https://bbs.huaweicloud.com/blogs/23842538SQLGaussDB(DWS)的正则表达式知多少https://bbs.huaweicloud.com/blogs/24203039SQLGaussDB时区相关知识(一)https://bbs.huaweicloud.com/blogs/24315140SQLGaussDB(DWS) XML数据处理实践https://bbs.huaweicloud.com/blogs/24433441SQL【文末彩蛋】数据仓库服务 GaussDB(DWS)单点性能案例集锦https://bbs.huaweicloud.com/blogs/24585942SQLGaussDB(DWS)时区相关知识(二)https://bbs.huaweicloud.com/blogs/24621643SQLGaussDB(DWS)时区相关知识(三)https://bbs.huaweicloud.com/blogs/24756144SQLGaussDB(DWS)生态 - teredata兼容 - 函数 - pivot/unpivot改写https://bbs.huaweicloud.com/blogs/24783445SQLGaussDB(DWS)运维 -- SQL操作 -- 查找冗余索引https://bbs.huaweicloud.com/blogs/24924846SQL你应该知道的数仓安全——安全认证https://bbs.huaweicloud.com/blogs/24970247SQL你应该知道的数仓安全——加密函数https://bbs.huaweicloud.com/blogs/25151448SQL你应该知道的数仓安全——透明加密https://bbs.huaweicloud.com/blogs/25149049SQLGaussDB(DWS)数据库安全守护者之审计日志https://bbs.huaweicloud.com/blogs/25369850SQLGaussDB(DWS)迁移 -数据迁移 - 使用Spark的scala接口往GaussDB(DWS)导入数据失败分析https://bbs.huaweicloud.com/blogs/25371151SQLGaussDB(DWS) SQL进阶-database、schema、user和权限控制https://bbs.huaweicloud.com/blogs/25418452SQLGaussDB(DWS) SQL进阶之全文检索https://bbs.huaweicloud.com/blogs/25418653SQLGaussDB(DWS)安全:隐私保护现真招儿——数据脱敏https://bbs.huaweicloud.com/blogs/25457054SQLGaussDB(DWS) 单点性能案例集锦https://bbs.huaweicloud.com/blogs/258890【推荐阅读】【最新活动汇总】DWS活动火热进行中,互动好礼送不停(持续更新中)  HOT  【博文汇总】GaussDB(DWS)博文汇总1,欢迎大家交流探讨~(持续更新中)【维护宝典汇总】GaussDB(DWS)维护宝典汇总贴1,欢迎大家交流探讨(持续更新中)【项目实践汇总】GaussDB(DWS)项目实践汇总贴,欢迎大家交流探讨(持续更新中)【DevRun直播汇总】GaussDB(DWS)黑科技直播汇总,欢迎大家交流学习(持续更新中)【培训视频汇总】GaussDB(DWS) 培训视频汇总,欢迎大家交流学习(持续更新中) 扫码关注我哦,我在这里↓↓↓ 
  • [技术干货] PostgreSQL 实现sql放入文件批量执行
    ostgreSQL sql放入文件,登入数据库之后批量执行1. 建立测试sql:vi aa.sql插入:猜测每条sql语句是用;分隔的,function中的多个;也会自动识别。create table tb1(id integer); insert into tb1 select generate_series(1,10); select * from tb1; delete from tb1 where id<3; select * from tb1;2. 将aa.sql放入 ./src/postgresql-9.3.5/src/tutorial下(./src/postgresql-9.3.5/src/tutorial是PostgreSQL自动识别的目录,当然也可以放在任意目录,比如/home/postgres/aa.sql)3. 切换用户登入su postgres psql postgres4. 执行:当输入\i时候,会自动检测到./src/postgresql-9.3.5/src/tutorial下的文件,PostgreSQL的测试例子也放在此目录下postgres=# \i aa.sql (\i /home/postgres/aa.sql) id | name ----+------ 1 | join 2 | join 3 | join 4 | join 5 | join 6 | join 7 | join 8 | join 9 | join 10 | join (10 rows) CREATE TABLE INSERT 0 10 id ---- 1 2 3 4 5 6 7 8 9 10 (10 rows) DELETE 2 id ---- 3 4 5 6 7 8 9 10 (8 rows) postgres=# 第二个例子:vi bb.sql:写入一个function:create function func1()returns void as $$ declare begin delete from person where id>5; delete from tb1 where id>5; end $$language plpgsql; select func1();切换到postgres,登入之后执行:执行前:postgres=# select * from person ; id | name ----+------ 1 | join 2 | join 3 | join 4 | join 5 | join 6 | join 7 | join 8 | join 9 | join 10 | join (10 rows) postgres=# select * from tb1 ; id ---- 3 4 5 6 7 8 9 10 (8 rows)执行:postgres=# \i bb.sql CREATE FUNCTION func1 ------- (1 row)执行后:postgres=# select * from person ; id | name ----+------ 1 | join 2 | join 3 | join 4 | join 5 | join (5 rows) postgres=# select * from tb1 ; id ---- 3 4 5 (3 rows) postgres=# 5. 也可以使用psql命令执行pslq -d postgres -U postgres -f /home/postgres/aa.sql
  • [其他] 分享结构化数据上的问答系统(2)
    Lan 等人在论文「Query Graph Generation for Answering Multi-hop Complex Questions from Knowledge Bases」(https://www.aclweb.org/anthology/2020.acl-main.91.pdf)中提出使用迭代的基于强化学习的(知识图谱嵌入无关)查询生成方法。基于通过一些实体链接(作者通过谷歌知识图谱 API 连接到 FreeBase 获得)得到的主题实体,作者提出了应用于种子实体的三种操作,即「扩展」(extend)、「联系」(connect)、「聚合」(aggregate),通过以上三种操作来构建一个查询模式。自然而然地,这些操作使其能够通过 min/max 聚合函数实现复杂的多跳模式。在每一步中,作者使用集束搜索(beam search)保留 K 个最佳的模式,他们为每个图派生出一个 7 维特征向量,并将该向量输入给带有 softmax 的前馈网络,从而对这些模式进行排序。在该模型中,被纳入查询图的实体和关系的表面形式(surface form)被线性化处理后与输入问题相连接,然后输入给 BERT,从而在最后一层得到 [CLS] 的表征(是 7 维特征之一)。作者在 ComplexWebQuestions、WebQuestionsSP、ComplexQuestions 上测试了该方法,实验表明该模型的性能显著超过了对比基线。模型简化实验(又称消融实验,ablation study)说明,「扩展」、「联系」、「聚合」三种操作是十分重要的。值得一提的是,Wang 等人的论文「RAT-SQL: Relation-Aware Schema Encoding and Linking for Text-to-SQL Parsers」(https://www.aclweb.org/anthology/2020.acl-main.677.pdf)提出了一种面向关系的 Transformer「RAT-SQL」。为了编码数据库模式,他们定义了列和表之间显式的边。作者还定义了初始的数据库模式和值的连接,从而获得候选的列和表。此外,列、表,以及问题词例将被一同送入改良后的自注意力层。最后,树结构的解码器会构建一个 SQL 查询。当使用 BERT 对问题词例的嵌入进行初始化时,RAT-SQL 在Spider 任务上取得了显著的性能提升。通常,在与一个语义解析系统交互时,我们往往会想要快速地指出或修正解析器的小错误。Elgohary 等人在论文「Speak to your Parser: Interactive Text-to-SQL with Natural Language Feedback」()中解决了该问题,并发布了 SPLASH数据集,旨在通过自然语言反馈纠正 SQL 解析器的错误。这种纠错的场景与对话式 test2SQL 任务不同,所以即使目前性能最优的模型(如 EditSQL)在纠错任务中与人类标注者的性能也存在着很大的差距(SOTA 模型的准确率为 25%,而人类标注者为 81%)。在相同的任务中,Zeng 等人在论文「PHOTON: A Robust Cross-Domain Text-to-SQL System」(https://www.aclweb.org/anthology/2020.acl-demos.24.pdf)中提出了 Photon,这是一个相当成熟的可以执行查询纠错任务的「text-to-SQL」系统。转自,MrBear,https://www.leiphone.com/category/academic/n3WcOtLYehqcrpXv.html
  • [Sql迁移] 【GaussDB产品】【SQL语句兼容性】是否支持 create table as select order by 语句
    【功能模块】  SQL语句:create table as select order by 语句【操作步骤&问题现象】个人在 openGauss 上执行以下语句创建的表是按照 jsrq 排序好的;      postgres=> create table gaussdb.educationinfo_temp as select * from gaussdb.educationinfo order by jsrq desc limit 10;但是在 GaussDB 上,发现数据有,但是没有按照 jsrq 排序,请问各位大佬为什么没有按照 jsrq 排序???【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [其他] 【性能】多nodegroup场景sql执行慢,查看等锁的wait-status是none
    多表关联且跨Nodegroup时,可以触发,大部分时间是消耗在生成搜索路径上可以为分段重复分布的业务跑批期等多nodegroup场景可使用set expected_computing_nodegroup = 'xxx';set enable_nodegroup_debug = on;在业务起始规避
  • [技术干货] PHP同时连接多个mysql数据库示例代码
    实例: <?php $conn1 = mysql_connect("127.0.0.1", "root","root","db1"); mysql_select_db("db1", $conn1); $conn2 = mysql_connect("127.0.0.1", "root","root","db2"); mysql_select_db("db2", $conn2); $sql = "select * from ip"; $query = mysql_query($sql); if($row = mysql_fetch_array($query)) echo $row[0]."\n"; $sql = "select * from web "; $query = mysql_query($sql); if($row = mysql_fetch_array($query)) echo $row[0]; ?> 这段代码存在问题,在程序执行时会报错:PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ....原因分析:程序开始建立两个数据库链接,函数mysql_query()原型:resource mysql_query ( string $query [, resource $link_identifier ] )向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。如果没有指定 link_identifier,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数调用 mysql_connect() 函数来建立一个连接并使用之。查询结果会被缓存。在本例中由于没有指定link_identifier,所以,在执行第一条sql时,默认使用的是上一个打开的链接,即$conn2,而实际上第一条sql语句应该使用的是$conn1,所以导致报错,所以为了能够链接多个mysql数据库,可以使用如下方法:方法1:在mysql_query函数中指定所用连接,即: <?php $conn1 = mysql_connect("127.0.0.1", "root","root","db1"); mysql_select_db("Muma", $conn1); $conn2 = mysql_connect("127.0.0.1", "root","root","db2"); mysql_select_db("product", $conn2); $sql = "select * from ip"; $query = mysql_query($sql,$conn1); //添加连接$conn1 if($row = mysql_fetch_array($query)) echo $row[0]."\n"; $sql = "select * from web "; $query = mysql_query($sql, $conn2); if($row = mysql_fetch_array($query)) echo $row[0]; ?> 方法2:在sql语句中关联所用数据库,此时可以省略mysql_query的第二个参数,即: <?php $conn1 = mysql_connect("127.0.0.1", "root","root","db1"); mysql_select_db("db1", $conn1); $conn2 = mysql_connect("127.0.0.1", "root","root","db2"); mysql_select_db("db2", $conn2); $sql = "select * from db1.ip"; //关联数据库 $query = mysql_query($sql); if($row = mysql_fetch_array($query)) echo $row[0]."\n"; $sql = "select * from db2.web "; $query = mysql_query($sql); if($row = mysql_fetch_array($query)) echo $row[0]; ?>
  • [技术干货] mysql死锁和分库分表问题详解
    业务场景与问题描述请求一个外部接口时,每天的请求量在900万左右。分为请求项目和回执这两个项目。请求是用来调用外部接口,回执是接收发送的接口。在发送请求前会先插入数据库。在请求后,如果接口返回调用失败,会更新数据库状态为失败。如果发送成功,则会等待上游给出回执消息后,然后更新数据库状态。而在生产运行过程中,半年出现过两次mysql导致的mq消费者堆积的问题。问题分析记录两次不同的原因导致的生产问题及原因分析。mysql死锁问题查看mq聚合平台TPS上生产发现mq数据一直堆积,且不断上升。而TPS仅为30左右,一直上不去。这就会使mq消费变慢了,导致不断堆积。具体什么原因导致mq一直堆积,需要继续排查。查看生产服务器日志查看生产服务器日志,发现有报错dead Lock的错误。error response from MySQLConnection [node=24, id=277499, threadId=2735941, state=borrowed, closed=false, autocommit=true, host=10.1.10.74, port=3306, database=sep_4, localPort=27744, isClose:false, toBeClose:false, MySQLVersion:5.7.25], err: Deadlock found when trying to get lock; try restarting transaction, code: 1213具体的sql如下:update stage set status = 'success',reply_time = '2021-03-07 10:40:11' where code = '000123' and create_time > '2021-03-03 00:00:00';也就是说在执行服务时出现了死锁的情况。具体有多少条以及耗时,在生产服务器看着不直观,于是就让dba将慢sql的语句和耗时查出来。查出后发现最长的慢sql的耗时长达7780ms。仔细查看会发现,sql会发现相同的id一个在执行中,一个在Lock Wait状态。而这慢sql中有大量的Lock Wait状态。什么原因导致的死锁mysql使用的数据库引擎时InnoDB。先了解下什么是死锁:所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.通过上面的排查可以看出,出现死锁的问题就是:在执行sql更新一条数据时,会将这一行数据锁定,执行完成后会释放行锁,而没有执行的sql处于Lock Wait状态。而程序中导致此原因在于,在发送前后和回执时,频繁操作数据库,可能会出现同时操作同一条数据的情况。所以在执行中就出现了锁等待的情况。分库分表未带分片键首先告警的是stage_prod库的CPU飙到了85%。数据库线程数是否被打满经过查看数据库连接情况可知,数据库连接数并没有被占满。查出慢sql和耗时查出的问题sql:查看sql会发现,这条sql竟然没有带分片键code字段。而这条sql是回执时执行的。排查生产服务器日志代码中有做判断,如果code值不为空,sql会带上code的值。那么没带上,就需要查看为何没有带上。查看代码会发现,code是从redis中获取的,是在发送时set到redis中的。但是没有set进去就很奇怪了。初步怀疑是redis问题,然后就与redis维护的平台沟通,发现果真是因为redis故障导致的问题。为什么不带分片键CPU就会飙升首先公司用的是hotdb分库分表,因为每天的入库量是在900万左右,一个表是上亿条数据。如果只是单纯用索引,是无法满足要求的。分库分表hotdb,根据code值做hash分片,做了64个分片。也就是说64个数据库,分布在8台服务器上的16个实例里面。这样可以避免各分片数据不均,理论上避免了过度集中在某个分片上。而如果不带分片键code的sql,所有的dml操作全部下发到所有的底层库上进行执行,相当于遍历了一遍库。这样就可能会导致CPU直接飙到99%,甚至直接导致服务器直接崩掉,这样操作是很可怕的。解决办法急处理:先停掉几台服务减少数据库操作数据持续堆积,会影响数据处理速度。那么,就要先降低操作的速度,最快速的办法就是停服务,减少数据库的操作频率。减少数据库操作避免数据库死锁死锁一般时由于程序上没有控制好dml操作的提交,没有及时提交.减少重复操作同一条数据。在批量操作时减少每批dml数,保证快速提交,避免长事务,避免重复提交dml。那么怎样减少操作呢?合并sql将发送前插入和发送失败时更新,直接合并到一条sql,这样就可以避免多次操作同一条数据的情况。批量执行时减少长事务和条数执行时发现,每次批量执行20条sql,比一次性执行200条的效率更快。所以尽可能避免这种问题。每条sql必须带分库分表分片键原则就是不能因为一条数据就拖累整个数据库的操作速度。分片键必须带上,如果不带分片键,就抛错。增加时间区间开闭区间用code来做分片键,用createTime做分区。那么在保证code存在的情况下,可以写上开闭区间,可以提高执行效率。更优解:sql顺序执行这种方案可以通过把将要执行的sql统一发到一个mq来消费执行,这样可以保证sql顺序执行,从而避免死锁的产生。但是这个需要根据业务场景来区分。复盘mysql死锁问题,要尽可能避免频繁操作同一条数据,也要避免长事务;针对分库分表问题,一定要带上分片键
  • [运维管理] roach restore clean为什么把postgresql.sql等文件删除了
    roach备份一个gaussdb A库到磁盘上,然后在另一个gaussdb集群中按照roach restore clean restore-new-cluster进行恢复,恢复报找不到config文件.查看日志发现clean过程把postgresql.conf等文件都删除了,然后另一个gaussdb集群就挂了。然后尝试启动集群也起不来了也是报pg等配置文件没有。问要怎么处理?重装另一个gaussdb集群?这个恢复过程问题出在哪儿?
  • [其他] 分享算法——一种用于sql生成模型的数据匿名化编码方法
    一种用于sql生成模型的数据匿名化编码方法论文名称:Data-Anonymous Encoding for Text-to-SQL Generation作者:Zhen Dong1 , Shizhao Sun , Hongzhi Liu , Jian-Guang Lou ,Dongmei Zhang发表时间:2019/11/7论文链接:https://www.aclweb.org/anthology/D19-1543.pdf推荐原因1、为了优化从文本中生成机器语言(此处是sql语句)的效率,作者提出了一种基于序列标注的两阶段模型对文本进行匿名化(anonymous encoding)的预处理,减少了文本的长度,并且提取了文本的词与数据表之间的语义关系.为了更高效地进行训练,作者采用了数据集的一小部分进行人工标注,以此训练出的模型来初始化最终的模型,对于其他的数据,作者仅从sql中抽取出无序的colname, cell等数据,并提出了一种基于奖励机制的隐监督(implicit supervision)学习方法来进行训练。此外,作者还提及了一种基于变分推断思路的训练方法,意图将文本匿名化模型与用于生成sql的语义解析模型联合训练来提供模型的效率2 、作者提出的匿名化方法无论从效率还是从准确度的角度,相比之前的方法都得到了很大的提高3 、序列标注,尤其是与bert相结合的序列标注,是一种直观且有效的训练模型,需要大量标注良好的数据是其一大软肋,作者提出的隐监督训练方案的思路很值得一读转自,AI研习社,https://www.leiphone.com/category/academic/Is2BSkPUrXDA4Qt9.html
  • [其他] 【故障】客户使用JDBC执行sql报错:ERROR: insufficient data left in message
    问题描述:客户使用JDBC执行sql报错:ERROR:  insufficient data left in message排查方法:排查客户执行的sql中是否包含'\0'(在notepad++中查看时NUL的特殊字符),如图:原因:服务端无法处理字符串中的'\0'字符解决方式:去掉特殊字符,可以用空格代替参考链接:https://www.postgresql.org/message-id/alpine.BSO.2.00.0906031639270.2432@leary.csoft.net
总条数:865 到第 页
上滑加载中