• [技术干货] 【小资说库】第6期 什么是数据库事务?事务的ACID属性是什么?
    事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。https://baike.baidu.com/item/%E4%BA%8B%E5%8A%A1/5945882在SQL语句中,定义事务的语句有三条:BEGIN TRANSACTIONCOMMITROLLBACK每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。如果用户没有显式定义事务,则由DBMS按缺省规定自动划分事务。这个缺省规定就是:每条单独的SQL语句就是一个事务。https://bbs.csdn.net/topics/300178999事务具有ACID特性:原子性Atomicity:对于一个事务来讲,要么一起执行成功要么一起失败,执行的过程中是不能被打断或者执行其他操作的。一致性Consistency:事务必须是使数据库从一个一致性状态变为另一个一致性状态。一致性与原子性是密切相关的。隔离性Isolation:各个事务之间不会互相影响。即一个事务内部的操作及使用的数据对并发的启停事务是隔离的。并发执行的各个事务之间不能互相干扰。持久性Durability:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来其他操作或故障不应该对其有任何影响。ACID特性中,一致性是根本,原子性、隔离性和持久性都是为一致性服务的。前期汇总:【小资说库】第1期 什么是数据库【小资说库】第2期 数据库发展历史【小资说库】第3期 你拿什么指使DBMS干活——SQL介绍【小资说库】第4期 什么是DDL、DML和DCL【小资说库】第5期 OldSQL、NoSQL和NewSQL  
  • [技术干货] 【小资说库】第4期 什么是DDL、DML和DCL
    上一期我们有介绍到什么是SQL及SQL标准。SQL有如下的显著特点:SQL只要提出“做什么”,无需了解存取路径,存取路径的选择以及SQL的操作过程由数据库管理系统自动完成。SQL语言以同一种语法结构提供多种实用方式。SQL能够独立地用于联机交互,也可以嵌入到高级语言(例如C、C++、Java)程序中。语言简洁,易学易用。完成核心功能只用了9个动词:数据定义语言DDL(Data Definition Language):CREATE、ALTER、DROP数据操作语言DML(Data Manipulation Language):SELECT、INSERT、UPDATE、DELETE数据控制语言DCL(Data Control Language):GRANT、REVOKEDDL,顾名思义,用于定义或修改数据库中对象的SQL语句。如:CREATE DATABASE/ALTER DATABASE/DROP DATABASE CREATE SCHEMA/ALTER SCHEMA/DROP SCHEMA CREATE TABLESPACE/ALTER TABLESPACE/DROP TABLESPACE CREATE TABLE/ALTER TABLE/DROP TABLE CREATE INDEX/ALTER INDEX/DROP INDEX……DML,从名字上也不难看出,是指对数据库中的数据进行操作的SQL语句:SELECT:查询数据库中的数据。INSERT:向数据库中插入数据。UPDATE:更新表中的数据——修改满足条件的所有行中指定的字段值。DELETE:删除表中的数据。DCL,数据控制语言,是指控制哪些人可以操作哪些数据的SQL语句。GRANT:是将数据的操作权限授予用户。通常是按照对象纬度进行授予。REVOKE:是撤销用户对数据的操作权限。通常也是按照对象纬度进行撤销的。下一期:【小资说库】第5期 OldSQL、NoSQL和NewSQL  前期汇总:【小资说库】第1期 什么是数据库【小资说库】第2期 数据库发展历史【小资说库】第3期 你拿什么指使DBMS干活——SQL介绍
  • [技术干货] 性能诊断好难?华为云DAS服务全量SQL洞察为您支招~~
    随着云数据库业务规模不断扩大,用户对安全审计、性能智能分析等高级特性的要求越来越高。如何安全审计SQL?如何快速定位性能异常?如何保护数据库安全?是每个云厂商不得不思考的问题。华为云DAS服务提供的全量SQL洞察,集合了数据库内核研发能力,在对实例性能影响极小(5%以内)的情况下,对全量SQL进行记录,并基于这份全量SQL数据进行分析,而且还提供了多维度的分析、搜索、过滤的能力,很好的解决了上述难题。那么华为云DAS服务提供的全量SQL洞察特性具体是怎么做的呢?全量SQL洞察构筑的3大能力全量SQL洞察,又称之为全量SQL审计,不仅支持全量SQL记录的查询能力,还提供了访问最频繁、更新最频繁的表,锁等待时间最长的SQL等多维度的分析、搜索、过滤能力,帮助用户全面洞察SQL,快速找出异常,保障数据库稳定运行。全量SQL洞察特性具体构筑了以下3大能力:Ø  SQL列表:不仅可以帮助用户记录所有执行过的SQL语句,还提供了执行状态、执行时间、执行耗时、更新行数、扫描行数、锁等待时间等分析能力,支持基于关键字、执行时间范围、更新行数等搜索和过滤的能力,方便用户查询SQL信息,帮助判断SQL问题,有效优化数据库性能,并且满足对数据安全有严格要求的行业的需求。Ø  SQL模板分析:直观展示了近15分钟、半小时等时间段内的SQL执行状态和执行次数的变化曲线,方便用户快速掌握该时间段内的SQL执行信息。根据参数,对应划分了不同的SQL模板,并针对每个模板提供了耗时、执行次数、扫描行数等可排序的信息,以及对每个SQL模板具体操作详情做了分析汇总,帮助用户快速找到有问题的SQL。Ø  SQL操作类型分析:为了让用户更直观了解和分析SQL信息,SQL操作类型分析将用户最关心和使用最多的6种SQL类型进行了直观的曲线展示,支持按照总执行次数、平均耗时等维度进行排序分析,同时每种类型SQL进行了信息汇总,更加方便用户快速查看每种类型的SQL详细信息。全量SQL洞察特性是华为云数据库精心推出的一款性能诊断利器,极大帮助了用户快速定位SQL异常,有效维护数据库稳定运行,欢迎大家Pick。戳它了解更多。【赛事招募】华为云数据库挑战赛火热报名中,诚邀各路数据库英豪前来挑战。丰厚奖金、精美拉新礼品、优质offer推荐、自我展示舞台,各种优质福利拿不停,戳下方二维码,赶紧加入我们吧!
  • [技术干货] U8CLOUDE 线下客户端如何在RDS SQL Server上进行数据库初始化步骤
    背景:用友U8线下盒子账号需要在华为公有云端进行部署安装,在用户将应用端安装到ECS虚拟机上之后,还需要创建RDS SQL Server,并远程指定该实例作为后端数据库,同时需要在该实例上进行U8数据库初始化操作,具体操作流程如下。 步骤:1.创建RDS SQL Server实例,通过华为云DAS数据库在线管理工具直接登录该实例点击实例进入实例详情页,在基本信息Tag页的右上角点击登录按钮2.在DAS在线管理界面点击SQL窗口,在新窗口中输入以下脚本并直接执行(也可以通过SSMS官方客户端连接执行):拷贝以下脚本到窗口中直接执行:-- 创建数据库USE master;goIF DB_ID (N'U8CLOUD') IS NOT NULLDROP DATABASE [U8CLOUD];goCREATE DATABASE [U8CLOUD] ALTER DATABASE [U8CLOUD] ADD FILEGROUP [NNC_DATA01] ALTER DATABASE [U8CLOUD] ADD FILEGROUP [NNC_DATA02] ALTER DATABASE [U8CLOUD] ADD FILEGROUP [NNC_DATA03] ALTER DATABASE [U8CLOUD] ADD FILEGROUP [NNC_INDEX01] ALTER DATABASE [U8CLOUD] ADD FILEGROUP [NNC_INDEX02] ALTER DATABASE [U8CLOUD] ADD FILEGROUP [NNC_INDEX03] ALTER DATABASE [U8CLOUD] ADD FILE(NAME = N'nnc_data01', FILENAME = N'D:\RDSDBDATA\DATA\nnc_data01_Data.NDF' , SIZE = 500, FILEGROWTH = 200) TO FILEGROUP [NNC_DATA01] ALTER DATABASE [U8CLOUD] ADD FILE(NAME = N'nnc_data02', FILENAME = N'D:\RDSDBDATA\DATA\nnc_data02_Data.NDF' , SIZE = 500, FILEGROWTH = 200) TO FILEGROUP [NNC_DATA02] ALTER DATABASE [U8CLOUD] ADD FILE(NAME = N'nnc_data03', FILENAME = N'D:\RDSDBDATA\DATA\nnc_data03_Data.NDF' , SIZE = 500, FILEGROWTH = 200) TO FILEGROUP [NNC_DATA03] ALTER DATABASE [U8CLOUD] ADD FILE(NAME = N'nnc_index01', FILENAME = N'D:\RDSDBDATA\DATA\nnc_index01_Data.NDF' , SIZE = 200, FILEGROWTH = 100) TO FILEGROUP [NNC_INDEX01] ALTER DATABASE [U8CLOUD] ADD FILE(NAME = N'nnc_index02', FILENAME = N'D:\RDSDBDATA\DATA\nnc_index02_Data.NDF' , SIZE = 200, FILEGROWTH = 100) TO FILEGROUP [NNC_INDEX02] ALTER DATABASE [U8CLOUD] ADD FILE(NAME = N'nnc_index03', FILENAME = N'D:\RDSDBDATA\DATA\nnc_index03_Data.NDF' , SIZE = 200, FILEGROWTH = 100) TO FILEGROUP [NNC_INDEX03]--修改数据库字符集ALTER DATABASE [U8CLOUD] COLLATE Chinese_PRC_CI_ASGO--切换数据库use U8CLOUDgo --启用快照隔离declare @exec_stmt nvarchar(4000) select @exec_stmt='ALTER DATABASE '+db_name()+' set read_committed_snapshot ON ' exec (@exec_stmt) 3.返回实例管理详情页:1.在左侧点击参数修改进入参数修改页面2.在查询框中输入max查找参数3.找到max degree of parallelism 将其值修改为14.点击保存完成操作 4.临时数据库不用再改了,已经是最佳实践
  • [教程指导] 【MapReduce服务】从零开始使用Spark SQL
    Spark提供类似SQL的Spark SQL语言操作结构化数据,本章节提供从零开始使用Spark SQL,创建一个名称为src_data的表,然后在src_data表中每行写入一条数据,最后将数据存储在“mrs_20160907”集群中。再使用SQL语句查询src_data表中的数据,最后可将src_data表删除。前提条件将OBS数据源中的数据写入Spark SQL表中时,需要先获取AK/SK。获取方法如下:登录管理控制台。单击用户名,在下拉列表中单击“我的凭证”。单击“访问密钥”。单击“新增访问密钥”,进入“新增访问密钥”页面。输入登录密码和短信验证码Email验证码,单击“确定”,下载密钥,请妥善保。操作步骤准备使用Spark SQL分析的数据源。样例txt文件如下:abcd3ghjiefgh658ko1234jjyu97h8kodfg1kk99icxz3上传数据至OBS。登录OBS控制台。单击“创建桶”,创建一个名称为sparksql的桶。sparksql仅为示例,桶名称必须全局唯一,否则会创建桶失败。单击sparksql桶名称,并选择“对象”。单击“新建文件夹”,创建input文件夹。进入input文件夹,单击“上传对象 > 添加文件”,选择本地的txt文件,然后单击“上传”。上传完成后如图 上传文件所示。图1 上传文件登录MRS控制台,在左侧导航栏选择“集群列表 > 现有集群”,单击集群名称。将OBS中的txt文件导入至HDFS中。选择“文件管理”。在“HDFS文件列表”页签中单击“新建”,创建一个名称为userinput的文件夹。进入userinput文件夹,单击“导入数据”。选择OBS和HDFS路径,单击“确定”。OBS路径:obs://sparksql/input/sparksql-test.txtHDFS路径:/user/userinput提交Spark SQL语句。方式一:创建一个src_data表,将数据源中的数据一行一行写入src_data表中。方式二:创建一个表src_data1,将数据源中的数据批量load到src_data1表中。create table src_data1 (line string) row format delimited fields terminated by ',' ;load data inpath '/user/omm/userinput/sparksql-test.txt' into table src_data1;数据源存储在HDFS的“/user/userinput”“/user/omm/userinput”文件夹下:create external table src_data(line string) row format delimited fields terminated by '\\n' stored as textfile location '/user/omm/userinput';数据源存储在OBS的“/sparksql/input”文件夹下:create external table src_data(line string) row format delimited fields terminated by '\\n' stored as textfile location 'obs://AK:SK@sparksql/input';AK/SK获取方法,请参见前提条件。在MRS控制台选择“作业管理”,具体请参见运行“用户指南 > 管理现有集群 > 作业管理 > 运行Spark作业”章节。只有“mrs_20160907”集群处于“运行中”状态时才能提交Spark SQL语句。输入创建表的Spark SQL语句。输入Spark SQL语句时,总字符数应当小于或等于10000字符,否则会提交语句失败。语法格式:CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path];创建表样例存在以下两种方式。采用方式二时,只能将HDFS上的数据load到新建的表中,OBS上的数据不支持直接load到新建的表中。输入查询表的Spark SQL语句。语法格式:SELECT col_name FROM table_name;查询表样例,查询src_data表中的所有数据:select * from src_data;输入删除表的Spark SQL语句。语法格式:DROP TABLE [IF EXISTS] table_name;删除表样例:drop table src_data;单击“检查”,检查输入语句的语法是否正确。单击“确定”。Spark SQL语句提交后,是否执行成功会在“执行结果”列中展示。删除集群。
  • [技术干货] Spark SQL对指定目录执行CTAS语句后,目录的副本策略发生变化
    问题对HDFS上已存在的目录设置EC策略,之后在spark sql中使用create table *** options (path=’**’) as select *** 语句在该目录上建表并导入数据,语句执行完成后发现目录的副本策略发生了变化。回答此语法Spark在执行时,处理逻辑是将原有数据覆写,会将原有目录删除重建,重建后目录的副本策略默认保持与上层目录一致。因此若原有目录的副本策略与上层目录不一致,则会表现出目录的副本策略发生变化的情况。
  • [技术干货] 金蝶K/3 Wise接入华为云数据库RDS SQL Server
    1.   简介企业或用户将数据中心部署在线下,采用独立软件提供商(Independent Software Vendor)软件进行管理。线下数据运维成本较高,故障容灾单一化,是目前遇到的瓶颈。采用云上数据库并平滑兼容线下ISV软件管理可以降低企业上云难度,加速企业上云,本文以金蝶K/3 WISE 为例,配合华为云SQL Server 实例快速迁移数据中心。适用场景说明:a)  支持本地ISV应用迁移上云b)  支持云上虚拟机中的ISV应用,将数据库远程安装至RDS SQL Server。 2.   案例实现2.1 云上环境搭建  环境说明:        a)本地环境:Windows Server 2016 标准版 64位 ,已经安装了金蝶K/3 WISE 相关组件,并创建测试账套,数据库实体为AIS20200415112523,数据库用户为sa。    b)云上环境:华为云SQL Server Microsoft SQL Server 2016 Enterprise Edition 单机实例 4核16GB ,字符集尽量保持和线下一致(线下字符集区分大小写可能会有影响)。华为云弹性云服务器 Windows Server 2016 标准版 64位 4核16GB(用于安装金蝶客户端及账套管理)。备注:安装金蝶的弹性云服务器需要和RDS实例在同一个地域,且VPC相同。否则可能需要搭建专用网络通道进行预先测试连通性后方可兼容,非同vpc下的访问时效不能完全保证。注意:2008版本可能会出现无法使用服务名注册账套最终导致使用客户端登录失败,不建议使用2008版本进行对接c)  本文适配华为云 RDS SQL Server版本如下:SQL Server 2017企业版/标准版SQL erver 2016企业版/标准版SQL Server 2014企业版/标准版SQL Server 2012企业版/标准版2.2 数据准备在本地服务器上,使用数据库管理工具(如SQL Server Management Studio)登录本地数据库,找到对应账套数据库(这里为AIS20200415112523)。 选中数据库,右键数据库属性->选项,选择恢复模式为full 模式或使用命令修改USE master;  ALTER DATABASE database_name SET RECOVERY FULL;          选中当前链接,右键属性,选择数据库设置,点选压缩备份。          右键选中数据库,任务->备份 选择备份,并将其命名为同数据库名的.bak文件存储。  至此数据文件准备完毕。如部署在其他云或者其他服务器上,参见https://support.huaweicloud.com/bestpractice-drs/drs_04_0003.html选择合适的迁移上云方案进行迁移数据。2.3 数据全量迁移上云选择华为云对象存储服务(OBS)。创建一个标准存储、公共读写的桶。  页面访问并上传文件可能无法上传,建议使用obsbroswer(可能下线)或者obs broswer plus传输文件。         获取访问密钥(AK/SK),详情见链接指导:https://support.huaweicloud.com/qs-obs/obs_qs_0005.html         使用工具登录桶,找到对应创建的桶:上传备份文件到桶 跳转到数据复制服务,选择备份迁移管理,创建迁移任务,选择数据库类型为SQL Server,备份文件来源为自建OBS桶,选择桶名,找到上传的备份文件,点击下一步。  选择对应创建的实例,选择全量备份,最后一个备份,覆盖还原,执行预校验,全部数据库,点击确认即可。 等待迁移任务完成 2.4 云上数据库实例配置当前华为云SQL Server 数据库默认开启分布式事务(MSDTC),我们通过配置msdtc 来实现云数据库实例和云弹性服务器之间的同步。详情查看分布式事务:https://support.huaweicloud.com/usermanual-rds/rds_sqlserver_01_0001.html主机名称:输入要与RDS实例建立分布式事务的主机名。主机名在1到64个字符之间,由字母、数字或中划线组成,不能包含其他特殊字符,且主机名字不可重复。主机IP: 输入要与RDS实例建立分布式事务的主机IP。主机IP需要先配置安全组的出入规则。 云上主机Win+R ->cmd 键入 hostname 或者控制面板->系统和安全—>系统  RDS数据库页面,点击实例,选择分布式事务点击添加主机,键入主机名称和可以连通云上数据库实例的ip地址,点击测试连接,通过测试后,点击确定,测试不通过请排查输入的信息是否正确,尤其确认ip是否可以连通(一般建议内网IP,若跨VPC等,需要提前测试连通性)。 2.5 云上弹性服务器配置RDS数据库页面,点击实例,选择分布式事务,点击复制RDS实例信息 将RDS实例信息配置到ECS的hosts文件中,路径为“C:\Windows\System32\drivers\etc\hosts”在ECS端:打开“控制面板”,选择“系统和安全 > 管理工具”,在“管理工具”页面打开“组件服务”。选择“计算机 > 我的电脑 > Distributed Transaction Coordinator”。右键单击“本地DTC”,选择“属性”。按如下配置设置后会重启msdtc服务 2.6 测试结果在ECS端,根据产品要求安装金蝶K/3 wise 客户端和账套管理系统点击账套管理,在弹出的账套管理数据库设置页面设置相关身份验证信息和数据服务器数据服务器填入云端数据库的服务器名(即为上一步设置的)。数据库实体选择对应的数据库即可。  设置完毕后,进入系统,点击注数据库->注册账套  进入后,填写上一步的服务器名为当前数据服务器,填入对应的sqlserver 身份验证,目前华为云的默认数据库账号为rdsuser,填写完毕后点击数据库实体,点击右键,弹出空白框,点击所有后,可显示当前云上所有的数据库实体,选择迁移的账套数据库(注意:如果设置迁移的是账套数据库会提示为无效账套)即可。 为方便链接,可在系统->预设连接中,配置云上实例为默认的连接。  至此对接华为云sqlserver实例完毕,点击金蝶K3 wise客户端,使用已经配置的金蝶账号即可登录使用。   
  • [技术干货] 云享读书会《SQL优化核心思想》-Q&A干货及学员精彩心得~~
    云享读书会《SQL优化核心思想》,领域专家徐铭老师现身领读,一起学习,掌握SQL优化技能,提升数据库性能。本期读书会内容已上云课程,可随时报名学习。干货Q&AQ:对于复杂的SQL经常会出现A=B B=C C=D 这种情况,会不会影响SQL的执行效率,如果会我应该如何去优化呢?A:不会,优化器一般会做条件传递。Q:基于CBO的优化器,SQL在执行的时候,一个SQL产生对应多个执行计划,可以在真正运行的时候,有时候在用的执行计划很慢?只能手动去固话执行计划?每次系统反应慢,除了固定执行计划,有什么好的方法预防这种问题吗?统计信息也没有过期,为什么选择运行慢的执行计划呢?A:这个原因很多,不同数据库的智能化程度也不一样。即使统计信息是准的,也不表示一定能选择正确的执行计划。例如,多个条件组合在一起时,优化器可能估计的rows和实际值可能差距很大。如果不想固定执行计划,那么尽量把SQL写的简单些,不要给优化器出难题。Q:1.大数据量下的查询如何优化?2.大数据量下的分页查询如何优化?3.如何做分区表优化和索引优化?A:1. 这个问题太笼统,SQL优化的核心是减少扫描的数据和做的计算次数。从大数据量中做精确查询要走索引和嵌套循环;必须扫描和连接大数据量,一般是全表扫描和hash join。2. 大数据量的分页查询一般要通过索引来消除排序,快速定位到目标数据。3. 分区要适合业务场景,方便清理和查询数据;索引也是要根据查询来定的,如果DML性能要求很高,就要尽量少加索引。Q:对于选择性很低的列,例如1000w+的行,基数只有3w,如何提高搜索速度,比如对于引擎选择,索引是否建立,建聚集索引还是?还是不需要索引?或者其他方案?不考虑cache!A:用不用索引,关键看目标数据的占比,大于5%走索引就不好了。TP数据库一般都用B树索引。Q:业务逻辑上的优化更重要还是SQL语句更为关键?有哪些常规的优化思路?A:SQL优化和业务优化都很重要,如果能定位到某条SQL是性能瓶颈,并且通过优化索引或者改写SQL可以大幅提升性能,那么就优化SQL,这样代价最小。但是很多场景要端到端的分析性能瓶颈,性能瓶颈不一定在一条SQL上,甚至不是靠优化SQL可以解决的,例如commit过于频繁,redo追尾,热块问题,并发锁等待等,需要从业务逻辑来优化性能。优化思路:最关键是找到性能瓶颈,然后对症下药。 Q:SQL优化主要优化哪一方面?一般通过什么方式优化?同样大的数据库,直接查询某条记录和优化后查询有什么区别,原理是什么?A:SQL优化一般是降低需要扫描的数据量。常见的优化方式包括调整表的访问路径、连接方式和连接顺序,以及调整分区、索引规避排序等等。做不做优化差距非常大,同样的查询可能只要扫描100条数据,也可能需要扫描100亿条数据。Q:Oracle CBO最优的执行计划需要收集统计信息,但是统计信息收集会lock table,这在OLAP服务器很难实现统计信息收集,所以CBO这个矛盾该怎么解决?A:收集统计信息一般在空闲时候,通过采样率和并行可以提升收集统计信息的效率。一般数据库不会全程锁定表,而只是短暂的锁定表。收集统计信息并非必要的,可以通过统计信息设置接口直接设定每个表的统计信息。即使不收集统计信息,Oracle也支持动态采样,对于AP数据库采样的代价相对SQL的执行是比较小的。Q: 1. 慢查询原理?2.如何有效的建立索引?3.怎么合理的拆分表?A:慢查询往往是执行计划不好,没有选择正确的扫描路径、连接顺序或者连接方式;索引要依据查询场景来创建,过多的索引会降低DML的性能;表的设计首先要符合规范,根据表的大小和使用场景决定是否需要拆分,大表一般要考虑分区。如果需要对两个表一起查询,并且还要分页查询,那么放在一起比较好,这是出于性能考虑;如果两个表的很多列都是一样的,并且表也不是太大,那么公共列放在一张表比较好,这是出于开发的效率;反之,如果一个表非常大,其中有两种类型数据并且不会同时查询,那么最好拆成多个表。学员精彩心得1.   SQL优化要尽量避免出现笛卡尔积,尽量用大表去关联小表,涉及到索引表的时候,要考虑到索引的用法,自己索引是否失效的问题。2.   加组合索引,保证查询条件在索引中都能命中,从而保证查询时速度更快。3.   创建合适的索引是优化查询最重要的手段之一,有效的建立索引能够大幅提高查询效率。但索引并不是越多越好。4.   尽量避免全表扫描,避免在where子句中使用or、表达式操作、函数操作、!=或<>操作、前置百分号等,否则将导致引擎放弃使用索引而进行全表扫描。5.   尽量避免使用select *,返回无用的字段会降低查询效率,使用具体的字段代替*,只返回使用到的字段。6.   建立分区表可提高查询效率。7.   多表关联的时候要注意是大表在前还是小表在前执行的效率高。8.   宁愿建立新的SQL语句,也不复用过时的累赘的SQL语句,这样能很好的优化查询速度。9.   尽可能的使用 varchar/nvarchar 代替 char/nchar ,对应查询来说,可以提高效率。10.  避免频繁创建和删除临时表。华为云数据库精选特惠活动火热进行中,爆款产品低至4.5折,新人享3.9折迁移价,机“惠”难得,购买请戳下图。
  • [技术干货] RDS for SQL Server收缩数据库
    操作场景     华为云SQL Server提供存储过程,用于收缩数据库的数据文件和日志文件,以释放磁盘部分空间。操作步骤     连接RDS for SQL Server实例,执行以下命令,进行数据库收缩。       EXEC [master].[dbo].[rds_shrink_database] @DBName = 'myDBName';     参数       myDBName: 要收缩的数据库名称。如果未指定,则默认对所有数据库进行收缩。       结果A.结果集返回多个结果集,每个结果对应指定数据库(或所有数据库)的每个文件的相关信息。结果集结构如下:列名称说明DbId当前收缩的文件的数据库标识号。FileId当前收缩的文件的文件标识号。CurrentSize文件当前占用的 8 KB 页数。MinimumSize文件最低可以占用的 8   KB 页数。 此数字对应于文件的大小下限或最初创建大小。UsedPages文件当前使用的 8 KB 页数。EstimatedPages数据库引擎估计文件能够收缩到的 8 KB 页数。 B. 消息打印命令执行进度。最佳实践Ø  在执行会产生大量未用空间的操作(如重启)后,执行收缩操作最有效Ø  大多数数据库都需要一些可用空间,以供常规日常操作使用。 如果反复收缩数据库,并且它的大小再次增长,那么常规操作可能需要收缩空间。 在这种情况下,反复收缩数据库是一种无谓的操作。Ø  收缩操作不保留数据库中索引的碎片状态,通常还会在一定程度上增加碎片。 此类碎片是不要反复收缩数据库的另一个原因。故障排除l  文件未收缩1.     如果在执行存储过程后文件大小未改变,请运行以下SQL,验证文件是否有足够的可用空间:SELECT name, size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB FROM sys.database_files; 2.     如果要收缩的数据库文件大小不超过50MB,对该文件的收缩将不起作用。且会打印相关提示。如: l  收缩操作受阻基于行版本控制的隔离级别下运行的事务可能会阻止收缩操作。若要解决此问题,请执行下列任务之一:²  终止阻止收缩操作的事务。²  终止收缩操作。 如果收缩操作终止,所有已完成的工作都会保留。²  不执行任何操作,并允许收缩操作等到阻塞事务完成。示例     收缩指定数据库       以下示例将 dbtest2 数据库进行收缩。EXEC [master].[dbo].[rds_shrink_database] @DBName = 'dbtest2';执行结果如下: 收缩所有数据库以下示例将收缩所有数据库。EXEC [master].[dbo].[rds_shrink_database];
  • [云享读书会] 【第六期】SQL优化核心思想——获奖名单&amp;自测题答案&amp;实践作业参考答案&amp;专家QA
    自测题标准答案及实践作业参考答案已更新,请前往评论区查看。同学们在招募期提交的有关SQL优化的疑惑和心得分享,已整理完毕,请见https://bbs.huaweicloud.com/blogs/163481获奖名单已更新,请见下表。奖项社区昵称奖品最佳读书笔记张辉无线耳机最佳读书笔记阿静无线耳机最佳读书笔记大壮哥无线耳机奖项微信昵称奖品每日话题提供者Mr丶Mask颈枕每日话题提供者蛋蛋颈枕每日话题提供者眼界颈枕每日话题提供者暖暖的好颈枕每日话题提供者心也颈枕排名华为云账号自测题总分读书笔记得分结业实践得分总得分获得奖品1ss**911260500200960定制双肩包2zh**ghui_china250500200950定制双肩包3s2**646580240500200940定制双肩包4re**huangzhuang260500175935定制双肩包5li**ie_1219240500175915定制双肩包6fr**kouyang210500175885定制双肩包7hu**lei200500175875定制双肩包8bi**_green260500100860定制双肩包9hw**762403230500125855定制双肩包10yo**iangyl3005000800定制双肩包11ni**wu200500100800《SQL优化核心思想》12an**leung2805000780《SQL优化核心思想》13ol**ei23050050780《SQL优化核心思想》14hu**ghui022705000770《SQL优化核心思想》15ya**angxu2405000740《SQL优化核心思想》16yj**792382005000700《SQL优化核心思想》17al**_cool2304000630《SQL优化核心思想》18hw**17965419030050540《SQL优化核心思想》19ec**atic1403000440《SQL优化核心思想》20hw**9355202400200440《SQL优化核心思想》21ni**qi2202000420《SQL优化核心思想》22hu**ei01811020050360《SQL优化核心思想》23cf**ng2100125335《SQL优化核心思想》24to**ndy20462301000330《SQL优化核心思想》25hw**63072520010025325《SQL优化核心思想》26ke**arou13010075305《SQL优化核心思想》27al**n20001801000280《SQL优化核心思想》28fe**feier61801000280《SQL优化核心思想》29hw**2091341500125275《SQL优化核心思想》30ci**hunter20461601000260《SQL优化核心思想》31hw**019793210050260《SQL优化核心思想》32hw**11014723000230《SQL优化核心思想》33ha**ing170025195《SQL优化核心思想》34LC**YY900100190《SQL优化核心思想》35hw**15888119000190《SQL优化核心思想》36yu**ngv110075185《SQL优化核心思想》37ww**046701000170《SQL优化核心思想》38hw**92617616000160《SQL优化核心思想》39ya**fei91130025155《SQL优化核心思想》40ta**iwei100025125《SQL优化核心思想》41la**yak11000110《SQL优化核心思想》42yu**02593313910000100《SQL优化核心思想》43da**ao201701000100《SQL优化核心思想》44jy**yj900090《SQL优化核心思想》45aj**g2888800080《SQL优化核心思想》46hw**804739800080《SQL优化核心思想》47a1**06127610700070《SQL优化核心思想》48hw**825740700070《SQL优化核心思想》内部员工无效hwstaff_***883***700070《SQL优化核心思想》49z0**07998700070《SQL优化核心思想》50ph**awei600060《SQL优化核心思想》
  • [数据库] 【第10课】RDS for SQL Server透明数据加密功能,防止机密数据泄露
    随着互联网的迅速发展,以数据库为基础的信息系统在各行各业基础设施建设中得到了广泛的应用,越来越多的数据信息被搜集、存储以及发布,其中大量信息被用于行业合作和数据共享。但是由于信息的易获取,这些包含在数据库系统中的关于商业或技术机密、个人隐私等涉密信息将面临更多的安全威胁。数据泄漏无处不在,且愈演愈烈。因此,数据加密尤为重要。数据库透明加密技术是针对关系型数据库保密需求应运而生的一种数据库加密技术。透明数据加密(Transparent Data Encryption,简称TDE),通过证书加密数据文件和备份文件,可进行实时的io加密/解密,能有效保护数据库及数据文件的安全。RDS for SQL server提供透明数据库加密功能,为您的数据保驾护航。开启实例级别的TDE加密功能1.登录管理控制台。2.单击管理控制台左上角的,选择区域和项目。3.选择“数据库 > 云数据库 RDS”。进入云数据库 RDS信息页面。4.在“实例管理”页面,单击目标实例名称,进入实例的“基本信息”页面。5.在“数据库信息”模块,单击“TDE状态”后的。  图1 开启实例级别的TDE加密功能6.在弹出框中,单击“确定”进行二次确认后,开启TDE加密功能。   说明:实例级别的TDE加密功能一旦开启,将不允许关闭,请您谨慎操作。设置数据库级别的TDE加密功能   在开启数据库级别的TDE加密功能之前,请确保已成功开启实例级别的TDE加密功能。 1.连接目标实例。 请参考通过公网连接SQL Server实例、通过内网连接SQL Server实例及通过DAS连接SQL Server实例。 2.通过rds_tde存储过程开启、关闭或查询TDE加密功能。 exec master.dbo.rds_tde DatabaseName,TDE_ActionDatabaseName:目标数据库名,取值可为null。TDE_Action:取值为“-1”,表示查询目标库加密信息。      如果“DatabaseName”取值为null,则返回所有库的加密状态。取值为“0”,表示关闭目标库TDE加密功能。取值为“1”,表示开启目标库TDE加密功能。 3.开启数据库db1的TDE加密功能:  exec master.dbo.rds_tde db1, 1 4.关闭数据库db1的TDE加密功能:  exec master.dbo.rds_tde db1, 0 5.查询数据库db1的TDE加密状态:  exec master.dbo.rds_tde db1, -1 6.查询所有数据库的TDE加密状态:  exec master.dbo.rds_tde null, -1更多相关介绍,欢迎查看https://support.huaweicloud.com/usermanual-rds/rds_11_0004.html
  • [技术干货] 数据管理服务DAS之数据库自动化运维功能展播4:慢SQL
    概述数据库优化点很多,但最常见、也最容易影响性能的一大因素,就是慢SQL!在慢SQL的发现以及优化上,也一直是DBA比较头疼的问题,尤其对于使用自建数据库的企业DBA来说,这更加是一个长期而且艰苦的斗争。 而对于华为云RDS数据库,发现和优化慢SQL,不再是只有DBA才可以干的事情,普通的开发人员,也可以轻松应对!接下来将重点介绍一下华为云的数据管理服务DAS,是如何帮助用户快速发现、自动优化慢SQL的。DAS提供的慢SQL能力1、图表展示慢SQL的数量趋势曲线,同时也给出CPU占用率曲线,可以直观的定位到慢SQL导致CPU飙高的问题;2、对慢SQL进行模板化汇总,可以根据 执行次数、耗时、锁等待时间、扫描行数、返回行数等指标进行排序,快速找出TOP N的慢SQL;3、可以查看每一条慢SQL的具体SQL内容、执行时间、客户端IP等信息;4、能够自动的对慢SQL进行诊断,给出索引优化建议、SQL改写建议,帮助开发者对SQL进行自助优化; 具体使用方法1、登录华为云,打开DAS Console:点击打开2、点击左侧菜单 云DBA-->慢SQL,并选择要分析的RDS实例: 3、开启 慢SQL开关,注意,这里一定要先打开这个开关,DAS才会对您的慢SQL进行收集、统计和分析,千万别忘记哦~~ 4、统计信息,对SQL进行了模板归类,可以很容易的排查出是哪一类的SQL,发生的次数最多;除此以外,还提供了多种排序选项:执行次数、平均\最大执行时间、平均\最大锁等待时间、平均\最大扫描行数、平均\最大返回行数 5、最右侧的操作栏,点击 样本 按钮,可以查看这个SQL模板下,真实的一个SQL完整内容;而诊断按钮,则提供了对这个慢SQL的自动诊断能力,包括索引优化建议、SQL语句优化建议,友情提醒一下,这里可是DAS的专家DBA团队,将华为云DBA的多年线上慢SQL问题分析经验,沉淀到产品中的输出哦。 6、您还可以直接对这些慢SQL信息,导出到本地进行存档: 7、最后,该功能也提供了慢SQL明细的内容展示,除了执行数据,还展示了执行的客户端来源IP、数据库登录账号等信息; 常见问题1、该功能是所有RDS实例都可以使用吗?否。目前支持MySQL数据库, 5.6的版本要>= 5.6.43.3,5.7的版本要>= 5.7.25.3;如果您的MySQL版本较低,可以在RDS控制台进行实例版本升级哦。 2、开启慢SQL后,会影响实例的磁盘空间吗?会占用很少一部分空间,因为DAS会周期性的(频率小于10分钟1次)进行采集,采集完了以后,会对原数据文件进行删除,所以不会占用您很多实例的磁盘空间,可放心使用。 3、支持ECS自建库吗?不支持。目前该功能,是华为云MySQL内核团队进行了内核优化之后的版本,额外增加了很多指标数据的输出,社区版的ECS自建库没有这个能力。
  • [入驻式求助] 如何实现每天定时自动外呼调查满意度
    CTI版本:CRSV300R006C87SPC715如何实现每天定时,如每天9:00-10:00,自动向一批号码发起外呼,调查满意度。我能想到的是通过多实例自启动流程,使用复合cell里面的主动呼出,利用存储过程判断时间及需要外呼的号码,去对需要外呼的号码发起呼叫。判断若不在时间段内以及没有号码可以发起呼叫时,就马上结束流程。但是就是怕自启动实例会占用太多IVR资源,而且满意度那部分开始播音及收号的时机。是否在呼出摘机用户连接成功时就开始播音?
  • [热门活动] 华为云数据库#云享读书会#第六期《SQL优化核心思想》招募来袭~~
    汇聚天下英才,共探技术新动态。华为云数据库#云享读书会#第六期《SQL优化核心思想》招募来袭,现邀数据库行业开发者共赴读书盛会,领域专家大咖带您拆解书籍精华知识,每日分享领读视频,助您轻松掌握SQL优化技能,快速提升数据库性能,还有丰厚结业奖励等您拿。学习不止步,技能更丰富,戳它报名:https://developer.huaweicloud.com/activity/reading/sql_optimization.html
  • [云享读书会] 【第六期】SQL优化核心思想——读书笔记征集
    本期为系列活动的第六期,领读书籍为《SQL优化核心思想》邀请华为高斯数据主任工程师徐铭老师视频领读助您掌握SQL优化技能 提升数据库性能查看活动详情,请戳【活动链接】----------------------------------------------------------------------------------------------------------------------------------01.【征集时间】2020年4月20日~2020年4月26日02.【什么是云享读书会】每期云享读书会活动,会选取一本技术相关的畅销书籍,由领读专家提炼书籍精华,在读书会的专属微信社群中,每日输出精华知识的领读视频,帮助大家快速积累专业知识。活动期间会设置每日自测题、结业实践任务、提交读书笔记三种积分获取任务,并根据活动结束后的积分排行发放活动奖励。03.【读书笔记要求】1. 每篇读书笔记字数要求≥300字;2. 内容要求与每日领读视频、《SQL优化核心思想》书籍或是华为云产品优化意见相关;3. 内容原创不可抄袭;4. 回帖时请务必留下你的微信昵称和华为云账号。04.【最佳读书笔记奖励】领读专家将在活动时间内提交的有效读书笔记中,评选出3篇最佳读书笔记。奖品为HUAWEI FreeBuds 悦享版05.【活动排行奖励】活动排行1-10名奖品为华为云定制双肩包活动排行11-50名奖品为本期领读书籍《SQL优化核心思想》06.【注意事项】1. 读书笔记提交后,小助手会在3个工作日内按续完成审核,并增加活动积分100分/篇;2. 本次活动通过提交读书笔记,可获得的积分上限为500分;3. 请务必按照上述要求提交内容,以免影响积分增加;4. 若积分值相同则以完成学习任务的时间先后排序,其中任务完成时间的判定优先级为:读书笔记>结业实践>自测题>其他;5. 其他积分获取方式请查看活动社群公告;6. 其他未说明事项请参照 云享读书会《SQL优化核心思想》
总条数:865 到第 页
上滑加载中