零基础如何自学MySQL数据库?

[复制链接]
查看3943 | 回复0 | 2022-3-29 01:37:36 | 显示全部楼层 |阅读模式
先给出我的核心观点:学习,无论你是学什么,也无论你有没有基础。思考永远是第一位的,有些知识你没接触过不要紧,用不着害怕,也没必要害怕。重要的是一秒钟也不要停止思考,问题要想透彻,正所谓磨刀不误砍柴工。尤其是作为工程师,要有打破砂锅问到底的精神,否则你怎么学都没用。
- h' c3 f/ m$ _% K! k' X: ^9 Y$ c首先概览下mysql的知识体系:
7 T8 B! [/ y; _4 B7 X  T% U  r# R# ?( E, g. `1 B
基础:
6 O$ G" T: B3 N% [. J1 U7 p& a, f

    . {5 k& v7 x: z
  • sql语句
    7 G9 {9 x; K. W. B5 d
  • 表结构设计
    ! N" j4 f" N; @3 K/ X* O" P' k3 L
调优:
( f7 N4 j( u* J* E7 ^- X
    - o, f3 p; k; r' D
  • 索引、慢查询优化! g' a% c  S! j9 r
  • 配置参数调优
    , V  b- y6 x' w+ O; K: T# X7 I
核心原理:
! T. ^; b. T6 [) b* [: \; K1 r

    3 b' n) i- U5 p1 d- {7 ^3 T
  • InnoDb存储引擎 (包括隔离级别、事务、锁、缓存池、回滚日志等等)5 j& @0 @: {! _, X
  • Mysqld  (包括连接管理、进程管理、查询缓存、查询优化、日志等等)
    3 p4 P- B4 T( d% v8 |: u. @6 R! w
架构与运维:
. j4 l, t, y, ~1 K1 H8 M% z

    % \# l; S9 g4 U8 T! g
  • 用户与权限、安全( m) \1 {$ R" z- \
  • 备份与恢复4 {6 W1 T) o) X+ R1 j! D: x4 C
  • 日志
    - }- V0 U6 c" F1 k  q
  • 分布式与高可用# A! B, I: T1 Y+ L* F! v( ^0 [7 Q
对于零基础的童鞋:) _" P! V( y9 a% [1 |  H

* s4 f: i2 A& ?! F6 Q- ^& V+ B+ s
& `, Y+ U$ z# t6 ~9 m/ N6 v 零基础如何自学MySQL数据库?-1.jpg
' @8 p1 [" K8 g1 C首先,学习基本的SQL语法。完成这个后,你就可以编写SQL语句了。
# k/ \( {# P; _0 y7 u这一步推荐:W3Schools的 SQL 教程。
, o+ i2 z4 ?$ t$ a" o9 s' M其次,学习数据库的主要功能和使用方法,比如用户相关或者权限相关等等。
3 p* ^5 r  Y2 P2 v+ N" y" H我推荐两本书:5 q2 ]; {( Q5 U8 b% S8 [3 {! j
一、《MySQL必知必会》 这本书讲的非常全,从基本概念,到查询到插入新建表,用户的管理,都有具体的例子,非常适合没有任何基础的同学来学习Mysql,总之这本书学习的方法就是:1、十分钟了解下数据库的基本概念 2、找到练手的数据库 3、对照着上面的内容去敲。本书里也有大量的内容是讲sql的,可以结合w3c的sql教程一起,有取舍地看。1 b: G5 W" D4 {7 g! O
二、《数据库系统概念》这本书是dba必看的。
( v, [" m6 [" S3 J4 j9 m; W看完这些并且实践+思考之后,可以算入门了。
" v0 C( B8 m* q( I7 ~$ G# u接下来对于希望深入学习的童鞋
2 k1 O; S& I) Z& ~% r" y" l5 i" N: j" |% W
我推荐几本书(很多大神都这么推荐),《高性能MySQL(第3版)》、 《MySQL技术内幕(第4版)》,《MySQL技术内幕 InnoDB存储引擎》,《深入理解MySQL》还有Mysql的官网。读完这些东西,再加些丰富的经验,理论上来讲就具备DBA的水平了。
+ F# Y/ q. L' ~  Q十分推荐阅读Planet MySQL上汇总的博客,特别是Percona's MySQL & InnoDB performance and scalability blog.( D6 B0 j, U; A( Q- A

0 s4 j6 Q8 |5 \0 d# i但是,正如我开头所言的。面对问题的时候一定要积极思考!
4 u1 \8 x' V% _3 W5 b: ^比如:5 H3 T% _9 y1 g% b# d! d! V7 u, u. e
我问你,面对一个并发量比较高的场景,如何配置mysql的连接数?
! X3 G. y0 M& V/ j! ]你可能会回答:“哦,就是调高max_connection的数值吧。”# Y9 Z* i. `4 I8 b( \( i# \/ W
那,你有没有思考过调到多少是最合适的呢?为什么这样设置就最合适呢?1 L3 i% w! r8 y
也许你会回答:“恩我知道,可以看系统之前的max_used_connection的数值,然后来设置。也可以调高back_log的值。”
! R2 p0 P3 f& q* Y9 q# g' P那你有没有思考过,max_connection连接数太高会有什么不好的影响呢?back_log设置的太高有什么不好的地方呢?max_connect的上限其实是取决于mysql能获得的文件描述符的数量,也就是说你就算设置成10000,最后也是没用的,系统会根据机器的情况自动调低。
. x8 x$ J+ X1 B' i4 ^2 B也许你会回答:“恩我知道,设置太高,会有系统开销...”# \0 y3 |* Z: u: t
那你有没有思考过,这些开销具体是什么呢?是什么工作导致了需要这些内存开销?3 Q! g2 O: M% }: U
也许你还会回答,在连接创建的时候,会立刻为它分配连接缓冲区以及查询缓冲区,这些都会吃内存。  q& C6 A: p2 o( K2 f( A( G
那你有没有思考过,占据的资源具体是多少呢?取决于哪些因素呢?' r! ]) s) q, A* p. R& k8 ?4 ?5 m

" c; w% Q$ d; O5 a% r好了,我们先结束这个问题。回到知乎的问题上来,其实我说了这么多,就是表达要如何自学mysql。
8 P1 I/ q4 G) P% y
2 E8 i0 W6 b7 J9 h+ x# U5 Y所以的所以,你必须不断思考,才能在工作中面对具体场景的时候,非常淡定地推断:“哦,一定是这里出了问题。应该怎么怎么做。”
& _+ t3 d8 e% ?面对问题,拿出打破砂锅问到底的精神,先思考一番,给出自己的假设,不要着急地去找度娘,谷歌。思考过后,带着你的推断或者答案,大胆地去搜索吧!去看看别人的见解,去看看官方的描述!
2 q' h9 b4 D! i" B) {+ Q! @这才是一个工程师应有的态度。3 F! D8 N1 F/ K7 l$ p5 T
. k2 q: O8 w. d6 K5 Q. [
最后我想给出一些有价值的学习资料。可以省去一些时间。
+ y# F8 @7 @8 a1 h9 B; i& V-电子书:
: _0 m, w0 W7 X% l5 L
0 C; g. \' c" j" M/ X  C我认为多看书还是有好处的。有些书值得反复看许多遍,有时候只看一遍无法深刻理解吸收,思考也不够充分。0 _1 U  ?8 \( b" {( d& a% m
电子书下载传送门
1 D  o% p* H0 _

    ) m' Y: ?# A  A
  • 《mysql必知必会》
    5 m( e: c( ~' o  [: ^; Y2 ^6 K
  • 《高性能mysql第三版》
    8 W+ f/ p" y9 y: H9 l3 t
  • 《数据库系统概念》- t& l+ U, `% S# N7 N  X
  • 《深入理解MySQL》
    6 i$ g' K; U: s! L7 ]
  • 《MySQL性能调优与架构设计--全册》《SQL Antipatterns》4 W! O7 |1 E; Y4 Z* x7 j
  • 《MySQL技术内幕  InnoDB存储引擎》% d, m, }; O6 i$ c  k% M0 M8 k/ N
-学习mysql的网站:
: {5 F) ]* T6 q! V' W1 O; T- o4 e* G
MySQL Tutorial - Learn MySQL Fast, Easy and Fun.+ _* m) F* h+ }1 ?
可以快速,简单和有趣的学习MySQL。以简单易懂的方式为您提供完整的MySQL教程。每个教程都有SQL脚本和可用屏幕截图的实际示例。
& d& i# F; X6 q) B! smysql学习资料 | mysql深入学习笔记 深度笔记0 p) g6 O6 r1 |9 F& ^. E4 e$ F
有很多mysql的资料可以看,还可以看网友做的学习笔记。
2 J1 T5 a; ?" o4 B/ A8 j) v- l. T% ^W3Schools SQL 教程# e7 L& S2 N& |2 j& |5 C3 d! L* y
可以学习基础的sql语句; ?0 m9 V, D7 O# g! z% ^" h6 b- U
-阅读官方手册
, m, l9 }' t- \. B5 Z0 R- M6 [% N2 c3 ~3 s, H2 ?
无论英文好不好,看英文手册的能力是一定要有,也一定要培养的。" W# p" Y! W5 g0 B& u
mysql官方手册:14 The InnoDB Storage Engine6 Q5 B4 U, G4 `' t* Q& g: V
. V6 m, p% X7 v1 d8 r0 i
-大牛的博客- y; `- P7 Q/ D- r2 f" O0 t: K4 J
& @! e$ w' ]; x! L7 l, u) p, f. |
领域专家的博客是十分具有学习价值的,下面列举几个比较好的:; b: P& v+ J. q0 o9 L
何登成的技术博客 何登成的技术博客# B* @5 G) z3 c  W( V
淘宝丁奇 追风刀·丁奇 - ITeye技术网站2 h& `/ V& u" u5 ?( l
周振兴@淘宝 花名:苏普 一个故事@MySQL DBA
+ Z+ R% |* {0 ~; Q" F2 A阿里云数据库高级专家彭立勋为 MariaDB Foundation 正式成员,负责全球Replication模块相关补丁的Review。彭立勋也成为首位被MariaDB基金会引入的中国程序员。P.Linux Laboratory
/ A8 n( j2 g: I+ F6 y! I- Z# WPlanet MySQL
$ x. ?+ L! |3 ^7 w" |9 ?/ v, }+ ]
/ z+ z! Q5 B  M: e' `0 G+ `" C! E最后就是,要多用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

203

金钱

0

收听

0

听众
性别
保密

新手上路

金钱
203 元