关注MySQL高级 - 架构组成

本文详细阐述了Java开发工程师应具备的数据库知识,包括MySQL的操作、高级SQL技巧、体系结构、查询流程,以及数据库维护和性能调优。重点强调了基础理论和实践应用在开发中的重要性。
摘要由CSDN通过智能技术生成
  • 负责MySQL开发支持,参与数据架构规划设计,以及相关业务的数据建模、设计评审、SQL代码审核优化

中级Java开发工程师对数据库知识的掌握程度

  • 熟练操作主流数据库,能够通过代码(框架)完成日常的数据库操作

  • 熟练使用SQL,熟悉SQL优化,熟悉存储过程视图等创建及使用

  • 了解MySQL的整体体系结构,了解MySQL事务存储引擎的特点

  • 了解MySQL索引优化,了解MySQL相关锁机制

我们作为Java开发工程师,关注的应该是跟开发相关的数据库知识。了解这些高级的知识,目的是让我们编写出更加高效的应用程序。

专业的数据库维护、服务器优化、性能参数调优等等数据库相关的运维工作还是要交给DBA去做的

MySQL逻辑架构


学习MySQL就好比盖房子,如果想把房子盖的特别高,地基一定要稳,基础一定要牢固。学习MySQL数据库前要先了解它的体系结构,这是学好MySQL数据库的前提。

MySQL架构体系介绍

MySQL由连接池、SQL接口、解析器、优化器、缓存、存储引擎等组成,可以分为四层,即连接层、服务层、引擎层和文件系统层。

连接层

最上面是一些客户端和连接服务, 不是MySQL特有的,所有基于网络的C/S的网络应用程序都应该包括连接处理、认证、安全管理等。

服务层

中间层是MySQL的核心,包括查询解析、分析、优化和缓存等。同时它还提供跨存储引擎的功能,包括存储过程、触发器和视图等。

引擎层

存储引擎层,它负责存取数据。服务器通过API可以和各种存储引擎进行交互。不同的存储引擎具有不同的功能,我们可以根据实际需求选择使用对应的存储引擎

存储层

数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互

SQL查询流程

  • 我们用一条SQL SELECT语句的执行轨迹来说明客户端与MySQL的交互过程,如下图所示。

image.png

  1. 通过客户端/服务器通信协议与MySQL建立连接

  2. 查询缓存,这是MySQL的一个可优化查询的地方,如果开启了Query Cache且在查询缓存过程中查询到完全相同的SQL语句,则将查询结果直接返回给客户端;如果没有开启Query Cache或者没有查询到完全相同的SQL语句则会由解析器进行语法语义解析,并生成解析树。

  3. 预处理器生成新的解析树。

  4. 查询优化器生成执行计划。

  5. 查询执行引擎执行SQL语句,此时查询执行引擎会根据SQL语句中表的存储引擎类型,以及对应的API 接口与底层存储引擎缓存或者物理文件的交互情况,得到查询结果,由MySQL Server过滤后将查询结果缓存并返回给客户端。若开启了Query Cache,这时也会将SQL语句和结果完整地保存到QueryCache中,以后若有相同的SQL语句执行则直接返回结果。

MySQL物理文件


  • 物理文件包括:日志文件,数据文件,配置文件

日志文件

  • 日志文件包括

  • error log错误日志 排错 /var/log/mysqld.log【默认开启】

  • bin log二进制日志 备份 增量备份 DDL DML DCL

  • Relay log中继日志 复制 接收 replication master

  • slow log慢查询日志 调优 查询时间超过指定值

– 查看错误日志文件路径

show variables like ‘log_error’;

±--------------±--------------------+

| Variable_name | Value |

±--------------±--------------------+

| log_error | /var/log/mysqld.log |

±--------------±--------------------+

– 慢查询日志文件路径

show variables like ‘slow_query_log_file’;

±--------------------±----------------------------------+

| Variable_name | Value |

±--------------------±----------------------------------+

| slow_query_log_file | /var/lib/mysql/localhost-slow.log |

±--------------------±----------------------------------+

– bin log 日志文件 需要在 my.cnf 中配置

log-bin=/var/log/mysql-bin/bin.log

server-id=2

– 查看 relay log 相关参数

show variables like ‘%relay%’;

复制代码

配置文件&数据文件

  • 配置文件my.cnf

在my.cnf文件中可以进行一些参数设置,对数据库进行调优。

[client] #客户端设置,即客户端默认的连接参数

port = 3307 #默认连接端口

socket = /data/mysqldata/3307/mysql.sock #用于本地连接的socket套接字

default-character-set = utf8mb4 #编码

[mysqld] #服务端基本设置

port = 3307 MySQL监听端口

socket = /data/mysqldata/3307/mysql.sock #为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件

pid-file = /data/mysqldata/3307/mysql.pid #pid文件所在目录

basedir = /usr/local/mysql-5.7.11 #使用该目录作为根目录(安装目录)

datadir = /data/mysqldata/3307/data #数据文件存放的目录

tmpdir = /data/mysqldata/3307/tmp #MySQL存放临时文件的目录

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

结局:总结+分享

看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了Java互联网工程师面试1000题,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱

  • Java互联网工程师面试1000题

image.png

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。

  • 程序员代码面试指南–IT名企算法与数据结构题目最优解

image.png

  • 其余像设计模式,建议可以看看下面这4份PDF(已经整理)

image.png

  • 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。

image.png

以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。

[外链图片转存中…(img-a4n55jwS-1713531746624)]

以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值