精华内容
下载资源
问答
  • Automated patching : Pivot from Manualto Scalable with Oracle Database LifecycleManagement PackAshwin Vaidya©2016 PayPal Inc. Confidential and proprietary.Ashwin Vaidya PMP , ITILMTS-2 Databas...

    Automated patching : Pivot from Manual

    to Scalable with Oracle Database Lifecycle

    Management Pack

    Ashwin Vaidya

    ©2016 PayPal Inc. Confidential and proprietary.

    Ashwin Vaidya PMP , ITIL

    MTS-2 Database Engineering , Database Platform Security

    About me About Paypal

    • Oracle Technologist since 1995 • Oracle powers our t ransact ional data

    • Specialist in RAC, VLDB, Golden Gate & 24x7 installat ions • One of t he largest private clouds in t he world

    • Managed Large Oracle ERP programs as program manager • 16PB stored on Oracle

    • Varied responsibilit ies at Paypal including DB • 10+ TB st reamed daily via Goldengate

    engineering/architecture/operat ions • 200+ million act ive accounts

    • Mongodb/Cassandra/Couchbase

    © 2015 PayPal Inc. All rights reserved. Confidential and proprietary. 2

    Two decades ago, our founders invented payment

    technology to make buying and selling faster, secure,

    and easier—and put economic power where it

    belongs: In the hands of people.

    ©2016 PayPal Inc. Confidential and proprietary.

    Global scale

    Our customers can accept payments in > Almost PayPal team members

    100 8,000

    currencies,

    withdraw funds to their bank accounts in provide 20

    56

    currencies,

    25 support to our customers in over languages.

    and hold ba

    展开全文
  • MySQL生命周期

    2021-01-19 08:36:32
    MySQL将缓存存放在一个引用表(不要理解成table,可以认为是类似于HashMap的数据结构),通过一个哈希值索引,这个哈希值通过查询本身、当前要查询的数据库、客户端协议版本号等一些可能影响结果的信息计算得来。...

    2ff34e647e2e3cdfd8dca593e17d9b0a.png

    很多时候所谓的的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。

    MySQL的逻辑架构图如下所示

    MySQL逻辑架构整体分为三层。其中最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。

    中间这一层包含大多数MySQL核心服务,包括查询、解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等。

    最下层为存储引擎,其负责MySQL中的数据存储和提取。和Linux下的文件系统类似,每种存储引擎都有其优势和劣势。中间的服务层通过API与存储引擎通信,这些API接口屏蔽了不同存储引擎间的差异。

    MySQL查询过程

    MySQL整个查询执行过程,总的来说分为6个步骤客户端向MySQL服务器发送一条查询请求

    服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段

    服务器进行SQL解析、预处理

    由优化器生成对应的执行计划

    MySQL根据执行计划,调用存储引擎的API来执行查询

    将结果返回给客户端,同时缓存查询结果

    上述过程如下图所示:

    客户端/服务端通信协议

    MySQL客户端/服务端通信协议是“半双工”的:在任一时刻,要么是服务器向客户端发送数据,要么是客户端向服务器发送数据,这两个动作不能同时发生。一旦一端开始发送消息,另一端要接收完整个消息才能响应它,所以我们无法也无须将一个消息切成小块独立发送,也没有办法进行流量控制。

    客户端用一个单独的数据包将查询请求发送给服务器,所以当查询语句很长的时候,需要设置max_allowed_packet参数。但是需要注意的是,如果查询实在是太大,服务端会拒绝接收更多数据并抛出异常。

    与之相反的是,服务器响应给用户的数据通常会很多,由多个数据包组成。但是当服务器响应客户端请求时,客户端必须完整的接收整个返回结果,而不能简单的只取前面几条结果,然后让服务器停止发送。因而在实际开发中,尽量保持查询简单且只返回必需的数据,减小通信间数据包的大小和数量是一个非常好的习惯,这也是查询中尽量避免使用SELECT *以及加上LIMIT限制的原因之一。

    查询缓存

    MySQL查询缓存的过程如下图所示:

    缓存命中率可以通过如下公式计算:Qcache_hits/(Qcache_hits + Com_select)来计算。

    在解析一个查询语句前,如果查询缓存是打开的,那么MySQL会检查这个查询语句是否命中查询缓存中的数据。如果当前查询恰好命中查询缓存,在检查一次用户权限后直接返回缓存中的结果。这种情况下,查询不会被解析,也不会生成执行计划,更不会执行。

    MySQL将缓存存放在一个引用表(不要理解成table,可以认为是类似于HashMap的数据结构),通过一个哈希值索引,这个哈希值通过查询本身、当前要查询的数据库、客户端协议版本号等一些可能影响结果的信息计算得来。所以两个查询在任何字符上的不同(例如:空格、注释),都会导致缓存不会命中。

    如果查询中包含任何用户自定义函数、存储函数、用户变量、临时表、mysql库中的系统表,其查询结果都不会被缓存。比如函数NOW()或者CURRENT_DATE()会因为不同的查询时间,返回不同的查询结果,再比如包含CURRENT_USER或者CONNECION_ID()的查询语句会因为不同的用户而返回不同的结果,将这样的查询结果缓存起来没有任何的意义。

    然是缓存,就会失效,那查询缓存何时失效呢?MySQL的查询缓存系统会跟踪查询中涉及的每个表,如果这些表(数据或结构)发生变化,那么和这张表相关的所有缓存数据都将失效。正因为如此,在任何的写操作时,MySQL必须将对应表的所有缓存都设置为失效。如果查询缓存非常大或者碎片很多,这个操作就可能带来很大的系统消耗,甚至导致系统僵死一会儿。而且查询缓存对系统的额外消耗也不仅仅在写操作,读操作也不例外:任何的查询语句在开始之前都必须经过检查,即使这条SQL语句永远不会命中缓存

    如果查询结果可以被缓存,那么执行完成后,会将结果存入缓存,也会带来额外的系统消耗

    最后的忠告是不要轻易打开查询缓存,特别是写密集型应用。

    如果你实在是忍不住,可以将query_cache_type设置为DEMAND,这时只有加入SQL_CACHE的查询才会走缓存,其他查询则不会,这样可以非常自由地控制哪些查询需要被缓存。

    常见的查询缓存的配置如下所示query_cache_type:是否打开查询缓存。可以设置为OFF、ON和DEMAND。DEMAND表示只有在查询语句中明确写明SQL_CACHE的语句才会放入查询缓存。

    query_cache_size:查询缓存使用的总内存空间。

    query_cache_min_res_unit:在查询缓存中分配内存块时的最小单元。较小的该值可以减少碎片导致的内存空间浪费,但是会导致更频繁的内存块操作。

    query_cache_limit:MySQL能够查询的最大查询结果。如果查询结果大于这个值,则不会被缓存。因为查询缓存在数据生成的时候就开始尝试缓存数据,所以当结果全部返回后,MySQL才知道查询结果是否超出限制。超出之后,才会将结果从查询缓存中删除。

    语法解析和预处理

    MySQL通过关键字将SQL语句进行解析,并生成一颗对应的解析树。这个过程解析器主要通过语法规则来验证和解析。比如SQL中是否使用了错误的关键字或者关键字的顺序是否正确等等。预处理则会根据MySQL规则进一步检查解析树是否合法。比如检查要查询的数据表和数据列是否存在等等。

    查询优化

    经过前面的步骤生成的语法树被认为是合法的了,并且由优化器将其转化成查询计划。多数情况下,一条查询可以有很多种执行方式,最后都返回相应的结果。优化器的作用就是找到这其中最好的执行计划。

    MySQL使用基于成本的优化器,它尝试预测一个查询使用某种执行计划时的成本,并选择其中成本最小的一个。在MySQL可以通过查询当前会话的last_query_cost的值来得到其计算当前查询的成本。

    查询执行引擎

    在完成解析和优化阶段以后,MySQL会生成对应的执行计划,查询执行引擎根据执行计划给出的指令逐步执行得出结果。整个执行过程的大部分操作均是通过调用存储引擎实现的接口来完成,这些接口被称为handler API。查询过程中的每一张表由一个handler实例表示。实际上,MySQL在查询优化阶段就为每一张表创建了一个handler实例,优化器可以根据这些实例的接口来获取表的相关信息,包括表的所有列名、索引统计信息等。存储引擎接口提供了非常丰富的功能,但其底层仅有几十个接口,这些接口像搭积木一样完成了一次查询的大部分操作。

    返回结果给客户端

    查询执行的最后一个阶段就是将结果返回给客户端。即使查询不到数据,MySQL仍然会返回这个查询的相关信息,比如该查询影响到的行数以及执行时间等等。

    如果查询缓存被打开且这个查询可以被缓存,MySQL也会将结果存放到缓存中。

    结果集返回客户端是一个增量且逐步返回的过程。有可能MySQL在生成第一条结果时,就开始向客户端逐步返回结果集了。这样服务端就无须存储太多结果而消耗过多内存,也可以让客户端第一时间获得返回结果。需要注意的是,结果集中的每一行都会以一个满足①中所描述的通信协议的数据包发送,再通过TCP协议进行传输,在传输过程中,可能对MySQL的数据包进行缓存然后批量发送。

    展开全文
  • MySQL查询的生命周期

    2021-02-07 18:49:01
    因此,在对MySQL的查询进行优化之前,应该了解一下MySQL查询的生命周期。 上面的这张图,是大家经常看到的MySQL的架构图,关于MySQL的各个部分显示的很详细。如果从大的方面来看,可以将MySQL分为两层,SQL层和存储...

    当你执行一次MySQL查询时,有没有仔细想过,在查询结果返回之前,经过了哪些步骤呢?这些步骤有可能消耗了超出想象的时间和资源。因此,在对MySQL的查询进行优化之前,应该了解一下MySQL查询的生命周期。

    f67ce0edfcd47d9634f8c94fad773bc6.png

    上面的这张图,是大家经常看到的MySQL的架构图,关于MySQL的各个部分显示的很详细。如果从大的方面来看,可以将MySQL分为两层,SQL层和存储层。SQL层包括控制连接、准备语句等,存储层则主要包括以各种插件形式提供的存储引擎。目前对于MySQL来说,最重要的,也是完全支持事务的引擎是InnoDB。

    当应用程序,或者通过客户端执行一个查询时,首先要做的就是创建一个连接,当查询通过连接到达MySQL时,要对其进行解析。解析过程包括,将查询拆分并标记,以便知道查询的类型,并且会使用一个列表,里面包含查询所需的表和列的信息,这个列表会在下一步使用。接下来,MySQL会检查该用户是否有对列表里的对象执行操作的权限。通过权限检查后,查询将进入优化器,优化器会涉及重写查询、决定表的访问顺序,以及使用哪些索引等工作。实际的执行步骤包括从存储引擎层请求数据。每个存储引擎处理的方式可能不同。InnoDB包括一个缓冲池,用于缓存数据和索引、重做和撤消日志、其他缓冲区以及表空间文件。如果查询返回结果,结果将通过SQL层从存储引擎发送回应用程序。关于InnoDB的架构,请参考下图,详细的过程今后找机会介绍:

    876f74abb699e48d100ec9445b8b640c.png

    简单的总结一下,MySQL查询的生命周期包括:创建连接、解析SQL、检查权限、优化查询、执行查询(与存储引擎进行交互)、返回结果给应用程序或客户端。

    096fcd6a1bf52dd3d294e8e05cb57b94.png

    以上内容是对MySQL查询生命周期的一个简单介绍,希望能够对使用MySQL的你有所帮助。

    欢迎关注个人公众号“MySQL解决方案工程师”

    展开全文
  • 本文为人大金仓数据库工具产品研发中心总监——黄新著在“墨天轮国产数据库沙龙”中分享的内容整理而成。将重点介绍两个方面:金仓数据库生命周期管理产品体系,以及金仓云数据库服务管控平台。

    在共同推进国产化生态发展的进程下,墨天轮正式推出“墨天轮国产数据库沙龙”系列直播活动,将定期邀请各国产数据库产品专家、掌门人,共同探讨如何达成技术“自主可控”的使命。
    本文为人大金仓数据库工具产品研发中心总监——黄新著在“墨天轮国产数据库沙龙”中分享的内容整理而成。
    将重点介绍两个方面:金仓数据库全生命周期管理产品体系,以及金仓云数据库服务管控平台

    贯穿数据库全生命周期的生态工具

    数据库全生命周期管控涵盖了安装部署、迁移、数据库管理开发、测试上线、运维管控等5个阶段。人大金仓以数据库服务能力为目标,开发了全生命周期管控工具。

    包括:集群部署工具、数据库与数据迁移工具、数据库开发工具、运维管控工具和监控告警。

    image.png

    1、一键操作即可轻松完成集群部署

    在部署实际操作过程中,需要强有力的工具支撑。人大金仓的工具通过简单输入即可实现集群环境的部署。

    image.png
    集群部署工具的逻辑结构图

    同时运用监控、管理能力保证了在部署过程中的稳定性,实现集群节点的切换。这个阶段中,集群状态能够完成自诊断与自处理。

    2、体系化、智能化一站式迁移

    微信截图_20211105153753.png

    面对国产化应用进程的不断推进,很多企业都面临着海量系统的改造与迁移的困难。为了助力信创,金仓提供了体系化、智能化一站式的迁移解决方案,指导用户成功完成迁移,达到事半功倍的效果。这其中就要依靠KDMS与KDTS分别完成数据库与数据的迁移

    在以往的一些数据库迁移案例中,由于没有量化的指标,很难给到完整的迁移的方案与合理的计划,导致只能通过人为的经验来推算出迁移时间。

    人大金仓的KDMS工具系统则根据方法论给出可落地的解决方案,由多维度、可量化的指标数据、给出合理的费用预算工期安排。智能翻译技术也帮助实现数据库的迁移评估和逻辑迁移。

    KDTS产品体系结构帮助在各种场景下实现高效的数据迁移。 在多线程迁移任务中,如果将高速公路比作线程池,不同的车道就是不同的线程。在这个过程中有效划分“快车道与慢车道”,从而避免线程阻塞。目前的迁移速度已经能够达到 300-500 G/小时。

    3、跨平台、一站式的数据开发工具KStudio

    image.png

    数据开发工具——KStudio,具有跨平台、一站式的功能。其中灵活高效的SQL编辑器、与基于EClipse的调试框架设计的PLSQL、Debug,符合开发者的习惯。同时浏览器的数据库开发和管理工具,能够实现无需安装任何客户端和插件,做到方便快捷。

    4、全方位、专业、灵活的监控告警工具 KMonitor

    image.png

    • 全方位
      实现多维度性能指标分析,支持对服务器、数据库资源、性能、集群等多维度多指标监控、管理,可视化展示和综合分析

    • 专业问题分析与定位
      基于专业的数据库管理经验,问题分析与定位由专业团队指导并提供账号,同时辅助故障定位以及提供故障发生时的各项指标数据,为数据调优提供数据支撑。

    • 灵活个性化
      能够自定义监控展现样式、灵活展示指标数据。

    5、系统化、治标治本的数据库性能调优

    image.png
    数据库性能优化是一件很困难的事情,人大金仓基于量化的指标和问题诊断方法论来系统分析与解决。

    不再是根据经验主义“看病开药”:根据定期采集的样本数据进行诊断、分析从而提供性能优化建议,达成指标之本、节约运维成本、提高效率的目标。

    金仓数据库服务管控平台——KRDS

    image.png

    信息化已经进入了云计算和大数据快速发展的时代,越来越多的业务已经在云端开展起来。在这个背景下,需要有更稳定、便捷、高效的数据库服务、也更加迫切地需要深度融合数据库的管控能力与云计算平台。

    面对着企业多云共存,KRDS的诞生便是满足了企业统一需求与跨越平台的需求。金仓数据库的RDS按需申请,能够提供开箱即用稳定可靠与可弹性扩展的在线数据库服务。

    金仓数据库的整个产品体系涵盖丰富的数据库服务、功能和贯穿数据库全生命周期的数据库生态工具。人大金仓将加强自主+创新的核心竞争力,提供完备的数据库生态体系和优秀产品、助力信创产业高质量发展,提供全有力的支持!

    更多精彩内容,欢迎大家观看现场视频回放与会议资料
    视频回放:https://www.modb.pro/video/5453
    会议资料:https://www.modb.pro/doc/48524


    墨天轮,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。

    关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯

    展开全文
  • 数据库系统开发生命周期各个阶段需要获取的数据以及生成的文档数据库规划系统定义需求收集与分析数据库设计应用程序设计DBMS选型建立原型系统实现数据转换与加载测试运行维护 数据库规划 1、需要获取的数据:数据库...
  • ◼ 可以独立完成数据库生命周期中的全部活动: ➢ 定义关系模式,插入数据,建立数据库; ➢ 对数据库中的数据进行查询和更新; ➢ 数据库重构和维护 ➢ 数据库安全性、完整性控制等 ◼ 用户数据库投入运行后,可...
  • 数据库应用系统的生命周期可以划分为:数据库规划、需求描述与分析、数据库与应用程序设计、数据库设计实现、数据库测试、数据库运维。1、数据库规划数据库规划是创建数据库应用系统的第一步,也...
  • 采用ELK分布式日志采集平台的时候,你是否还在担心日志数据持续增长,单个索引体积持续增大,需要手动删除过期的日志数据。...采用es中的索引生命周期管理机制ILM可以轻松帮你实现日志数据的生命周期管理。
  • 这是学习笔记的第2270篇文章读完需要5分钟速读仅需3分钟整理了如下数据库的产品周期信息:OracleMySQLMariaDBPerconaRedisMongoDBPostgreSQL1.Oracle在MOS 官方文章:Release Schedule of Current Database Releases...
  • 第一步:连接数据库,由连接器负责跟客户端建立连接、获取权限、维持和管理连接。 第二步:查缓存 第三步:分析器分析 第四步:优化器 第五步:执行器 第六步:封装结果集 第七步:返回数据给客户端 第八步:...
  • 页面生命周期

    2021-06-14 03:57:00
    #事件或方法功能描述1Init事件页面初始化页面生存周期中的第一个阶段是初始化。当Init事件发生时,在.aspx源文件中静态声明的所有控件都已实例化并取其默认值。应该注意的是,这时视图状态信息还不可用。2...
  • Core Data数据库在SwiftUI中使用起来不难,不过很多文章写的都是Swift中的使用方法,很少有纯SwiftUI的Core Data数据库的使用方法。我就想着自己来整理一下,写出来,如果有错误,欢迎指正~ 开始前的准备 如果是...
  • python对象的生命周期

    2021-02-03 23:37:46
    hibernate 持久化对象的生命周期 2.1 持久化对象的生命周期 瞬态(自由态) 表示对象在内存中存在,在数据库中没有数据相关,比如刚刚new出来的一个对象 持久态 持久态指的是持久化对象处于由Hibernate管理的状态,这种...
  • Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示Servlet的生命周期包含了下面4个阶段:1.加载和实例化2.初始化3....
  • 在五周年之后,会发布最后一个包含任何修复的次要版本,将此主版本视为生命结束end-of-life (EOL),并不再受支持。 版本号 从PostgreSQL 10开始,主要版本通过增加版本的第一部分来表示,例如10到11。在PostgreSQL ...
  • 小程序的生命周期2.全局数据globalData3.globalData的应用3.1.搭配app.js的onLaunch()存储openid3.2.轮询globalData3.2.1.问题描述3.2.2.解决方式:轮询globalData 1.小程序的生命周期 小程序生命周期(onLaunch、...
  • 这回是学习一下SqlSession中一些相关的作用域和生命周期 作用域和生命周期 生命周期和作用域是至关重要的,因为错误的使用会导致非常严重的并发问题。一个mybatis的执行流程如下图所示。 SqlSessionFactoryBuilder...
  • 1 完整生命周期 6个 onCreate —— onStart—— onResume——onPause——onStop——onDestory 1所有Activity生命周期方法的实现都必须先调用其父类版本。 2由于Activity经常会暂停和恢复之间切换,所以...
  • 软件生命周期介绍

    2021-07-12 00:13:36
    什么是软件生命周期:是指软件从开始研制到最终被废弃不用这整个过程。 软件生命周期包括: 1问题定义及规划 a 就软件开发需求共同讨论,主要确定软件的开发目标和其可行性。 b 输出可执行研究报告和项目开发计划...
  • Servlet生命周期详解

    千次阅读 2021-01-23 23:20:29
    Servlet生命周期概述servlet生命周期的四个过程1、实例化servlet对象我们的OOP(面向对象)思想中,总是先创建对象,通过对象调用成员,那么servlet如何实例化呢?设置对应servlet的优先级(loadOnStartup)2、初始化...
  • 理解我们之前讨论过的不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。 画一个流程图,分析一下Mybatis的执行过程! 提示:对象生命周期和依赖注入框架 依赖注入框架可以创建线程...
  • 软件的概念 许多人对于软件的一个理解软件就是程序,软件开发i就是编写程序。其实软件是计算机系统中与...软件生命周期的基本概念 什么是软件周期?软件的生命周期,又称为软件的生存周期。它是按开发软件的规模和复
  • 内置容器生命周期瞬时生命周期:每一次getService获取的实例都是不同的实例单例生命周期,在整个进程中获取的都是同一个实例作用域生命周期;同一个作用域,获取的是同一个对象的实例;不同的作用域,获取的是不同的...
  • 一条sql语句生命周期

    2021-05-11 16:42:44
    我们看到prepare状态和commit状态,两阶段提交,先写binlog,然后再写redo log,防止数据库异常奔溃后通过日志恢复出来的库的状态不一致情况。 redo log可以保证crash-safe能力,innodb_flush_log_at_trx_commit=1...
  • NetCore自带DI容器的三种生命周期浅析 NetCore自带的依赖注入框架,分别由三种生命周期:单例Singleton/瞬时Transient/一次请求Scoped.接下来我将针对这三种生命周期简要的进行使用方法的解析,并不深入,希望各位...
  • 数据库三大周期阶段

    2021-03-03 21:04:05
    首先结合软件生命周期、项目的开展,数据库生命周期大致可分为这么几个阶段:其中“规划”、“开发”、“实施”所要做的主要工作如下:1. 规划:在立项后,对于数据库平台的软硬件选型,以及大致的数据库架构。1.1...
  • LifecycleScope 每个具有生命周期的对象(Lifecycle)都有一个 LifecycleScope , 所有在它的范围内启动的协程, 当生命周期对象销毁时, 都会取消. 生命周期对象的 CoroutineScope 可以通过 lifecycle....
  • 信息系统的生命周期各阶段及说明

    千次阅读 2021-05-08 16:50:50
    信息系统的生命周期各阶段及说明 软件在信息系统中属于较复杂的部件,可以借用软件的生命周期来表示信息系统的生命周期,软件的生命周期通常包括:可行性分析与项目开发计划、需求分析、概要设计、详细设计...
  • servlet 生命周期详解

    2021-04-15 14:40:56
    servlet 生命周期详解servlet程序是由web服务器调用,web服务器实现了对servlet生命周期的管理。当你的应用加载并使用一个Servlet时,从初始化到销毁这个Servlet期间会发生一系列的事件,这些事件叫做Servlet的生命...
  • 1 规划与分析 1.1 系统规划与定义 任务陈述 确定任务目标 确定范围和边界 确定用户视图 1.2 可行性分析 技术可行性 经济可行性 操作可行性 开发方案可行性 ...数据库概念模型设计 是依旧数据需求.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 257,958
精华内容 103,183
关键字:

数据库生命周期