关键字:Oracle、SQL、调优、诊断、手把手数据库入门、Database、Explain
宝岛某客户,系统迁移后(主机迁移,数据库版本相同,都是11.2.0.3),某个SQL性能严重下降,执行时间由原系统的的0.001秒,变成了131秒多,严重影响了业务的正常使用:
之前的几篇文章: 《一个执行计划异常变更的案例 - 前传》 《一个执行计划异常变更的案例 - 外传之绑定变量窥探》 《一个执行计划异常变更的案例 - 外传之查看绑定变量值的几种方法》 《一个执行计划异常变更的案例 - 外传之rolling invalidation》 《一个执行计划异常变更的案例 - 外传之聚簇因子(Clustering Factor)》 《一个执行计划异常变更的案例 - 外传之查询执行计划的几种方法》 《一个执行计划异常变更的案例 - 外传之AWR》 《一个执行计划异常变更的案例 - 外传之ASH》
在我发布了使用coe_load_sql_profile.sql脚本可以解决生产系统执行计划突然变差的文章后,第二天刚好又看到一篇文章:《执行计划:Oracle的Profile特性与SQL执行计划的稳定性》,文章专门对sql profile做了深入的介绍,对了解SQL profile的原理很有帮助。因为撰写人和转发者都是业内大拿,粉丝众多,看了那篇文章的人应该非常多,因此有必要对那篇文章的一个小瑕疵加以纠正,即“SQL profile不能固定执行计划”这个结论是不准确的,只是在某种测试条件下的一种结果。
Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和Java API,还支持Build构建工具和Spring Boot等,同时在分布式环境下能够安全可靠地升级数据库,同时也支持失败恢复等。
在上一篇 优化利器In-Memory开启和效果 中,提到的两个SQL对比,使用的是传统的dbms_xplan.display_cursor方式来查看执行计划,好处是文本输出的通用性强,基本信息也都有。 但如果大家参加过我们的RWP培训,就会发现O原厂强烈推荐大家使用的一个工具是 SQL Monitor Report,且要使用ACTIVE的类型,这可以让看SQL执行计划变得赏心悦目。
由于各种各样的原因,DBA有时会遇到SQL执行计划突然变差的情况,导致CPU和IO资源消耗过高,整个系统性能下降。
之前的几篇文章: 《一个执行计划异常变更的案例 - 前传》 《一个执行计划异常变更的案例 - 外传之绑定变量窥探》 《一个执行计划异常变更的案例 - 外传之查看绑定变量值的几种方法》 《一个执行计划异常变更的案例 - 外传之rolling invalidation》 《一个执行计划异常变更的案例 - 外传之聚簇因子(Clustering Factor)》 《一个执行计划异常变更的案例 - 外传之查询执行计划的几种方法》 《一个执行计划异常变更的案例 - 外传之AWR》 《一个执行计划异常变更的案例 - 外传之ASH》 《一个执行计划异常变更的案例 - 外传之SQL AWR》 《一个执行计划异常变更的案例 - 外传之直方图》 《一个执行计划异常变更的案例 - 外传之SQL Profile(上)》
梁敬彬老师的《收获,不止SQL优化》,关于如何缩短SQL调优时间,给出了三个步骤,
通过以上步骤查询到效率低的 SQL 语句后,可以通过 EXPLAIN命令获取 MySQL如何执行
优化前,最终返回3096条记录,耗时4146秒(执行时间看第一行中间的timeline):
Oracle中,如果某个用户,想看SQL的执行计划,可以有很多方法,其中一种,是开启会话跟踪,但是很可能提示这个错误,
使用Oracle数据库的应用系统,有时出现SQL性能突然变差,特别是对于OLTP类型系统执行频繁的核心SQL,如果出现性能问题,通常会影响整个数据库的性能,进而影响整个系统的正常运行。这是常常遇到的问题,也是一些DBA的挑战。 SQL性能变差原因分析 SQL的性能变差,通常是在SQL语句重新进行了解析,解析时使用了错误的执行计划出现的。 下列情况是SQL会重新解析的原因: SQL语句没有使用绑定变量,这样SQL每次执行都要解析。 SQL长时间没有执行,被刷出SHARED POOL,再次执行时需要重新解析。
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库。要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是TestDB1+当时备份的日期字符串.bak。
在Oracle中,coe_load_sql_profile.sql脚本的作用是什么?
AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性。启用AUTOTRACE后,SQL*Plus会自动收集执行过的SQL语句的执行计划、性能统计数据等,并在语句执行结束后显示在SQL*Plus中。
众所周知,良好的数据库设计能够大幅减少后期的运维工作,同时也能最大程度地减少软件项目出错的可能。由于我们所面临的真实项目需求往往五花八门,因此需要找到合适的设计工具,来实现事半功倍的效果。
DbSchema是一种可用于复杂数据库设计和管理的可视化工具。该工具已经集成在大多数主流操作系统之中。
MySQL推出了新功能—— MySQL Autopilot。MySQL Autopilot 使用先进的机器学习技术来自动化 HeatWave,使其更易于使用并进一步提高性能和可扩展性。目前还没有其他云供应商提供如此先进的自动化功能。MySQL HeatWave 客户可以免费使用 Autopilot。关于HeatWave,请阅读MySQL Database Service with Analytics Engine。
随着数据库数据越来越大,数据单表存在的数据量也就随之上去了,那么怎么样让我们的脚本查询数据更快呢?
AUTOTRACE是一个SQL*Plus工具,用于跟踪SQL的执行计划,收集执行时所耗用资源的统计信息,是SQL优化工具之一,下面给出启用
很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:
经常见到有人在QQ群和微信群发SQL代码和(或)简单执行计划的截屏咨询优化问题,如果是比较简单的SQL,也没问题; 如果是稍微复杂一点的SQL, 特别是一些根因分析类问题, 建议收集尽可能详细的信息.
在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是
今天有个同事问我一个问题,他说运行shell脚本的时候抛出了ORA 错误,但是对于错误的原因没有思路,想让我帮他看看。 我查看了下,脚本的结构比较清晰。 脚本是有一个shell脚本,一个sql文件组成,shell脚本作为基本的流程控制,sql文件中是pl/sql脚本。 大体明白了shell脚本的部分,没有做过多的追究,就开始了解pl/sql脚本的内容了。 首先在pl/sql中声明了大量的procedure,类似shell中的function,大概有10多个procedure 然后在最后使用一个类似main函
作者介绍 赵全文 就职于太极计算机股份有限公司,在中央电化教育馆做Oracle DBA的驻场运维工作。具有3年左右的Oracle工作经验,目前擅长Oracle数据库的SQL脚本编写、故障诊断和性能优化,并且乐于分享Oracle技术。 一般在DBLINK的SQL语句中,将调用远程表的in-line view结果集返回的数据尽量减少,进而达到通过网络传输的数据减少的目的,而且也不会将数据传输的资源消耗在大量的网络等待事件上。在Oracle中这样的等待事件是:SQL*Net messa
Navicat Premium 16 for Mac中文激活版是一个可多重连接的数据库开发工具,Navicat 的功能足以符合专业开发人员的所有需求,但是对数据库服务器的新手来说又相当容易学习。它可让你以单一程序同時连接到目前世面上所有版本的主流数据库并进行管理和操作,支持的数据库有:MySQL、SQL Server、SQLite、Oracle 及 PostgreSQL。让管理不同类型的数据库更加方便。
SQL Profile就是为某条SQL语句提供除了系统统计信息、对象(表和索引等)统计信息之外的其它信息,比如运行环境、额外的更准确的统计信息,以帮助优化器为SQL语句选择更适合的执行计划。SQL Profile可以说是Outline的进化。Outline能够实现的功能SQL Profile也完全能够实现,而SQL Profile具有Outline不具备的优化,最重要的有两点:①SQL Profile更容易生成、更改和控制。②SQL Profile在对SQL语句的支持上做得更好,也就是适用范围更广。
分区表就是将一个大表在物理上分割成若干小表,并且整个过程对用户是透明的,也就是用户的所有操作仍然是作用在大表上,不需要关心数据实际上落在哪张小表里面。Greenplum中分区表的原理和PostgreSQL一样,都是通过表继承和约束实现的。
糟糕的SQL执行,执行计划走全表扫描(这里实验直接利用使用hint强制不走索引来模拟这种情况):
这次主要对hive源码包及hive的两种调试方式做了介绍,这篇结束后,整个源码调试环境的搭建已经完成。
在最近的活字格项目中使用ActiveReports报表设计器设计一个报表模板时,遇到一个多级分类的难题:需要将某个部门所有销售及下属部门的销售金额汇总,因为下属级别的层次不确定,所以靠拼接子查询的方式
随着云时代的到来,数据库也开始拥抱云数据库时代,各类数据库系统(OLTP、OLAP、NoSQL等)在各内外云平台(AWS、Azure、阿里云)百花齐放,有开源的MySQL、PostgreSQL、MongoDB,传统数据库厂商的SQLServer、Oracle,云厂商自研的Aurora、Redshift、PolarDB、AnalyticDB、AzureSQL等。有些数据库还处于Cloud Hosting阶段,仅仅是将原有架构迁移到云主机上,利用了云的资源。有些数据库则已经进入了Cloud Native阶段,基于云平台IAAS层的基础设施,构建弹性、serverless、数据共享等能力。
♣ 题目部分 在Oracle中,如何在不执行SQL的情况下获取执行计划? ♣ 答案部分 1、“EXPLAIN PLAN FOR SQL”不实际执行SQL语句,生成的计划未必是真实执行的计划。但是,必
Navicat Premium 是一套数据库管理工具,让你以单一程序同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。此外,它与 Drizzle、OurDelta 和 Percona Server 兼容,并支持 Amazon RDS、Amazon Aurora、Amazon Redshift、SQL Azure、Oracle Cloud 和 Google Cloud 等云数据库。 结合了其他 Navicat 成员的功能,Navicat Premium 支持大部份在现今数据库管理系统中使用的功能,包括存储过程、事件、触发器、函数、视图等。 Navicat Premium 能使你快速地在各种数据库系统间传输数据,或传输到一份指定 SQL 格式和编码的纯文本文件。计划不同数据库的批处理作业并在指定的时间运行。其他功能包括导入向导、导出向导、查询创建工具、报表创建工具、数据同步、备份、工作计划及更多。
看到很多大神,尤其是老虎刘老师在做SQL调优的时候,都提到了sqlhc,找了一些资料,借此机会,学习一下。
日常生活中的大部分决策都以二进制形式存在,具体来说就是这类问题能够以是或者否来回答。而在商业活动中,能够以二进制方式回答的问题也有很多。举例来说:“这种情况是否属于交易欺诈?”,“这位客户是否会购买该产品?”或者“这位用户是否存在流失风险?”等等。在机器学习机制中,我们将此称为二进制分类问题。很多商业决策都能够通过准确预测二进制问题的答案来得到强化。Amazon Michine Learning(简称Amazon ML)就提供了一套简单而且成本低廉的选项,帮助大家以快速且规模化的方式找出此类问题的答案。 在
最近随着Snowflake上市后市值的暴增(目前700亿美金左右),整个市场对原生云数仓都关注起来。近日,一家第三方叫GigaOM的公司对主流的几个云数仓进行了性能的对比,包括Actian Avalanche、Amazon Redshift、Microsoft Azure Synapse、Google BigQuery、Snowflake,基本涵盖了目前市场上主流的云数仓服务。
背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好。比如已经原生支持XML很多年了,在这个趋势下,如今也能在SQLServer2016中使用内置的JSON。尤其对于一些大数据很数据接口的解析环节来说这显得非常有价值。与我们现在所做比如在SQL中使用CLR或者自定义的函数来解析JSON相比较,新的内置JSON会大大提高性能,同时优化了编程以及增删查改等方法。 那么是否意味着我们可以丢弃XML,然后开始使用JSON?当然不是,这取决于数据输出处理的目的。如果有一个外部的通
这是《未来简史》中提出的三个革命性观点。一本书短短百页,让我们看到了世界颠覆性的变化,从计算机,到互联网,再到大数据、人工智能,所有的变化都在以一种肉眼可观却又无法捕捉的状态悄然发生着,而推动变化发生的背后,则是数据价值的提升。
Navicat Premium 16 Mac是一套数据库开发工具,让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库。Navicat Premium 16 for Mac 与 Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud、MongoDB Atlas、阿里云、腾讯云和华为云等云数据库兼容。
AWS Athena和Google BigQuery都是亚马逊和谷歌各自云上的优秀产品,有着相当高的用户口碑。它们都属于无服务器交互式查询类型的服务,能够直接对位于云存储中的数据进行访问和查询,免去了数据搬运的麻烦。对于在公有云的原生存储上保存有大量数据的许多客户而言,此类服务无疑非常适合进行灵活的查询分析,帮助业务进行数据洞察。
数据库性能很大一部分跟SQL写法有关, 有些SQL是必须改代码才能优化的, 如果不能改代码, 需要删历史记录,回收空间,让表始终保持相对较小,才能消耗较少的资源,得到能够接受的响应时间.如前公众号文章所述: 必须通过改写SQL才能提升性能的一些情况 (列举了10个需要改写的SQL).
当连接到 impalad 时使用 Kerberos 认证。如果要连接的 impalad 实例不支持 Kerberos,将显示一个错误
在上一篇:《执行计划:Oracle的Profile特性与SQL执行计划的稳定性》,向大家介绍了什么是 SQL Profiles 及其作用,如何使用 SQL Tuning Advisor 来生成 SQL Profile,以及生成的 SQL Profile 产生的 Hint 。同时也介绍了 SQL 的 signature 。那么在今天,将向大家介绍如何手工创建 SQL Profiles(即不通过 SQL Tuning Advisor )来达成2个目的: 锁定或者说稳定 SQL 执行计划。 在不能修改应用的
对于刚入门学习sql的,我只推荐一本书Mick的《SQL基础教程》。网上很多人推荐《SQL必知必会》,其实这本书更适合数据库运维,对刚入门的朋友来说,理解不了。而Mick的《SQL基础教程》的书通俗易懂,让你学起来有趣的多了。兴趣才是学下去的理由。
如今,Python真是无处不在。尽管许多看门人争辩说,如果他们不使用比Python更难的语言编写代码,那么一个人是否真是软件开发人员,但它仍然无处不在。
背景 Storm是TRC(腾讯实时计算)平台的核心组件。与Hadoop不同,storm之上没有像hive,pig之类的解放应用开发人员效率的工具。开发原生的storm应用必须掌握storm的api,开发门槛高,调试困难,效率低下。 EasyCount(SQL on strom)是构建在storm之上的一套实时计算系统。应用开发人员只需通过配置定制化的脚本来完成业务逻辑的描述,能够快速实现各种实时统计需求,降低使用门槛,提升开发效率。 系统设计与实现 上图是EC系统的架构图。用于描述用户业务逻辑的SQL
领取专属 10元无门槛券
手把手带您无忧上云