DBA不仅仅是管理数据库--也要管理中间件

看到这个标题可能觉得我在乱说,其实很多中间件作为数据库的上下游,它们的稳定取决于数据库的稳定。这里我主要指的是SQL。

很早之前我说开发的主题语言其实更多的是SQL(这里并没有说Java不重要的意思),只是Java中并没有太多的业务逻辑。真正的业务逻辑主要还是在SQL中体现的。说的直白一点是如何写数据,如何读数据。

我现在工作不太做数据库安装、备份等。更多的是看看开发这里的问题。用工具打开开发代码看到后很多项目一半以上是SQL,甚至这个比例最高能到70-80%。所以更加证明了我之前说的。

每当说到这里非数据库出身的开发会质疑我夸大数据库的作用。因为我也见过有人是把数据全部拿走,然后自己在程序中做各式各样的运算等操作。这样显得和数据库没什么关系。其实这个作用自在人心吧。

但是在一次次数据库问题甚至故障后,越来越多的开发人员意识到我说的是对的。而我也在一些顾问和问题中发现,其实SQL的影响不仅仅是数据库。多次中间件(这里指的是Tomcat的JVM和消息队列等)的问题(OOM或者是频繁Full GC)也是由于SQL造成的。因为一次取的数据太多,数据库把数据明细这种几十万甚至上百万的数据送到相关环节,这些环节一下处理不了这些数据,就发生了OOM或者是频繁Full GC。

这里可能是一次性取很多数据,也可能数据看上去不对但是数据的对象很大。总之是数据占据空间很大,导致了问题。

上周一个开发主动找我说。他们的JVM中问题80%都是Full GC,而这些最后发现全是SQL导致的。就相关问题找我咨询解决方案。这说明越来越多的开发人员开始觉醒了。这真的是好事情。

我想起从前我在一个单位,和一个开发说你这样写不对,有什么什么问题。结果大家应该能猜出来,谁理我啊?但是后面有一天,那个开发找我问问题,问的还是比较深刻的问题。后面工作时遇到问题就来问我。我很好奇怎么会有这样的改变。后来我才得知他去一些比较好的公司面试,技术面的问题就是我平时说的。结果他因为不知道,错过了机会。回来以后真的是发愤图强后,然后果然去了比较好的企业,而且还换过公司。现在收入应该增加不少了。

我第一家公司小,但是当时管研发的都是70后。招聘看的是计算机知识、算法、数据库,最后看编程。招聘的开发人员真的素质都很高。可能几个人就做一个大项目。

现在的招聘是只看编程(用什么框架)和技术栈和参与项目。我也遇到过问开发这个数据从哪里来?答:不知道我调接口。再问这个数据去哪里?答:不知道我调接口。你知道为什么要用以及怎么用Redis,为什么要用以及怎么用ES吗?答:不知道我调接口。

对开发易用是好事,但是开发也应该知其然和知其所以然。当然如果每个都说精通源码的那种了解我觉得是过了。我个人觉得尺度应该是能知道问题在哪里?比如开发人员知道是数据库这里问题和中间件这里的问题。然后知道是什么原因导致的就行了。剩下的交给专业数据库人员来解决,给出解决方案就像。

管好数据库和中间件是DBA(administrator)到DBA(architect)的阶段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/372981.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Profinet转CANopen主站网关与堡盟编码器通讯案例

Profinet转CANopen主站网关(XD-COPNm20)为CPU与堡盟编码器的通讯提供了CANopen协议向Profinet协议转换互通的桥梁。CANopen是一种基于CAN总线的通讯协议,它被广泛应用于工业自动化领域,而Profinet是一种以太网协议,其优点是高速传输和广泛的可…

前端JavaScript篇之JavaScript为什么要进行变量提升,它导致了什么问题?什么是尾调用,使用尾调用有什么好处?

目录 JavaScript为什么要进行变量提升,它导致了什么问题?总结 什么是尾调用,使用尾调用有什么好处?总结 JavaScript为什么要进行变量提升,它导致了什么问题? 变量提升是JavaScript在代码执行之前对变量和函…

机器学习---半监督学习简单示例(标签传播算法)

1. 使用半监督学习方法 Label Spreading 在一个生成的二维数据集上进行标签传播 import numpy as np import matplotlib.pyplot as plt from sklearn.semi_supervised import label_propagation from sklearn.datasets import make_circles# generate ring with inner box n_s…

vue3中自定义简易版hooks,computed筛选

一、默认computed筛选方式 <template><div><input type"text" v-model"mytext"><ul><li v-for"data in computedList" :key"data">{{data}}</li></ul></div> </template><…

TryHackMe-Net Sec Challenge练习

本文相关的TryHackMe实验房间链接&#xff1a;TryHackMe | Why Subscribe nmap nmap -T5 -p- 10.10.90.32 -T5 扫描速度 -p- 全端口扫描 答题&#xff1a; 这题叫我们找藏在http服务下的flag&#xff0c;根据上面扫出来的端口&#xff0c;所以我们开始搞80 这里简单介绍一下…

EMNLP 2023精选:Text-to-SQL任务的前沿进展(上篇)——正会论文解读

