-
视 图 是 可 视 化 的 表。SQL CREATE VIEW 语句 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。 视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。 您可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。SQL CREATE VIEW 语法CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition注释:视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据。SQL CREATE VIEW 创建实例 样本数据库 Northwind 拥有一些被默认安装的视图。 视图 "Current Product List" 会从 "Products" 表列出所有正在使用的产品(未停产的产品)。这个视图使用下面的 SQL 创建:CREATE VIEW [Current Product List] AS SELECT ProductID,ProductName FROM Products WHERE Discontinued=No我们可以像这样查询上面这个视图:SELECT * FROM [Current Product List]Northwind 样本数据库的另一个视图会选取 "Products" 表中所有单位价格高于平均单位价格的产品:CREATE VIEW [Products Above Average Price] AS SELECT ProductName,UnitPrice FROM Products WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)我们可以像这样查询上面这个视图:SELECT * FROM [Products Above Average Price]Northwind 样本数据库的另一个视图会计算在 1997 年每个种类的销售总数。请注意,这个视图会从另一个名为 "Product Sales for 1997" 的视图那里选取数据:CREATE VIEW [Category Sales For 1997] AS SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales FROM [Product Sales for 1997] GROUP BY CategoryName我们可以像这样查询上面这个视图:SELECT * FROM [Category Sales For 1997]我们也可以向查询添加条件。现在,我们仅仅需要查看 "Beverages" 类的销售总数:SELECT * FROM [Category Sales For 1997] WHERE CategoryName='Beverages'SQL 更新视图您可以使用下面的语法来更新视图:SQL CREATE OR REPLACE VIEW 语法CREATE OR REPLACE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition现在,我们希望向 "Current Product List" 视图添加 "Category" 列。我们将通过下列 SQL 更新视图:CREATE VIEW [Current Product List] AS SELECT ProductID,ProductName,Category FROM Products WHERE Discontinued=NoSQL ServerALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ] [ WITH <view_attribute> [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] [ ; ] <view_attribute> ::= { [ ENCRYPTION ] [ SCHEMABINDING ] [ VIEW_METADATA ] }schema_name: 视图所属架构的名称。view_name: 要更改的视图。column: 将成为指定视图的一部分的一个或多个列的名称(以逗号分隔)。SQL 撤销视图您可以通过 DROP VIEW 命令来删除视图。SQL DROP VIEW 语法DROP VIEW view_name
-
概述: 为什么使用集合运行: 在集合运算中比联接查询和EXISTS/NOT EXISTS更方便。并级运算(UNION)并集:俩个集合的并集是一个包含的A和B的中所有的元素。 在T-SQL中。UNION集合运算可以将两个输入查询的结果组合成一个结果集。需要注意的是:如果一个行在任何一个输入集合中出现,它也会在UNION运算的结果中出现。T-SQL支持以下两种选项:(1)UNION ALL:不会删除重复行-- union allselect country, region, city from hr.Employees union all select country, region, city from sales.Customers;(2)UNION:会删除重复行-- union select country, region from hr.Employees union select country, region from sales.Customers;交集运算(INTERSECT)交集:两个集合(记为集合A和集合B)的交集是由既属于A,也属于B的所有元素组成的集合。 在T-SQL中,INTERSECT集合运算对两个输入查询的结果取其交集,只返回在两个查询结果集中都出现的行。INTERSECT集合运算在逻辑上会首先删除两个输入集中的重复行,然后返回只在两个集合中中都出现的行。换句话说:如果一个行在两个输入集中都至少出现一次,那么交集返回的结果中将包含这一行。例如,下面返回既是雇员地址,又是客户地址的不同地址:-- intersect select country, region, city from hr.Employees intersect select country, region, city from sales.Customers;这里需要说的是,集合运算对行进行比较时,认为两个NULL值相等,所以就返回该行记录。差集运算(EXCEPT)差集:两个集合(记为集合A和集合B)的由属于集合A,但不属于集合B的所有元素组成的集合。 在T-SQL中,集合之差使用EXCEPT集合运算实现的。它对两个输入查询的结果集进行操作,反会出现在第一个结果集中,但不出现在第二个结果集中的所有行。 EXCEPT结合运算在逻辑上首先删除两个输入集中的重复行,然后返回只在第一个集合中出现,在第二个结果集中不出现的所有行。 换句话说:一个行能够被返回,仅当这个行在第一个输入的集合中至少出现过一次,而且在第二个集合中一次也没出现过。 此外,相比UNION和INTERSECT,两个输入集合的顺序是会影响到最后返回结果的。 例如,借助EXCEPT运算,我们可以方便地实现属于A但不属于B的场景,下面返回属于员工抵制,但不属于客户地址的地址记录:-- except select country, region, city from hr.Employees except select country, region, city from sales.Customers;集合运算优先级 SQL定义了集合运算之间的优先级:INTERSECT最高,UNION和EXCEPT相等。 换句话说:首先会计算INTERSECT,然后按照从左至右的出现顺序依次处理优先级相同的运算。-- 集合运算的优先级 select country, region, city from Production.Suppliers except select country, region, city from hr.Employees intersect select country, region, city from sales.Customers;上面这段SQL代码,因为INTERSECT优先级比EXCEPT高,所以首先进行INTERSECT交集运算。因此,这个查询的含义是:返回没有出现在员工地址和客户地址交集中的供应商地址。集合运算的优先级1.INTERSECT>UNION=EXCEPT2.首先计算INTERSECT,然后从左到右的出现顺序依次处理优先级的相同的运算。3.可以使用圆括号控制集合运算的优先级,它具有最高的优先级。在排序函数的OVER字句中使用ORDER BY ( SELECT <常量> )可以告诉SQL Server不必在意行的顺序。使用表表达式避开不支持的逻辑查询处理集合运算查询本身并不持之除ORDER BY意外的其他逻辑查询处理阶段,但可以通过表表达式来避开这一限制。 解决方案就是:首先根据包含集合运算的查询定义一个表表达式,然后在外部查询中对表表达式应用任何需要的逻辑查询处理。(1)例如,下面的查询返回每个国家中不同的员工地址或客户地址的数量:select country, COUNT(*) as numlocations from (select country, region, city from hr.Employees union select country, region, city from sales.Customers) as Ugroup by country;(2)例如,下面的查询返回由员工地址为3或5的员工最近处理过的两个订单:select empid,orderid,orderdate from (select top (2) empid,orderid,orderdate from sales.Orders where empid=3 order by orderdate desc,orderid desc) as D1 union all select empid,orderid,orderdate from (select top (2) empid,orderid,orderdate from sales.Orders where empid=5 order by orderdate desc,orderid desc) as D2;
-
导读: 有个表作分区,每天一个分区 该表上查询,经常值查询表中某一天的数据,但每一次都几乎要扫描整个分区所有的数据,为了提高效率,开始优化查询 待优化的场景: 有一个大表,每天产生的数据约100万,所以就采用表分区方案,每天一个分区。 下面是该表的DDLCREATE TABLE `t1` ( id` bigint(20) NOT NULL AUTO_INCREMENT, `date` date NOT NULL, `kid` int(11) DEFAULT '0', `uid` int(11) NOT NULL, `iid` int(11) DEFAULT '0', `icnt` int(8) DEFAULT '0', `tst` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `countp` smallint(11) DEFAULT '1', `isr` int(2) NOT NULL DEFAULT '0', `clv` int(5) NOT NULL DEFAULT '1', PRIMARY KEY (`id`,`date`), UNIQUE KEY `date` (`date`,`uid`,`iid`), KEY `date_2` (`date`,`kid`) ) ENGINE=InnoDB AUTO_INCREMENT=3180686682 DEFAULT CHARSET=utf8mb4 /*!50500 PARTITION BY RANGE COLUMNS(`date`) (PARTITION p20161201 VALUES LESS THAN ('2016-12-02') ENGINE = InnoDB, PARTITION p20161202 VALUES LESS THAN ('2016-12-03') ENGINE = InnoDB, PARTITION p20161203 VALUES LESS THAN ('2016-12-04') ENGINE = InnoDB, 该表上经常发生下面的慢查询:SELECT ... FROM `t1` WHERE `date` = '2017-04-01' AND `icnt` > 300 AND `id` = '801301';SQL优化思路: 想要优化一个SQL,一般来说就是先看执行计划,观察是否尽可能用到索引,同时要关注预计扫描的行数,以及是否产生了临时表(Using temporary) 或者 是否需要进行排序(Using filesort),想办法消除这些情况。 更进一步的优化策略则可能需要调整程序代码逻辑,甚至技术架构或者业务需求,这个动作比较大,一般非核心系统上的核心问题,不会这么大动干戈,绝大多数情况,还是需要靠DBA尽可能发挥聪明才智来解决。SQL性能瓶颈定位 现在,我们来看下这个SQL的执行计划:yejr@imysql.com[myDB]> EXPLAIN PARTITIONS SELECT ... FROM `t1` WHERE `date` = '2017-03-02' AND `icnt` > 100 AND `iid` = '502302'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: p20170302 type: range possible_keys: date,date_2 key: date key_len: 3 ref: const rows: 9384602 Extra: Using where 这个执行计划看起来还好,有索引可用,也没临时表,也没filesort。不过,我们也注意到,预计要扫描的行数还是挺多的 rows: 9384602,而且要扫描zheng整个分区的所有数据,难怪效率不高,总是SLOW QUERY。优化思考 我们注意到这个SQL总是要查询某一天的数据,这个表已经做了按天分区,那是不是可以忽略 WHERE 子句中的 时间条件呢? 还有,既然去掉了 date 条件,反观表DDL,剩下的条件貌似就没有合适的索引了吧? 所以,我们尝试新建一个索引:yejr@imysql.com[myDB]> ALTER TABLE t1 ADD INDEX iid (iid, icnt); 然后,把SQL改造成下面这样,再看下执行计划:yejr@imysql.com[myDB]> EXPLAIN PARTITIONS SELECT ... FROM `t1` partition(p2017030) WHERE `icnt` > 100 AND `iid` = '502302'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: p20170302 type: ref possible_keys: date,date_2,iid key: iid key_len: 10 ref: const rows: 7800 Extra: Using where 这优化效果,杠杠滴。 事实上,如果不强制指定分区的话,也是可以达到优化效果的: yejr@imysql.com[myDB]> EXPLAIN PARTITIONS SELECT ... FROM `t1` WHERE `date` = '2017-03-02' AND `icnt` > 100 AND `iid` = '502302'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: p20170302 type: ref possible_keys: date,date_2,iid key: iid key_len: 10 ref: NULL rows: 7800 Extra: Using where自己的想法: 绝大多数的SQL通过添加索引、适当调整SQL代码(例如调整驱动表顺序)等简单手法来完成。 多说几句,遇到SQL优化性能瓶颈问题想要在技术群里请教时,麻烦先提供几个必要的信息: 1.表DDL 2.表常规统计信息,可执行 SHOW TABLE STATUS LIKE ‘t1' 查看 3.表索引分布信息,可执行 SHOW INDEX FROM t1 查看 4.有问题的SQL及相应的执行计划 没有这些信息的话,就别去麻烦别人了吧。
-
9月17日,华为云正式推出数据库和应用迁移 UGO,这是一款专注于异构数据库对象迁移和应用迁移的专业化工具,通过预迁移评估、结构迁移两大核心功能,实现主流商用数据库到华为云数据库的自动化搬迁,助力客户轻松上云、一键切换数据库。数据库上云已成为企业管理者的共识,但上云哪是想上就能上。其中涉及的迁移问题不仅繁杂,而且不能出差错。尤其是令人头疼的兼容问题,不但涉及到结构迁移、语法转换、SQL转换等复杂操作,对数据库性能要求也很高。针对此难题,华为云数据库和应用迁移 UGO(Database and Application Migration UGO,简称为UGO)应运而生。华为云UGO 6大核心能力数据库源库画像:提供源库TPS、IOPS、QPS、DB配置、内存使用率、DB容量、活跃会话、表复杂度、CPU使用率、SQL复杂度等方面的数据,为客户迁移提供精准画像。目标库选型与规格推荐:依据源库画像,综合兼容性、性能、对象复杂度、使用场景等,推荐合适的目标库选型及优先级。根据源库画像,智能推荐不同选型下的规格及成本。为客户节省挑选时间,省心又省力。目标库兼容性分析:基于亿级别样本训练,语法转化率高达80%以上。对象采集包含14类核心对象,拥有业界齐全的对象采集,满足客户多种需求。迁移工作量评估:依据海量业务场景下的实际人力迁移成本作为评估基线,依据大量业务场景自动化迁移过程,累计迁移工作量作为输入,同时结合代码量、转化率、不兼容特性改造难度,方便客户对迁移工作有一个具体的量化感知。数据库结构迁移:通过对源数据库进行预迁移评估,然后根据评估结果制定高效安全、稳定可靠的解决方案,做好迁移前的准备工作。迁移实施部分,通过对象过滤、语法转换、对象校正和验证上线循环验证,最终实现目标数据库的迁移。应用SQL迁移:通过采集源库SQL流量,并进行SQL动态转换,将数据通过流量仿真回放形式迁移到目标库中,并提供性能分析报告,让客户对性能损耗问题一目了然。同时,通过对源库进行迁移评估和SQL翻译,并且输出SQL翻译报告,完成应用改造,最后迁移到目标库。华为云UGO曾在某知名金融企业迁移场景中获得优秀实践。该客户业务量庞大,拥有核心交易业务、渠道类业务以及OA系统等,数据库实例量巨大,单某主流商业数据库实例数目就高达1000+,单业务存储过程1800+。UGO目前已支持2个核心业务系统的语法自动化迁移,节省了80+%的工作量,同时提供自动错误定位和迁移校验,迁移过程中订正对象清晰明确,成功助力客户成功实现数据库的切换。华为云UGO的出现,让我们看到了数据库在迁移场景又一次实现了跃迁式发展,数据库结构迁移难题和应用系统的SQL转换,有了清晰可见的解决方案。未来,华为云UGO会不断自主创新,持续构筑技术硬实力,为客户提供更简单易用、高效可靠的迁移方案。 Ps:华为云数据库释放数字新动能,加速政企智能升级,观看直播请点击:https://live.huawei.com/huaweiconnect/meeting/cn/5637.html
-
9月17日,华为云在发布关系型数据库GaussDB(for MySQL)和非关系型数据库GaussDB NoSQL系列两大新品之后,又在关系型领域正式推出了GaussDB(for PostgreSQL)和GaussDB等新品,以全新的云数据库服务面向客户,进一步释放数据新动能。 聚焦全场景,GaussDB全新升级全新GaussDB云服务以统一的架构面向政企客户,聚焦关系型和非关系型领域等全场景,提供高性能、高可靠、高安全的云服务。华为云GaussDB已发布的包括关系型数据库GaussDB(for MySQL)、GaussDB(for PostgreSQL)、GaussDB,以及非关系型数据库GaussDB NoSQL系列,支持文档类型(MongoDB)、宽表类型(Cassandra)、时序(InfluxDB),K-V(Redis)等多协议接口。如今,最新版本的GaussDB系列产品实现了很多技术上的更新和迭代,满足了行业不同业务场景需求,赋能政企智能化发展。本文将对GaussDB关系型领域的三大新品进行详细解读。满足大规模业务场景,华为云GaussDB(for MySQL)分布式高扩展GaussDB(for MySQL)是华为新一代高性能企业级分布式数据库,完全兼容MySQL,支持主备部署和全分布式部署两种形态。主备部署,最大支持1写15读,分钟级添加只读实例,支持读写分离,自动负载均衡。全分布式部署,采用share nothing架构,融合华为分布式SQL引擎和企业级分布式存储DFV双重优势,业务请求通过负载均衡层转发到分布式SQL引擎层,分布式SQL引擎相关模块对SQL进行解析、分解,路由到各个分片,最后各个分片返回相应结果汇聚返回给用户端。分布式版支持分库分表,读写分离,自动负载均衡,底层分片支持多节点写入,可很好解决传统MySQL架构面临的各种瓶颈,是企业级核心数据库上云的优选。支持PB级海量存储,QPS可达千万级,秒级扩容能力,满足几乎所有大型企业集团对核心数据库的要求。GaussDB(for MySQL)曾在国内知名保险客户迁移主流商业数据库项目中获得优秀实践。基于客户搬迁主流商业数据库的核心诉求,华为云采用完备的工具链切换商业数据库和专家服务相结合的解决方案,成功实现了客户方商业数据库的迁移。凭借GaussDB(for MySQL)的极强兼容性和超高性能,100%兼容MySQL生态,系统应用无须改造,加之完备的工具链和专家服务,最终实现客户系统4倍效率提升,业务响应及时,极大满足了客户诉求。5倍性能提升,为企业而生的华为云GaussDB(for PostgreSQL) GaussDB(for PostgreSQL)是华为云新一代高性能高可用的企业级分布式云数据库,采用计算与存储分离架构,融合了传统数据库、云计算与新硬件技术的优势,优于原生PostgreSQL 5倍性能,100%兼容PostgreSQL生态,实现百万级QPS高吞吐,128TB海量分布式智能存储,IT资源得到充分利用,数据安全可靠。GaussDB(for PostgreSQL) 在地理空间算力方面表现优越,兼容GIS标准,支持专业级时空数据处理,性能比开源PostGis提升20%+。迁移方面,GaussDB(for PostgreSQL)搭配异构应用迁移工具UGO和数据复制服务DRS,给客户带来极致高效的迁移体验。融合创新,华为云GaussDB提供一体国产化数据库解决方案 GaussDB 是华为云深度融合数据库领域多年的经验,结合企业级场景需求,推出的新一代企业级分布式数据库,支持集中式与分布式两种部署形态。在支撑传统业务的基础上,持续构建竞争力特性,为企业面向5G时代的挑战,提供了无限可能。GaussDB 通过打造一体国产化数据库解决方案,在企业核心交易系统和海量事务型场景方面提供了灵活高效的应对方案。华为云数据库集成华为云底座,支持云上全球化部署和混合云本地部署,目前华为云GaussDB已在500+大客户中规模商用,遍布金融、政府、电信、能源、交通、物流、电商等行业。在新基建大潮下,华为云数据库会继续乘云破浪,以全新的GaussDB云服务赋能千行百业智能升级。 Ps:华为云数据库释放数字新动能,加速政企智能升级,观看直播请点击:cid:link_0
-
阅读心得 LEARNINGSOracle的Cost计算公式单块读耗时:IO寻道寻址耗时+块大小/IO传输速度,典型的估算值:10+8K/4K=12ms多块读耗时IO寻道寻址耗时+db_file_multiblock_count*块大小/IO传输速度,SQL优化的核心思想就是想方设法减少SQL的物理I/O次数(不管是单块读次数还是多块读次数)徐老师还说,可以理解为减少sql 扫描的数据块数。即使有缓存,减少块的扫描次数也可以降低CPU的占用。子查询非嵌套(SubqueryUnnesting)当where子查询中有in、notin、exists、notexists等,CBO会尝试将子查询展开(unnest),从而消除FILTER,这个过程就叫作子查询非嵌套。子查询非嵌套的目的就是消除FILTER。视图合并(View Merge)当SQL语句中有内联视图(in-line view,from后面的子查询),或者SQL语句中有用create view创建的视图,CBO会尝试将内联视图/视图拆开,进行等价的改写,这个过程就叫作视图合并。如果没有发生视图合并,在执行计划中,我们可以看到VIEW关键字,而且视图/子查询会作为一个整体。如果发生了视图合并,那么视图/子查询就会被拆开,而且执行计划中视图/子查询部分就没有VIEW关键字。谓词推入(Pushing Predicate)当SQL语句中包含不能合并的视图,同时视图有谓词过滤(也就是where过滤条件),CBO会将谓词过滤条件推入视图中,这个过程就叫作谓词推入。谓词推入的主要目的就是让Oracle尽可能早地过滤掉无用的数据,从而提升查询性能。6.两个超大表人工分区超大表为了避免PGA不够,可以使用人工分析的方式1)对连接列增加一个伪列,例如ora_hash(object_id,4),把object_id哈希为0、1、2、3、42)使用这个伪列对两个表分区7.分页查询多表连接消除排序对于主表(需要排序的表)来说,这个关联的表也相当于一个过滤条件,同样也只有大部分的数据满足查询条件的情况下可以通过index full scan来消除排序。要求以排序表为驱动表,两表嵌套循环嵌套循环的算法驱动表返回一行数据, 通过连接列传值给被驱动表,驱动表返回多少行, 被驱动表就要被扫描多少次。在执行计划中,离NESTED LOOPS关键字最近的表就是驱动表。HASH连接的算法两表等值关联,返回大量数据,将较小的表选为驱动表,将驱动表的“select列和join列”读入PGA中的work area, 然后对驱动表的连接列进行hash运算生成hash table, 当驱动表的所有数据完全读入PGA中的work area之后,再读取被驱动表(被驱动表不需要读入PGA中的workarea),对被驱动表的连接列也进行hash运算, 然后到PGA中的work area去探测hash table, 找到数据就关联上,没找到数据就没关联上。排序合并连接的算法两表关联,先对两个表根据连接列进行排序,将较小的表作为驱动表, 然后从驱动表中取出连接列的值,到已经排好序的被驱动表中匹配数据,如果匹配上数据,就关联成功。 驱动表返回多少行,被驱动表就要被匹配多少次,这个匹配的过程类似嵌套循环,但是嵌套循环是从被驱动表的索引中匹配数据,而排序合并连接是在内存中(PGA中的workarea) 匹配数据。排序合并连接主要用于处理两表非等值关联。4.笛卡儿连接两个表关联没有连接条件的时候会产生笛卡儿积,这种表连接方式就叫笛卡儿连接。执行计划中MERGE JOIN CARTESIAN就表示笛卡儿连接。在多表关联的时候,两个表没有直接关联条件,但是优化器错误地把某个表返回的Rows算为1行(注意必须是1行),这个时候也可能发生笛卡儿连接。5.标量子查询优化建议尽量避免使用标量子查询,假如主表返回大量数据,主表的连接列基数很高,那么子查询中的表会被多次扫描,从而严重影响SQL性能。当SQL里面有标量子查询,我们可以将标量子查询等价改写为外连接,从而使它们可以进行HASH连接。重点摘录 NOTES我们如果将SQL改写为in/not in这种写法,子查询虽然被固化为整体,但是子查询中没有主表连接列字段,这个时候CBO就不会选择FILTER。当CBO选择hash join时,连接谓词也不会下推常量的谓词推入对性能的提升都是有益的。常量的谓词推入就是谓词是正常的过滤条件,而非连接列。分页语句中也不能有distinct、groupby、max、min、avg、union、unionall等关键字。因为当分页语句中有这些关键字,我们需要等表关联完或者数据都跑完之后再来分页,这样性能很差
-
在实际的数据库Sqlserver的运维的过程中,很多时候我们需要做到数据的备份操作,可以做到定时备份,也可以进行手动数据库备份。在实际的过程中,有时候因业务需要备份出完整数据库,而有时候又因为实际业务只需要影响到一张表或者几张表,备份整个数据库未必是最优的方案,此时可采用生成脚本或者Select Into的方式对单表进行备份。DBA在运维过程中备份数据差不多用的就是以上几种操作方式,下面就详细说下这几种备份方式。 (1)数据库的备份 此方式备份数据库是最完整的,可以将数据库中所有的对象都备份下来生成个.Bak文件,后续如果出现问题,可以直接通过.bak文件还原数据库,但备份的耗时会比较长,并且占用磁盘空间会比较大。此方法备份的操作是直接在Sqlserver数据库管理软件中选中数据库,右键选择任务,然后选择备份,如下图然后进入备份界面后选择备份存放的路径以及设置好备份文件名称,点击确定即可进行备份,如下图(2)通过生成脚本的方式单表备份有时候我们业务系统的更新可能只涉及到一张表或者几张表,此时可以通过对每个数据表进行单表备份的方式来操作,只备份这几张涉及到变更操作的数据表。操作的方法为在Sqlserver数据库管理软件中选中数据库,右键选择任务,然后选择生成脚本,参考方法一中的第一个图。然后进入生成脚本界面,选择下一步进入设置界面:进入设置界面后,选择特定的数据库对象,然后再从中选择你需要备份的数据表,如下图:然后点击下一步,进入存储路径以及导出设置界面,保存到文件可以选择保存为单个文件或者每个对象一个文件。此处关键一点记得选择高级按钮,在里面设置要编写脚本的数据类型,否则默认规则导出来的文件中只含有表的架构语句(即创建table的SQL语句),不含有任何表数据。如下图选择高级按钮后,进入高级设置项,将下拉菜单下拉到最后可以看到一个设置项叫做要编写脚本的数据的类型。将之设置为架构和数据或者仅限数据。只有这两种方式导出来的文件中才包含表格中的数据,仅限架构导出来的只是创建table的语句设置好上述信息后点击完成,自动创建备份文件到指定的存储路径下,生成的文件是.sql后缀的数据库SQL文件。(3)通过Select Into语句将一个表快速备份到一个临时新表中。此备份方法是将查找出来的数据快速写入到指定的备份新表中,自动创建table。如将A数据库中的Product表所有数据快速备份到ABackUp数据库中的Product_0228表中,可使用以下语句操作,直接在新建查询窗口执行即可。Select * Into ABackUp.dbo.Product_0228 FROM A.dbo.Product;执行此语句要求into后面的表在执行之前不存在,存在的话上述语句无法执行。这个Product_0228表格也无需手动处理,上述语句在执行的时候自动创建跟Product表一致的结构。
-
9月3日,华为云数据库挑战赛商业组赛道落下帷幕;9月11日,华为云数据库挑战赛极客组赛道也正式落幕,至此, 2020华为云数据库挑战赛圆满结束。本届大赛经过为期两个多月的激烈角逐和层层PK,最终共15支队伍斩获大奖。开发者改变世界,商业化加速前行这是一个科技人才群雄逐鹿的时代,充满了拓荒的激情和探索未知的惊喜,也是行业创新和技术落地的智能时代,推动着科技商业化的发展。本届大赛旨在探索数据库领域技术问题可行性,培养数据库领域工程类人才,满足数据库领域商业需求,加速企业行业数字化转型。通过企业和开发者创新解决方案,激发行业创新,赋能企业发展。作为开发者主场的极客组赛道,经过500+支队伍的激烈角逐,最终10支队伍晋级决赛。评委由4位权威专家和技术专家坐镇,从创新性、技术性、可行性、社会价值等多个维度进行评分,经过层层评定,最终以下队伍斩获大奖:值得一提的是,比赛开始之初,数据库的专家团就一直在答疑群为各位选手解惑,经常与选手们切磋交流,甚至深夜还在细心答复,还在初赛阶段跟选手们开展了一场赛事直播,赛题答疑面对面,耐心认真回复选手的每一个问题,深受选手们的欢迎和喜爱。作为企业创新主场的商业组赛道,入围的每一部参赛作品都凝结了企业和开发者对技术的日夜打磨,从技术实现到方案落地,每个细节都经过了层层推敲,在技术与商业创新应用上具有广阔的市场应用前景。评委从商业可复制性、各数据库服务协同深度等维度综合评定,最终祥云至达(北京)科技公司斩获金奖,浙江杭云网络科技公司和上海恒驰信息系统有限公司荣获银奖,上海龙田数码科技公司和浙江福华云擎信息科技公司荣获优胜奖。华为云数据库挑战赛商业组决赛现场照片突破技术壁垒,不断加速创新本届赛事极客组和商业组都表现出了不同程度的技术创新,对技术问题和行业解决方案都有自己独特新颖的看法,在技术落地和方案实现方面有了更深的思考。极客组方面,通过对代码技术的改进,实现了存储性能的提升。“通过详细的统计信息获取数据规模和写入规律,并采用紧凑的格式存储数据以减少内存占用。写入数据时先写入writecache,然后再合并入文件,读取时先从TLS cache读取,极大的提升了性能。代码具有很好的抽象。”——0xCC团队作品点评“代码实现之前有详细的分析,并列出了计划。文件采用预分配以加速写入速度,数据采用了分片减少冲突,读采用了cache提升读性能。代码比较规范整洁。”——rollback团队作品点评华为云数据库挑战赛极客组专家评委团商业组方面,祥云至达企业通过技术创新,实现了OA系统本地数据库迁移上云,在线迁移业务无须中断,满足了客户对数据安全性和资源灵活配置的需求。恒驰信息系统企业通过唤醒"沉睡"数据,提炼有价值数据,获得可视化数据。“本次作品覆盖电商、酒店、智慧园区等领域,每位伙伴都很优秀,感谢各位伙伴们的支持,我们非常希望与各位伙伴一起强强联手,打造出创新的、差异化的、更有价值的、能够解决客户问题的、有针对性和有竞争力的数据库销售与解决方案。未来华为云数据库持续坚持战略投入,创新不止,与各位伙伴一起共筑生态与人才势能,联合服务创新,激发商业潜能,共赢未来新机遇。”——华为云数据库CTO庄乾锋表示“大赛的选手团队提供的基于数据库的应用解决方案都十分优秀。参赛作品基于华为云任一数据库或多个数据库组合优势,并在数据库解决方案上有所创新,从决赛入围的选手作品中可以看到解决方案在水平行业的可复制性和可落地性,我们的评奖基准也是主要参考方案的商业可复制性、各数据库服务协同深度等维度综合评定。经过本次路演环节,我们更加坚定,也更有信心联合伙伴一起孵化更多优秀的数据库解决方案,合作共赢!”——华为云数据库产品总监兼大赛评委张昆在决赛尾声时总结道华为云数据库挑战赛商业组决赛点评现场照片随着企业数字化进程的加快,行业必定催生新的业务和需求,开发者作为改变世界的重要一环,是技术创新和产业生态建设的重要力量。华为云一直致力于为开发者/伙伴提供一个技术交流、人才培养、机遇共创的平台,携手更多领域开发者/伙伴共建一个开放、合作、共赢的产业生态,共研技术新方向,共创智能新未来。 Ps:华为云数据库金秋特惠活动进行时,数据普惠上云,新用户享半价,欢迎选购体验:https://activity.huaweicloud.com/dbs_Promotion/index.html
-
explain可以打印SQL的执行计划,根据执行计划的一些特征,我们可以发现一些明显的烂SQL的特征,具有这些特征的SQL一般都是执行性能很差的,需要调优的。不下推的语句:explain verboseselect distinct on (c1) test1.a c1from test1, test2where test1.a = test2.b;不下推语句会有类似上述的关键字,性能会比较差。在cn节点的pg_log中,可以找到对应语句的不下推的原因。2. 执行计划中有SubPlan:select 1, (select count(*) from customer_address_001 a4 where a4.ca_address_sk = a.ca_address_sk) as GZCS from customer_address_001 a;如果执行计划中有SubPlan关键字,一般这种SQL的性能都比较差。要想办法改写。在新版本中,优化器可以支持更多场景的这种自动转化,请大家根据实际版本对应的执行计划,根据需要来改写上述逻辑。3. NestLoop + indexScan的误用一般来说, NestLoop + indexScan这种计划适用用两表关联后返回结果集比较小的情况,并且索引是btree索引的场景,但是某些场景下,可能出现优化器估算不准,在并不适合这种场景下,选择了这种计划,就会到执行性能很差。一般处理这种问题,就是设置参数set enable_index_nestloop = off来调优。4. 其他场景,后续补充
-
直播回看地址:https://bbs.huaweicloud.com/webinar/100019“全部直播”部分选择技术领域“Gauss AP”可以查看到全部直播内容本次直播是五节课的系列课程,课程计划如下:第二天直播会深入讲解GaussDB(DWS)数据仓库表设计原则,Sql迁移,Sql进阶能力,应用程序开发指南等扫描以下海报二维码即可进入直播间,也可通过链接进入:https://huawei.vhallyun.com/fe/watch/5144【学习福利】想要利用坐地铁,排队等零碎时间来学习专业数据库知识吗?马上扫描华为云AI微信公众号“华为云AI”,带给你不一样的资讯,除了华为云数仓及人工智能相关技术类精品文章外,也可以手机端登陆论坛提问并查看技术分享。GaussDB(DWS)产品主页:https://www.huaweicloud.com/product/dws.html GaussDB(DWS)产品主页二维码HCIP-GaussDB-OLAP认证介绍与预约考试:https://e.huawei.com/cn/talent/#/cert/product-details?certifiedProductId=195&authenticationLevel=CTYPE_CARE_HCIP&technicalField=PSC&version=1.0
-
https://mp.weixin.qq.com/s?__biz=MzA5MjM5OTYzNA==&mid=2247487967&idx=1&sn=e771f7eec23ed379703ffd03da88820a&chksm=906ce0a2a71b69b4fe73ec7f0e0c44a57cbbf34e080516980f53df500ea5b06a04cc0fd25235&token=517396443&lang=zh_CN#rd
-
1.业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下:SQL写法:SELECT count(*) FROM table WHERE a = 1 AND b = 2Java写法:int nums = xxDao.countXxxxByXxx(params); if ( nums > 0 ) { //当存在时,执行这里的代码 } else { //当不存在时,执行这里的代码 }更好的方案: SQL写法:SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1Java写法:Integer exist = xxDao.existXxxxByXxx(params); if ( exist != NULL ) { //当存在时,执行这里的代码 } else { //当不存在时,执行这里的代码 }SQL不再使用count,而是改用LIMIT 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了业务代码中直接判断是否非空即可。
-
数据库这个大家庭里,还有一位不容小觑的成员云数据库SQL Server什么是云数据库SQL Server ?Microsoft SQL Server是世界上最受欢迎的商用关系型数据库集成各类管理开发工具。云数据库SQL Server为微软正版授权,完美支持基于Windows架构的应用程序,性能与性价比兼具。云数据库SQL Server优势高用同城高可用架构,自动故障秒级切换高安全14项国际安全合规认证,有效抵御网络攻击全面监控报警专业管理运维平台,多维系统资源监控,自定义报警配置高性价比微软SQL Server企业版授权许可,无需支付版权费用云数据库SQL Server应用场景金融行业支持VPC、子网设置实现网络隔离安全组设置提供访问控制保证数据安全[提供灵活备份方案支持高可靠业务需求互联网行业兼容微软SQL Server 线下数据库迁移上云优秀事务并发处理能力保证数据可靠和稳定要求弹性扩容,匹配业务,节省成本移上云软件开发行业无缝对接微软集成开发工具,缩短开发周期使用微软原生可视化管理工具 |,降低运维难度和成本
-
场景排查1. ECS能否ping通RDS。如果ping不通,可以查看ECS和RDS是否处于同一个VPC内,是否使用同一个安全组。2. 检查连接IP和端口号是否正确。注意IP和端口号之间使用“逗号”隔开。3. 检查RDS服务的运行状态是否异常。4.查看用户名密码是否正确,尝试重置密码。5. 尝试重启RDS实例,看看是否改善。解决方案步骤 1 登录管理控制台,选择区域和项目,选择“数据库 > 关系型数据库”。进入关系型数据库“实例管理”页面,单击目标实例名称,进入“基本信息”页面和“备份恢复”页面确定连接信息和备份信息。步骤 2 在实例“基本信息”页面查看管理员账户名。步骤 3 下载并在ECS上安装SSMS客户端。步骤 4 从ECS连接到RDS。
-
不确定性--是企业在这个时代所面临的最大挑战。诚如今年爆发的新冠病毒疫情,对各行各业产生了巨大的影响,酒店行业尤为明显。疫情让出差、旅游、娱乐等活动全面按下“暂停键”,酒店行业遭遇了一次前所未有的危机。所谓危机,即危险中同样蕴育着机会。从2003年的SARS疫情到2009年的金融危机,再到今年的新冠疫情,几乎每一次危机都是酒店业的一次行业洗牌和整体提升。面对新冠疫情这次大危机,酒店业则迎来了一次数字化变革:无接触服务、人脸识别、机器人服务、云门锁管理、个性化推荐……数字化技术的加速应用让酒店行业加速完成新蜕变。当危机来临,行业用户拥有足够强大的数字化能力,则可以应对危机,甚至化危为机;而没有足够的数字化能力,则可能会率先被市场所淘汰。酒店行业当前所面临的这一切,再次证明数字化转型和以此构建起的数字化能力的重要性。在当下,数据已经成为这个时代最重要的生产资料,算力是新的生产力,云、AI、5G则是新的生产工具。尤其是云,正在成为包括酒店行业在内所有用户数字化转型中必不可少的重要工具。云计算是技术、资源、经验、人力的积累与输出,通过专业的服务与工具可以让千行百业用户不用去构建整套IT基础设施的情况下,用较低成本即可享受到数据库、AI、大数据等先进数字化技术所带来的好处。其中,数据库上云可谓是至关重要。当前,千行百业都在诞生大量的数据,并呈现出以下明显特征:首先是数据量发生巨大变化,数据爆炸性增长成为各个行业的常态;其次,数据类型趋于丰富,从过去简单的结构化,到如今丰富的非机构化数据,数据类型和种类更加多元化;第三,行业用户对基于数据的实时需求更高了;最后则是数据共享和开放的趋势不可阻挡。所有这些需求让数据库上云不再是一件简单搬迁的事情,而是一项复杂且具有技术含量的工程。有这么一家酒店集团,其在数据库上云可谓是一波三折,并且在年初还遭遇了疫情的影响,最终逆转了局面,成功化危为机,加速了酒店智能化升级之路。这家酒店集团叫锦江酒店(中国区)。作为全球著名的酒店管理集团,锦江拥有海量酒店数量、上亿级别的用户体量,也是国内第一家上云的酒店企业。面对今年疫情所带来的危机,锦江酒店管理集团迅速行动,利用云数据库等基础数字化能力,安排一套应对危机的“组合拳”,不仅成功应对了疫情对于业务带来的冲击,还加速向AI和数据驱动的酒店管理集团转变。事实上,锦江酒店(中国区)的上云之路并非一帆风顺,从三年前开始全面准备上云,没少“踩坑”、“绊脚”,特别是在数据库上云方面,经历了多家云数据库选择、考察、验证等曲折过程……如今,锦江酒店(中国区)在完成数据库上云之后,实现了重大事故清零、一组服务器可运行800+家门店业务、系统效率提升36倍、全量查询性能提升270倍……这一切是如何做到的?锦江酒店集团数据库上云从评估、详细方案设计、具体方案落地、测试等过程中又发生了哪些有意义的故事?锁定华为Cloud & AI Live高端对话《企业数据库发展之路》,锦江酒店中国区运营管理中心信息系统副经理凌晨、华为云数据库业务总裁苏光牛、华为云数据库解决方案架构师马千里带你揭晓!资料搜集来自华为官网
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签