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

2024-02-06 23:12

本文主要是介绍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)的阶段。

这篇关于DBA不仅仅是管理数据库--也要管理中间件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/685839

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN