前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >吃透这款最流行的数据库,技术生涯就稳了

吃透这款最流行的数据库,技术生涯就稳了

作者头像
程序猿DD
发布于 2023-09-06 08:50:51
发布于 2023-09-06 08:50:51
1820
举报
文章被收录于专栏:程序猿DD程序猿DD

互联网企业在近20年的崛起过程中,最应该感谢的是开源软件提供的支撑。包括操作系统、数据库、Web Server 在内的各种开源技术,以低成本的方式协助企业快速推出服务,赢得商业上的成功。

互联网时代最重要的资源是数据,所以存储数据的数据库是企业最重要的基础设施。有一款开源关系型数据库是大多数企业搭建服务环境的首选,那就是MySQL

说 MySQL 是全世界最流行的关系型数据库一点都不夸张,因为它的市场占有率达到 43% 以上。也许你看这篇文章时产生的数据,就在用 MySQL 管理。

MySQL 能从一众关系型数据库产品中脱颖而出,并不仅仅是因为它开源免费,还在于其高效的读写性能、长时间稳定运行的能力、部署简便灵活,以及活跃的社区支持。大量的使用与反馈也助推 MySQL 更加成熟,终有如今的地位。

数据库不仅对企业重要,对互联网行业里的技术人来说也同样重要。

有的朋友可能会有疑问:“我不是做数据库的,只要会写 SQL 语句就行了,其他的难题就交给DBA(数据库管理员)解决是不是就可以了?”

还真是不可以,我们来说说这是为什么。

01

用好 MySQL 是技术人的基本盘

在技术人的职业生涯中,除了专注于数据库技术的 DBA,无论是做开发岗、运维岗还是测试岗,也都需要透彻了解 MySQL,因为决定系统服务质量的关键节点就在这里。

如果程序员只会写 SQL 语句,慢查询影响了用户体验,不会优化怎么行?对于运维来说,如果不清楚 MySQL 的底层原理,怎么实施主从同步、读写分离,做好数据备份和恢复呢?

所以,熟悉 MySQL 就和掌握编程语言一样重要,是技术人的职业技能基本盘中重要的一部分。

但是不经过系统化的学习,技术人很可能会掉进一个陷阱,就是对于搜索得来的结果不加分辨地去使用。可想而知,要么是别人的方案在自己的环境里不适用,要么解决一个问题又引入新的问题,疲于应付。

不想让 MySQL 成为职业生涯的瓶颈,那就静下心来学透它吧。不必畏惧网上浩如烟海的资料,要筑牢 MySQL 的基本盘,看两本好书就够了。这两本书分别是《MySQL是怎样使用的:快速入门MySQL》《MySQL是怎样运行的:从根儿上理解MySQL》

前一本是小白入门,后一本是高手进阶。这两本书不是堆砌术语的枯燥说明书,而是相当生动有趣,有示例有代码,有图有真相,不信你翻开看看。

02

打稳底盘:学会使用 MySQL

如果你是零基础的朋友,看到这里请不要放弃,因为这一章就是专门为你准备的。

MySQL 属于关系型数据库,那么一定要把关系型数据库的理论学完才能上手实操吗?完全不必,看《MySQL是怎样使用的:快速入门MySQL》就可以。看这直白的书名就知道,它注重的就是从实践入手,以练促学

在学习本书时,可以分为三个阶段:

安装 MySQL 服务。书中详细描述了在 Windows 平台上的安装过程,并说明如何启动与关闭服务;

创建数据库与表。书中说明了命令行工具的使用方法,学会使用MySQL客户端程序连接数据库服务。接下来执行创建数据库,定义表数据类型、创建数据表,插入一些测试数据等任务;

掌握查询数据的方法。SQL 是通用的结构化查询语言,应用系统通过 SQL 取得数据并呈现出来。书中详细说明了分组查询、子查询、连接查询、并集查询等技术,这是学习者要投入最多的时间去反复练习和熟练运用的知识。

能将一个数据查询请求快速编写为一条 SQL 语言指令,使用 MySQL 的底盘就打稳了。再进一步,如果要优化复杂应用系统的查询效率,解决慢查询问题的瓶颈,那就一定要知道 MySQL 的底层知识。

