当前位置:网站首页 > 数据科学与大数据 > 正文

数据库要怎么学(数据库从哪里开始学)



SQL,全称Structured Query Language,即结构化查询语句,它的主要作用是设计,创建和管理关系数据库,关系数据库的表是类似excel的二维表,由行列组成,每列代表一个字段。换句话说,SQL是用于与关系数据库进行通信的编程语言。

一、mysql知识体系

基础:

  • sql语句
  • 表结构设计

调优:

  • 索引、慢查询优化
  • 配置参数调优

核心原理:

  • InnoDb存储引擎 (包括隔离级别、事务、锁、缓存池、回滚日志等等)
  • Mysqld (包括连接管理、进程管理、查询缓存、查询优化、日志等等)

架构与运维:

  • 用户与权限、安全
  • 备份与恢复
  • 日志
  • 分布式与高可用

数据库入门首选要学会基本环境搭建,然后选择一款顺手的图形界面工具,学习各种SQL语句,包括基本建库建表的DDL语句,然后增删改查语句,再掌握了基本的操作之后,需要学会使用一些高级特性,比如视图、存储过程、游标、自定义函数等。

书籍:

《mysql必知必会》《数据库概念系统》

《高性能MySQL(第3版)》、 《MySQL技术内幕(第4版)》,《MySQL技术内幕 InnoDB存储引擎》,《深入理解MySQL》还有Mysql的官网。读完这些东西,再加些丰富的经验,理论上来讲就具备DBA的水平了。


-课程

Udacity的SQL课程。课程链接在这里:SQL for Data Analysis

SQL for Data Analysis | Free Courses | Udacity

强推一下里面提到的courses:

CMU  Database Systems (15-445/645), thanks to  Andy Pavlo
CMU  Advanced Database Systems (15-721), thanks to  Andy Pavlo
UC Berkeley  Introduction to Database Systems
Stanford  Database System Implementation
Let's Build a Simple Database, thanks to  cstack

-电子书

我认为多看书还是有好处的。有些书值得反复看许多遍,有时候只看一遍无法深刻理解吸收,思考也不够充分。

电子书下载传送门

  • 《mysql必知必会》
  • 《高性能mysql第三版》
  • 《数据库系统概念》
  • 《深入理解MySQL》
  • 《MySQL性能调优与架构设计--全册》《SQL Antipatterns》
  • 《MySQL技术内幕:InnoDB存储引擎》

-学习mysql的网站

MySQL Tutorial - Learn MySQL Fast, Easy and Fun.

可以快速,简单和有趣的学习MySQL。以简单易懂的方式为您提供完整的MySQL教程。每个教程都有SQL脚本和可用屏幕截图的实际示例。

mysql学习资料 | mysql深入学习笔记 深度笔记

有很多mysql的资料可以看,还可以看网友做的学习笔记。

W3Schools SQL 教程

可以学习基础的sql语句

-阅读官方手册

无论英文好不好,看英文手册的能力是一定要有,也一定要培养的。

mysql官方手册:14 The InnoDB Storage Engine

-大牛的博客

领域专家的博客是十分具有学习价值的,下面列举几个比较好的:

何登成的技术博客 何登成的技术博客

淘宝丁奇 追风刀·丁奇 - ITeye技术网站

周振兴@淘宝 花名:苏普 一个故事@MySQL DBA

阿里云数据库高级专家彭立勋为 MariaDB Foundation 正式成员,负责全球Replication模块相关补丁的Review。彭立勋也成为首位被MariaDB基金会引入的中国程序员。P.Linux Laboratory

Planet MySQL

最后就是,要多用。

-项目

GitHub - pingcap/awesome-database-learning: A list of learning materials to understand databases internals

七款开源项目,让你数据库管理不再成为一个问题 - 知乎 (zhihu.com)

作者:龚子捷
链接:https://www.zhihu.com/question//answer/
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


-学习

但是,正如我开头所言的。面对问题的时候一定要积极思考!

比如:

我问你,面对一个并发量比较高的场景,如何配置mysql的连接数?

你可能会回答:“哦,就是调高max_connection的数值吧。”

那,你有没有思考过调到多少是最合适的呢?为什么这样设置就最合适呢?

也许你会回答:“恩我知道,可以看系统之前的max_used_connection的数值,然后来设置。也可以调高back_log的值。”

那你有没有思考过,max_connection连接数太高会有什么不好的影响呢?back_log设置的太高有什么不好的地方呢?max_connect的上限其实是取决于mysql能获得的文件描述符的数量,也就是说你就算设置成10000,最后也是没用的,系统会根据机器的情况自动调低。