导语 本文记录了今年的自然语言处理国际顶级会议EMNLP 2023中接收的所有与Text-to-SQL相关&#xff08;通过搜索标题关键词查找得到&#xff0c;可能不全&#xff09;的论文&#xff0c;共计12篇&#xff0c;包含5篇正会论文和7篇Findings论文&#xff0c;以下是对这些论文的略…

打印文件pdf怎么转换成word文档?pdf转换工具推荐

有时候我们可能需要重用PDF文件中的文本内容&#xff0c;比如引用某些段落、复制粘贴特定文字或提取数据&#xff0c;通过将pdf文件转换成word&#xff0c;可以轻松地提取和重用其中的文本&#xff0c;节省时间和努力&#xff0c;那么pdf怎么转word呢&#xff1f;可以试试本文推…

React 中实现拖拽功能-插件 react-beautiful-dnd

拖拽功能在平时开发中是很常见的&#xff0c;这篇文章主要使用react-beautiful-dnd插件实现此功能。 非常好用&#xff0c;附上GitHub地址&#xff1a;https://github.com/atlassian/react-beautiful-dnd 安装及引入 // 1.引入 # yarn yarn add react-beautiful-dnd# npm npm…

左旋字符串的三种方法,并判断一个字符串是否为另外一个字符串旋转之后的字符串。(strcpy,strncat,strcmp,strstr函数的介绍)

一. 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 通过分析&#xff0c;可以知道实际的旋转次数&#xff0c;其实是k%&#xff08;字符串长度&#xff09;。假设一个字…

小白水平理解面试经典题目_数组类LeetCode 118 Pascal‘s Triangle【回归解法】

LeetCode 118 生成杨辉三角&#xff08;Pascal’s Triangle&#xff09; 小白渣翻译 给定一个非负整数 numRows&#xff0c;生成杨辉三角的前 numRows 行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 例子 这里是小白理解 那么这种题目一上来看&#xf…

利用视图实现复杂查询

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 利用视图实现复杂查询 需求&#xff1a;需要对Excel表中导入的四列进行&#xff0c;精准查询&#xff08;搜索符合这四列的数据&#xff09;&#xff0c;并提供预览后…

c#cad 创建-文本(一)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 该代码是一个用于在AutoCAD中创建文本的命令。 首先&#xff0c;通过添加using语句引用了需要使用的Autodesk.AutoCAD命名空间。 然后&#xff0c;在命名空间CreateTextInCad下定义了一个名为CreateTextCommand的类&…

C# CAD交互界面-自定义窗体(三)

运行环境 vs2022 c# cad2016 调试成功 一、引用 二、开发代码进行详细的说明 初始化与获取AutoCAD核心对象&#xff1a; Database db HostApplicationServices.WorkingDatabase;&#xff1a;这行代码获取当前工作中的AutoCAD数据库对象。在AutoCAD中&#xff0c;所有图形数…

《动手学深度学习(PyTorch版)》笔记7.1

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

数据库学习笔记2024/2/5

2. SQL 全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了 一套操作关系型数据库统一标准 2.1 SQL通用语法 在学习具体的SQL语句之前&#xff0c;先来了解一下SQL语言的通用语法。 1). SQL语句可以单行或多行书写&…

C语言中10种常见的字符串函数你都掌握了吗?

目录 ​编辑 1.strlen(字符串长度计算函数) 2.strcpy&#xff08;字符串拷贝函数&#xff09; 3.strcat&#xff08;字符串追加函数&#xff09; 4.strcmp&#xff08;字符串大小比较函数&#xff09; 5.strncpy&#xff08;有限制的字符串拷贝函数&#xff09; 6.strnca…

DevOps落地笔记-15|混沌工程:通过问题注入提高系统可靠性

上一课时介绍了通过搭建一套部署流水线&#xff0c;高效、可靠的将软件部署到测试环境以及生产环境。到目前为止&#xff0c;我们学习了从用户需求到软件部署到生产环境交付给用户的全过程。随着软件工程不断发展&#xff0c;近几年&#xff0c;出现了一种新的实践&#xff0c;…

[Angular 基础] - 指令(directives)

[Angular 基础] - 指令(directives) 这里假设已经知道如何创建 Angular 组件以及数据绑定&#xff0c;不然可以参考前两篇笔记&#xff1a; [Angular 基础] - Angular 渲染过程 & 组件的创建 [Angular 基础] - 数据绑定(databinding) 就像中文翻译一样&#xff0c;dire…

一文讲透ast.literal_eval() eval() json.loads()

文章目录 一文讲透ast.literal_eval() eval() json.loads()1. ast.literal_eval()2. eval()3. json.loads()4. 总结 一文讲透ast.literal_eval() eval() json.loads() 在Python库中&#xff0c;我们经常会遇到需要将字符串转换为相应对象或数据结构的情况。在这种情况下&#…

研究表明:论文被大V宣传后,引用次数暴涨2~3倍!

随着AI领域的迅猛发展&#xff0c;学术成果的传播方式发生了显著转变。 期刊审稿周期长&#xff0c;当你还在和审稿人battle时&#xff0c;方法先过时了。而会议虽然没有期刊长&#xff0c;但也有几个月的时间差&#xff0c;为了保护成果的创新性并扩大影响力&#xff0c;很多…