让我们继续前进,成为 MySQL 的高手吧。

03

成为高手:摸透底层,MySQL 进阶

MySQL 是一款开源软件,对于喜欢追根究底的朋友来说,一头扎到代码里去就是摸透底层最直接的办法。但我不建议你这样做,因为 MySQL 有着 2000 多万行代码,体量巨大,架构十分复杂,贸然进入只会陷在代码的迷宫里。

要怎么摸透 MySQL 的底层呢?一个好办法就是站在前行者的肩膀上来学习。现在就可以来看《MySQL是怎样运行的:从根儿上理解MySQL》了。我们一起在书中探索一下MySQL 的根上都是什么。

数据库软件最重要的核心部件是存储引擎,MySQL 默认使用的是 InnoDB 存储引擎。InnoDB 被设计为处理大容量数据时可以最大化性能,也就是说在 CPU 运行周期内尽可能多地计算数据。

InnoDB 本身的架构和实现是非常复杂的,但书中没有一上来就列举一堆让人眼花缭乱的概念,而是从 InnoDB 的页结构说起。以 COMPACT 和 REDUNDANT 行格式为例,说明一条记录是如何被存储的。

记录真实数据的两条记录

清楚了数据的存储格式,接下来最重要的议题就是 InnoDB 实现数据快速查询的原理——B+树索引。书中先对 B+树的数据结构与算法进行了介绍,然后说明了 InnoDB 索引的两种类型:聚簇索引与二级索引。

新建 B+树

理解了 InnoDB 的索引技术的原理,书中就对创建和使用索引提出了具体的建议。因为 B+ 树索引在时间和空间上都有开销,所以书中提出了具体的建议,包括只为用于搜索、排序或分组的列创建索引、索引列的类型尽量小、尽量使用覆盖索引进行查询等。

有了关于数据页结构与 B+ 树索引的知识,就可以深入讲解查询优化技术了。从基于成本的优化到基于规则的优化,还说明了 EXPLAIN 与 optimizer trace 工具辅助分析查询优化的方法。掌握了这些妙招,相信做开发的朋友再也不会对如何优化慢查询感到无从下手了。

本书还对 InnoDB 的 Redo、Undo、锁等重要议题进行了同样细致入微的说明。把这本书啃透,无论是程序员、运维还是 DBA,以后再遇到 MySQL 相关的任何问题,都必定能一眼看穿本质,难题在谈笑间就迎刃而解了。

04

结语

要特别说一下《MySQL是怎样使用的:快速入门 MySQL》和《MySQL是怎样运行的:从根儿上理解MySQL》这两本书的作者——“小孩子4919”,他是一位对技术抱有极大热情的程序员。

为了写这两本书,他甚至辞职潜心创作,从书中原创内容的细节可以看出来,这两本书是倾注了大量心血才写成的。这是一名技术人最纯粹的分享,相信也会有更多技术人因为这两本书而获得更好的发展。

在职业生涯的发展上,技术人总有一天会走上更高的岗位,接受更难的挑战。当那一天到来时,你在设计系统架构或者部署高可用集群时,就可以通过对 MySQL的透彻理解自信地完成工作。