也许你会回答:“恩我知道,设置太高,会有系统开销...”

那你有没有思考过,这些开销具体是什么呢?是什么工作导致了需要这些内存开销?

也许你还会回答,在连接创建的时候,会立刻为它分配连接缓冲区以及查询缓冲区,这些都会吃内存。

那你有没有思考过,占据的资源具体是多少呢?取决于哪些因素呢?

好了,我们先结束这个问题。回到知乎的问题上来,其实我说了这么多,就是表达要如何自学mysql。

所以的所以,你必须不断思考,才能在工作中面对具体场景的时候,非常淡定地推断:“哦,一定是这里出了问题。应该怎么怎么做。”

面对问题,拿出打破砂锅问到底的精神,先思考一番,给出自己的假设,不要着急地去找度娘,谷歌。思考过后,带着你的推断或者答案,大胆地去搜索吧!去看看别人的见解,去看看官方的描述!

这才是一个工程师应有的态度。

-面试

面试造火箭,工作拧螺丝,虽然工作时我们都在使用基本的 sql,但是不好意思,面试 90% 都在问原理,例如索引,锁,日志,引擎啊,为了让大家在学习的时候有一个重点,我觉得如果掌握了如下知识,mysql 面试绝对会成为你的加分项:

1、一条 sql 语句是如何执行的?也就是说,从客户端执行了一条 sql 命令,服务端会进行哪些处理?(例如验证身份,是否启用缓存啥的)。

2、索引相关:索引是如何实现的?多种引擎的实现区别?聚族索引,非聚族索引,二级索引,唯一索引、最左匹配原则等等(非常重要)。

3、事务相关:例如事务的隔离是如何实现的?事务是如何保证原子性?不同的事务看到的数据怎么就不一样了?难道每个事务都拷贝一份视图?MVCC 的实现原理(重要)等等。

4、各种锁相关:例如表锁,行锁,间隙锁,共享锁,排他锁。这些锁的出现主要是用来解决哪些问题?(重要)

5、日志相关:redolog,binlog,undolog,这些日志的实现原理,为了解决怎么问题?日志也是非常重要的吧,面试也问的挺多。

6、数据库的主从备份、如何保证数据不丢失、如何保证高可用等等。

7、一些故障排查的命令,例如慢查询,sql 的执行计划,索引统计的刷新等等。

对于 2-4 这四个相关知识,面试被问到的频率是最高的,有时候面试会让你说一说索引,如果你知道的多的话就可以疯狂扯一波了,记得我当时总结了一套扯的模版:

先说从 B 树角度说为啥索引会快-》趁机说一下索引的其他实现方式-〉不同引擎在索引实现上的不同-》系统是如果判断是否要使用索引的-〉明明加了索引却不走索引?

只有你对各种数据结构和索引原理都懂,你才能扯的起来,对于事物和锁也是,当时面试官问了我事务是如何保证一致性的,刚好我研究过 ,redolog,binlog,undolog 这些日志,然后和面试官扯了好久。

好吧,说了这么多,其实我就是想说,你一定要对以上的知识知其所以然,不过 mysql 不像算法这些需要学习很多,所以在学习顺序方面,没啥好介绍的,按照书籍的顺序来学习即可。下面我主要给大家推荐一本看过的书以及一份贼棒的专栏,如果你把这两个都学了,在面试时基本对答如流

到此这篇数据库要怎么学(数据库从哪里开始学)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 数据库怎么创建dblink(数据库怎么创建视图)2024-12-27 18:00:10
  • 外文原文数据库(外文数据库wos)2024-12-27 18:00:10
  • 微服务配置中心选型(微服务 配置中心 数据库)2024-12-27 18:00:10
  • 达梦数据库端口默认(达梦数据库开放端口)2024-12-27 18:00:10
  • bs4解析器有哪些(bs4数据解析)2024-12-27 18:00:10
  • mongodb数据库的优势(mongodb数据库基本操作)2024-12-27 18:00:10
  • 自动驾驶 数据采集(自动驾驶数据采集员)2024-12-27 18:00:10
  • 数据库教程视频下载(数据库教程视频下载安装)2024-12-27 18:00:10
  • 大数据技术是学什么的大专(大数据技术专业学什么科目)2024-12-27 18:00:10
  • goldendb数据库语法(golden 数据库)2024-12-27 18:00:10
  • 全屏图片