1.开源:一款开源的一站式SQL审核查询平台 - Archery
2.大二信管专业.打算走数据库(dba)方向.该做点什么?
3.小米开源数据库中间件Gaea实战
4.软件编程
5.MySQL:排序(filesort)详细解析(8000字长文)
6.GBASE南大通用数据库执行例程的DBA权限
开源:一款开源的一站式SQL审核查询平台 - Archery
Archery,一款开源的SQL审核查询平台,专为DBA设计,旨在提高工作效率,支持多种数据库的SQL上线与查询。同时,竞价预警公式源码它具备丰富的MySQL运维功能,并兼容手机端操作。 功能清单如下:多数据库支持
SQL审核与查询
集成MySQL运维功能
手机端操作兼容性
快速开始指南:准备运行配置
访问官方文档具体了解
启动Archery
启动步骤如下:下载Archery的Releases版本
解压缩文件
进入docker-compose文件夹
访问Archery平台。 手动安装指南: 详细部署说明请参考官方文档。 测试框架、前端组件与服务端功能: 通过部分截图展示核心功能。 开源地址:访问Archery的GitHub仓库获取源代码。大二信管专业.打算走数据库(dba)方向.该做点什么?
我曾是oracle、mysql的DBA,管理数千台DB。给你点建议:
对学生来说,考证是捷径,oracle的OCP已经烂大街了,如果条件允许,不背题库,通过OCP、OCM,在毕业时找一份DBA工作相对容易。
学习SQL,熟悉它,随意的敲出更重需求,可以去MYSQL下载WORKBENCH全套,网站首页设计源码里面自带DB和学习用的示例数据库。
学习数据库基础原理,另外再学一门数据库产品,oracle是无冕之王,不过这个时代光会一种产品已经跟不上潮流了,建议同时学习MYSQL,结合书本,多看源码。
至少熟练应用一门语言吧,毕竟DBA工作很多是重复的,有些工作不需要每天人工去做。
一年多时间,学好点不容易,没有实际的工作经历,理论总是空洞的。等到实际工作了,会接触许多方案、原理、性能优化手段、遇到更多的麻烦。都挺过去,就是DBA了。
校园招聘之前,提前开始灌注DBA职位,投递简历。
小米开源数据库中间件Gaea实战
本文基于dbaplus社群第期线上分享整理。
Gaea,代码雨thml源码作为一款MySQL数据库中间件,兼容MyCAT核心特性,提供读写分离、分库分表等功能。选择使用Go语言实现,考虑到Go语言在编写网络应用方面的易用性、可靠性,以及公司内部以Go语言生态为主的技术体系。
Gaea实现MySQL协议,将自己伪装成一个MySQL服务器,应用程序通过MySQL客户端访问Gaea,向Gaea发起SQL请求,Gaea将请求转发至后端MySQL执行,再将响应结果返回给客户端。中间件有助于集中管理用户和数据库配置信息,减轻DBA的运维负担。
Gaea抽象出namespace、user、slice等概念,其中namespace对应业务,是资源划分的基本单位;user等同于MySQL用户,通过username和password连接至Gaea;slice对应MySQL实例资源,包含主库与从库,实现读写分离;namespace中可包含多个slice,通过制定路由规则实现分库分表。
Gaea配置信息管理由Proxy、CC(中控服务)与Web(管理控制台)三部分组成。转转钓鱼asp源码Proxy负责MySQL流量接入,CC通过管理接口与Proxy交互进行配置管理和下发。Web提供可视化管理界面,用于DBA管理配置信息和开发工程师查看。配置数据存储在etcd中,Gaea CC与Proxy通过etcd进行交互。
Gaea主要功能包括快速使用、连接安装与配置、启动Proxy、发送请求、查看监控等。使用简单,源码编译需go 1.,使用go module管理依赖。启动Proxy需配置文件,包括监听端口、日志路径等。发送请求时,使用用户名和密码连接Gaea,执行SQL操作。Gaea提供监控指标,包括SQL请求指标与机器层面指标,方便问题排查与监控。
Gaea整体架构包含协议解析、会话管理、SQL解析、路由调度与SQL执行等模块。游戏辅助类源码支持MySQL文本协议与二进制prepare协议,SQL执行使用TiDB解析器,配置热加载实现在线修改配置,无需重启。
性能测试显示,在点查询场景下,Gaea Proxy性能比MyCAT高约%左右。Gaea项目已开源,地址为github.com/XiaoMi/Gaea,欢迎试用、贡献代码与提供反馈。
软件编程
硬石技术论坛共享文档--软件编程部分免费下载链接:/s/1obJHRyWyeq5R9_n6n7og
提取码:yjvs编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
MySQL:排序(filesort)详细解析(字长文)
MySQL排序详解:深入理解filesort过程(简化版)
MySQL中的排序(filesort)是DBA工作中常见的操作,本文主要针对Innodb引擎,使用5.7.源码版本,针对快速排序和归并排序进行详细解析。filesort在执行计划中表示排序操作,但执行计划本身并不揭示所有细节。
首先,我们从一个问题出发,介绍一个朋友遇到的案例,排序后临时文件意外达G。我们将通过实例逐步分析排序的流程。
1. 确认排序字段:从order by语句开始,如"a2,a3",并存储在Filesort的sortorder中,涉及原始和修改的filesort算法,但本文不涉及复杂算法分支。
2. 计算sort字段长度:通过sortlength函数,考虑每个字段的长度,如varchar(),长度计算为字符数量的两倍。超过max_sort_length设置的字段将导致排序精度下降。
3. 确定addon字段空间:根据max_length_for_sort_data,判断是否使用回表排序算法。如a1、a2、a3都是需要的字段,且总长度超过字节,会使用回表排序。
4. 计算每行数据长度:考虑sort字段和addon字段,包括可能的打包压缩。在内存排序阶段,将数据按照计算出的长度存储。
5. 分配内存:根据sort_buffer_size和表大小,计算实际需要的内存,并进行内存排序。
6. 内存排序与外部归并:如果数据量大,内存排序后会写入临时文件,进行外部归并排序。
7. 排序方式总结:文件sort函数会输出排序方式,如sort_key+packed_additional_fields(不回表排序,打包字段)或sort_key+additional_fields(固定长度字段)。
8. 最终排序:可能生成额外的临时文件,存储归并排序结果,文件数量根据排序量变化。
9. 问题:original filesort算法的回表和Rows_examined的计算。
. 使用OPTIMIZER_TRACE查看排序结果,理解排序过程和使用的内存。
案例中,通过group by操作的排序,如果sort字段过大,会使用回表排序,导致临时文件占用巨大。总结排序过程包括了组织排序数据的方式、排序方法的选择、内存分配策略以及临时文件的管理。
理解排序过程对优化查询性能和避免大文件临时文件至关重要。通过合理设计和使用索引,以及优化排序策略,可以有效控制临时文件的大小。
GBASE南大通用数据库执行例程的DBA权限
DBA权限在GBASE南大通用数据库中的执行例程中起着关键作用。当DBA使用DBA关键字创建例程时,其他拥有DBA权限的用户仅被授予Execute权限。然而,DBA可以明确地将DBA例程上的Execute权限授予没有DBA权限的用户。
执行DBA例程的用户在运行期间获得DBA权限,即使该用户本身没有DBA权限。如果未拥有DBA权限的用户运行DBA例程,数据库服务器将临时授予该用户DBA权限,并在退出例程后撤销此权限。
当DBA注册例程并以DBA关键字执行时,该DBA拥有在运行过程中创建的对象,除非例程内的语句明确指定了其他用户作为所有者。例如,如果Tony以DBA关键字注册了promo()例程,尽管Tony是所有者,但如果Marty运行它,Marty将拥有catalog表,因为用户Libby为表libby.mailers指定了所有者,使她成为所有者并拥有该表。
被调用的例程不继承DBA权限。如果DBA例程执行非以DBA关键字创建的例程,则DBA权限对被调用的例程没有影响。相反,如果非DBA例程调用DBA例程,调用者必须对被调用的DBA例程有Execute权限。DBA例程内的语句执行与任何DBA例程内的语句相同。
在交互作用中,当DBA与非DBA例程相互作用时,情况有所不同。假设过程dbspc_cleanup()调用另一过程clust_catalog()。假设clust_catalog()创建索引,其SPL源代码包含以下语句:
过程dbspc_cleanup()通过以下语句调用其他例程:
如果Tony作为DBA注册了dbspc_cleanup()过程,但未以DBA关键字注册clust_catalog(),如下所示:
假设用户Marty运行dbspc_cleanup()。由于通过非DBA例程创建索引c_clust_ix,同时拥有两个例程的Tony也拥有c_clust_ix。相反,如果clust_catalog()为DBA过程,则Marty将拥有索引c_clust_ix,如下所示:
OCP其他信息
在软件设计领域,Open-Closed Principle(开闭原则)是一个重要的概念,由Bertrand Meyer最早提出,强调软件实体应当对扩展开放,对修改关闭。这意味着在设计模块时,应确保模块可以在不修改源代码的情况下被扩展,以便在变化中保持系统的稳定性和延续性。 满足开闭原则的设计为系统带来了无可比拟的优势。首先,通过扩展现有的软件系统,可以引入新的行为,以适应不断变化的需求。这使得软件系统具有一定的适应性和灵活性,能够更好地应对环境的变化。其次,关键的抽象层模块不能被修改,这有助于保持系统的稳定性,确保在变化中不会破坏系统原有的功能和架构。 以编程模式中的工厂模式为例,其中的“工厂方法”就是一个很好的实践开闭原则的示例。在工厂模式中,通过定义一个工厂方法来创建对象的实例,使得客户端代码可以不依赖于特定的实现类。当需要添加新的产品类型时,只需扩展工厂方法,而不需要修改现有代码。这样,既实现了对扩展的开放,又保持了对修改的关闭,符合开闭原则的精神。 因此,遵循开闭原则在软件设计中至关重要。它不仅能够提高代码的可维护性和可扩展性,还能够促进团队合作和代码复用,是构建稳定、灵活、可扩展的软件系统的关键。扩展资料
OCP:Oracle数据库认证专家(Oracle Certified Professional)是Oracle公司的Oracle数据库DBA(Database Administrator 数据库管理员)认证课程,通过这个考试, 说明此人可以管理大型数据库, 或者能够开发可以部署到整个企业的强大应用。要成为OCP需要先获得OCA (Oracle数据库认证助理Oracle Certified Associate)的认证,目前主要是Oracle g版本认证;