最后,希望你也成为一名愿意积极分享的技术人。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿DD 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分页场景慢?MySQL的锅!
在刚工作的时候,发现分页场景下,当offset变大,MySQL处理速度非常慢!具体sql如下:
小林coding
2021/05/27
7800
分页场景慢?MySQL的锅!
为什么公司对候选人数据库能力的要求越来越高了?
👆点击“博文视点Broadview”,获取更多书讯 前几天和一位前同事F总聊天,他现在是某互联网公司的技术负责人。 当问到他们对候选人数据库方面的要求时,他特别激动,说道:发现很多面试者,尽管工作年限很长,但是对 MySQL 的一些细节,却研究的非常浅。只会简单的增删查改、关联、聚合语句。对于一些索引、锁、事务、体系结构等原理性的内容,或者复制,高可用等实战型内容,都了解很少。 但是,F总说,根据以往经验,往往生产环境 MySQL 出问题的原因,就是部分人对一些数据库上的细节把握不够。 比如: 慢查询导致
博文视点Broadview
2022/08/26
3300
为什么公司对候选人数据库能力的要求越来越高了?
数据库常见面试题(附答案)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134740.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/18
3.5K0
数据库常见面试题(附答案)
大厂面试系列(八):数据库mysql相关
数据库相关 mysql索引的数据结构,加索引的原则 InnoDB和myiasm的区别,以及常见的mysql优化方案 sql查询优化 说说Mysql的sql优化 mysql的索引,b+树索引是否支持范围查询,联合索引的失效情况 开发中用了那些数据库?回答mysql,储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。 数据库索引原理 mysql索引 B+树原理 mysql索引是怎么实现的?b+树有哪些特点?真实的数据存在哪里?哪些情况下建索引?解释下最左匹配原则?现在一个表有三列a
zhaozhen
2021/07/15
1.1K0
2020最新版MySQL数据库面试题(一)
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。
俊才
2020/04/13
1.1K0
MySQL 好书推荐 第001期:《MySQL运维内参》
从大学开始自学各类数据库的资料,偶然间在学习 Linux 操作系统当中接触了 MySQL ,当时这个轻量级的数据库作为 Linux 操作系统中的服务存在,顿时让人觉得神奇。
数据库交流
2022/04/25
1.5K0
MySQL 好书推荐 第001期:《MySQL运维内参》
精通CRUD,却搞不懂数据库的基本原理?
作为一个程序员,不了解数据库怎么能行,那么数据库到底是个啥呢,作为一个Java工程师,平时和数据库打交道着实不少,所谓的CRUD其实就是对数据库进行增删改查的操作。
Java技术江湖
2020/03/04
7330
精通CRUD,却搞不懂数据库的基本原理?
开发者关心的十个数据库技术问题
作者 | 雷海林       责编 | 田玮靖 出品 | 《新程序员》 如今,数据库越来越受到业界的广泛关注,许多高校毕业生及资深技术人也逐渐投身于数据库产业。《新程序员002》经过用户、专家调研,收集汇总了十个开发者关心的数据库技术问题,并邀请腾讯云TDSQL技术负责人、首席架构师雷海林作出解答,希望为越来越多投身数据库的技术人才提供参考。 数据技术应用与创新 1. 数据库产品在面向企业时(涉及负载均衡、数据传输、运营平台、故障发现分析和治愈、发布系统、冷备系统等等),核心服务有哪些? 数据库是一个复
AI科技大本营
2023/04/14
3370
开发者关心的十个数据库技术问题
数据库 | 看这一篇就够了!最全MySQL数据库知识框架!
作为一名程序员,每天和各种各样的“数据库”打交道,已经成为我们的日常。当然,立志成为一名超级架构师的我,肯定要精通这项技能。咳咳!不过饭还是要一口一口吃的,“数据库”这个内容实在太大了,我们今天还是以关系型数据库的代表“MySQL说起,现如今,MySQL已经变得无处不在,从初创公司的小型项目到大型企业的核心系统,都在使用。
kfaino
2023/11/03
7720
数据库 | 看这一篇就够了!最全MySQL数据库知识框架!
猴子都能懂的数据库避坑指南
工作的这些年发现一个比较奇怪的现象就是身边无论是工作十多年的老兵,还是初级刚入行的程序员,在高谈阔论技术和趋势的时候都是人工智能,大数据,区块链,各种框架,语言,算法,AI,BI,CI,DI…… 等等,倒是发现很少有人关注数据库,不知道是因为数据库感觉太低端还是太低调,总是不容易被人提起
phoenix.xiao
2020/08/05
2810
备战春招,这份数据库面试总结请收好
最开始,我们是将数据保存在 内存 中,这能够保证我们十分 快速存取,但是一旦断电,数据就丢失了,无法永久保存。 于是我们将数据存放在 文件 中,这样一来我们就 能够将数据永久保存,但每次都要进行频繁的 IO 操作,相对于内存来讲速度就慢了许多,而且进行查询操作也不方便。 于是,我们转移到了 数据库 存储,通过这种方式不但 能将永久保存数据,而且查询管理也更加高效方便。
村雨遥
2021/01/26
6000
为什么你精通CRUD,却搞不懂数据库的基本原理?
作为一个程序员,不了解数据库怎么能行,那么数据库到底是个啥呢,作为一个Java工程师,平时和数据库打交道着实不少,所谓的CRUD其实就是对数据库进行增删改查的操作。
程序员黄小斜
2020/02/25
9730
专家访谈 | 腾讯云数据库新特性揭秘
本文为「3306π」成都站系列专访,本期专访嘉宾为腾讯云TXSQL数据库研发工程师赖铮。 赖铮-腾讯 TXSQL数据库研发工程师 在即将举办的10月26日「3306π」成都站活动中,赖铮将分享腾讯云数据库TXSQL的内核新特性,诸如:异步删除大表,GTID复制功能扩展,隐藏列解决无主键表的复制延迟,新的事务调度算法等等,并详细介绍这些新特性的实现原理和使用方法。这些新特性极大的增强了腾讯云数据库的性能、稳定性和易用性,从而为腾讯云数据库的用户提供了更为完善的数据库服务。 以下是会前专访实录。 1、
腾讯云数据库 TencentDB
2019/10/24
1.7K0
专家访谈 | 腾讯云数据库新特性揭秘
《深入解析Oracle》一书前言
因为我一直觉得,前言是一本书非常重要的部分,作者的思想和意图会在这里传达。以下就是我为这本新书所写下的前言。 ------------------------------------------------------------------------------ 经过几年的积累,再加上几个月的努力,新版的《深入浅出Oracle》即将呈现在大家的面前,我当然希望这本书能够得到大家一如既往的支持,然而一本书的价值仍然要靠大家去评判。 关于这本书的修订,有很多话想和大家说一说。
数据和云01
2018/09/05
4430
数据库知识整理
Read uncommitted:读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。
用户3467126
2019/10/10
8360
数据库知识整理
高并发之存储篇:关注下索引原理和优化吧!躲得过实践,躲不过面试官!
不管是啥业务,最终数据都要落地,数据库这一环是肯定少不了的。随着业务发展,并发越来越高,数据库很容易成为整个链路的短板。这也是大厂面试中比较常被问到的。而调优的第一步,都是从sql语句、索引入手。先得保证单个数据库执行没问题,才会有更高层次的分库分表、弹性、容灾等等。
Coder的技术之路
2021/05/14
8870
高并发之存储篇:关注下索引原理和优化吧!躲得过实践,躲不过面试官!
【数据库】
【数据库】MySql性能监控 如何定位并优化慢查询Sql? 具体场景具体分析,只提出大致思路。
瑞新
2020/07/07
6670
【数据库】
快速入门Java后端开发的正确姿势
前面三篇文章我们已经聊完了如何快速入门 Android、iOS、Web 前端开发,本篇轮到最后一个端——Java 后端了。Java 后端有着非常庞大的生态圈,也涉及到很多复杂的问题,如分布式事务、分布式查询、微服务、高并发、容灾、容器化等等,涉及到的技术栈和框架就更多了。不过,我们目前只是为了快速入门,我们只会学习最必要的那些知识,能支撑到我们进行实际项目的开发即可。那么,我们需要学习的核心知识主要包括 Java、Servlet、JDBC、MySQL、Redis、Spring、MyBatis 等。Java 基础部分在聊入门 Android开发[1]时已经讲过,这里就不重复讲了。
Keegan小钢
2019/08/27
3.3K0
Java面经——数据库
所有java面经系列已同步到我的github,欢迎访问https://github.com/tzfun/Java-Interview-experience,记得给颗星星支持一下哦~~
beifengtz
2019/06/03
1.4K0
Java面经——数据库
数据库运维、系统开发都太难?这两本书告诉你:不存在的!
作为技术生态建设的践行者,TVP官方团队在此隆重向大家推荐两本书:《MySQL DBA工作笔记:数据库管理、架构优化与运维开发》、《Django企业开发实战:高效Python Web框架指南》。
TVP官方团队
2020/08/13
1.4K0
推荐阅读
相关推荐
分页场景慢?MySQL的锅!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档